► Hacking mit Python https://amzn.to/3pxVnmh (*)
► Mein Python-Buch https://amzn.to/3ARMbw8 (*)
► Ethical Hacking mit ChatGPT https://amzn.to/3Qf9mID (*)
Inhalt 📚
Das Hypertext Transfer Protocol (HTTP) wird zum Übertragen von Daten im Internet verwendet. Es basiert auf einem einfachen Frage-Antwort-Modell, bei dem ein Client, wie z. B. ein Webbrowser, eine Anfrage an einen Server sendet, der dann eine Antwort zurückliefert.
Ein HTTP-Request besteht aus einer Anfragemethode (z.B. GET oder POST), einer URL, die die angeforderte Ressource adressiert, die HTTP-Version und optionalen Header-Feldern, die zusätzliche Informationen über die Anfrage liefern. Eine HTTP-Antwort enthält einen Statuscode (z. B. 200 OK oder 404 Not Found), die HTTP-Version und die Antwort-Header, die Informationen über den Server und die übertragenen Daten beinhalten. Der sogenannte Body, der auf die Header folgt, enthält die eigentlichen Daten, wie HTML-Dokumente, Bilder oder andere Medien.
#HTTP #Netzwerk #Protokoll
00:00 | Was ist HTTP?
00:51 | HTTP Request
01:40 | HTTP Response
03:08 | Statuscodes
04:25 | GET
04:38 | POST
05:12 | PUT
05:43 | DELETE
06:01 | HEAD
06:50 | TCP Three Way Handshake
07:12 | Nicht-Persistente HTTP Verbindung
08:23 | Persistente HTTP Verbindung
EQUIPMENT(*)
🎤 Mikrofon https://amzn.to/3N0CHCL
✂️ Schnittprogramm https://amzn.to/3CZ217J
💻 Mein Laptop https://amzn.to/3ikMd5V
🖥️ Bildschirm https://amzn.to/3ig3yN5
SUPPORT
► Patreon https://patreon.com/florian_dalwigk
► Unterstütze mich durch einen Kauf auf Amazon. Für dich entstehen keine Mehrkosten! (*) https://amzn.to/3LgyglY
SOCIAL MEDIA
💡 Website: https://www.florian-dalwigk.de
📱 TikTok: https://www.tiktok.com/@florian.dalwigk
🤳 Instagram: https://www.instagram.com/florian.dalwigk
🐦 Twitter: https://twitter.com/florian_dalwigk
📧 E-Mail: mailto:[email protected]
(*) Bei den Amazon-Links (https.//amzn.to/???????) handelt es sich um Affiliate-Links. Wenn du etwas über diesen Link kaufst, bekomme ich eine kleine Provision. Der Preis ändert sich nicht, wenn du über diesen Link einkaufst. Vielen Dank für deine Unterstützung.
das Hypertext Transfer Protocol wird zum
Übertragen von Daten im Internet
verwendet es basiert auf einem einfachen
frageantwortmodell bei dem ein Client
wie z.B einen Webbrowser eine Anfrage an
einen Server sendet der dann eine
Antwort zurückliefert ein HTTP Request
besteht aus einer anfragemethode z.B get
oder Post einer URL die die angeforderte
Ressource adressiert die httpvion und
optionale headerfelder die zusätzliche
Information über die Anfrage liefern
eine HTTP Antwort enthält einen
Statuscode z.B 200 okay oder 404 Not
Found die HTTP Version und die
antwortheader die Information über den
Server und die übertragenen Daten
beinhalten der sogenannte Body der auf
die Header folgt enthält die
eigentlichen Daten wie HTML Dokumente
Bilder oder andere Medien ein HTTP GET
request könnte beispielsweise so
aussehen die einzelnen Felder haben
dabei folgende Bedeutung das hier ist
die verwendete HTTP Methode GET wird
typischerweise genutzt um Daten von
einem Server anzufordern der vorw Slash
ist der Pfad der angeforderten Ressource
hier kann auch ein längerer Pfad stehen
nicht nur ein Forward Slash das bedeutet
hier dass wir uns im Root Verzeichnis
befinden dieses Feld gibt die Version
des verwendeten HTTP Protokolls an das
hier ist das
Endsystem der User Agent beschreibt die
browserart also z.B ob du Chrome nutzt
Firefox oder irgendein mobilen Browser
mit accept werden die akzeptierten
Dokumente angegeben bei connection kann
angegeben werden ob die Verbindung offen
gehalten oder geschlossen werden soll
die Response also die Antwort vom Server
auf die vorherige Anfrage könnte dann
z.B so aussehen dieses Feld hier gibt
die Version des verwendeten HTTP
Protokolls an das hier ist der
Statuscode und der Text der einen
erfolgreichen request signalisiert 200
ist der Code für eine erfolgreiche
Anfrage und okay ist die Beschreibung
des Statuscodes hier wird der Zeitpunkt
der Auslieferung angegeben der expires
Header gibt an wann der Inhalt als
veraltet betrachtet werden sollte der
Wert -1 wird verwendet um anzugeben dass
der Inhalt sofort als veraltet
betrachtet werden sollte das heißt es
ist kein Caching erlaubt dieser Header
gibt Direktiven für
cachingmechanismen private bedeutet dass
die Antwort spezifisch für einen
Benutzer ist und nicht von einem
gemeinsamen Cash gespeichert werden
sollte das hier bedeutet dass der Inhalt
generell nicht gecasht werden darf der
Content Typ headader gibt den Medientyp
also den sogenannten me type der Daten
in der Antwort an in diesem Fall also
Text und HTML was bedeutet dass es sich
um eine html rource handelt Charset UTF8
gibt das Encoding an der Content
encoding Header zeigt die
übertragungscodierung hier gzip an das
hier ist die serverart dieser Header
gibt die Länge des bys in bites an und
hierbei handelt es sich um den Body also
die eigentlichen Daten die auf die
vorherigen Header Folgen wie bereits
erwähnt arbeitet HTTP mit sogenannten
Statuscodes die Teil der Antwort eines
Servers auf eine Anfrage eines Clients
sind es handelt sich um dreistellige
Zahlen die den Status der Anfrage und
die Art der Antwort angeben die der
Server zurückgibt schauen wir uns mal an
welche statuscodeegruppen es überhaupt
gibt und welche Bedeutung sie haben
Statuscodes mit einer 1 anfangen sind
informell also das kann z.B 102
processing sein Statuscodes die mit
einer 2 beknen signalisieren Erfolg wie
z.B 200 okay Statuscodes die mit einer 3
beginnen deuten eine Umleitung an z.B
der Statuscode 301 der für moved
permanently steht Statuscodes mit einer
4 beschreiben ein kleent Fehler wie z.B
400400 found das heißt der Client ist
für den Fehler verantwortlich z.B weil
er versucht auf eine Ressource
zuzugreifen die es gar nicht gibt und
Statuscodes mit einer fünf beginin
signalisieren Serverfehler wie z.B der
bekannte 500 intern Server Error das
heißt es ist nicht der klein an dem
fehlerschuld sondern der Server es gibt
verschiedene HTTP Methoden über die das
Frage anwortspiel von http läuft diese
werden wir uns nun einmal mit jeweils
einem kleinen Beispiel anschauen die
getmethode wird zum Anfordern von Daten
von einem Server verwendet ein Nutzer
möchte sich die Startseite von
example.com anzeigen dann sendet der
Browser beispielsweise diesen get
request hier an den Server die
postmethode sendet Daten und wird z.B
genutzt um eine Ressource zu erstellen
angenommen ein Nutzer registriert sich
auf der Webseite
www.example.com dann sendet der Browser
einen POST request mit z.B den
Registrierungsinformationen an den
nendpreistrierung der Webseite hier
unten siehst du auch noch mal was der
eigentlich Inhalt dann ist z.B der
Vorname der Nachname und der
Benutzername samt dem Passwort beachte
dass der Endpunkt nicht zwangsläufig
forward/reistrierung sein muss da kann
alles Mögliche stehen die putmethode
aktualisiert eine bestehende Ressource
auf dem Server angenommen der Nutzer Flo
möchte sein Profil auf
www.example.com aktualisieren dann wird
dieser putrequest hier an den Endpunkt
for/benutzerprofil/fow des Servers
gesendet wie gesagt das sind ja auch nur
Beispieldaten wichtig ist dass hier
unten noch einmal angegeben wird wie
jetzt die aktualisierten Daten lauten
auch das Format was hier gewählt wurde
kann unterschiedlich sein mit der delete
Methode wird eine Ressource auf einem
Server gelöscht angenommen der Nutzer
Flo möchte sein Konto auf
www.example.com löschen dann sendet der
Browser beispielsweise diesen delete
request hier an den Endpunkt
for/benutzerprofil for/fow des Servers
die head Methode ist eine weniger häufig
genutzte aber dennoch wichtige Methode
sie funktioniert so ähnlich wie die
getmethode mit dem entscheidenden
Unterschied dass der Server bei einer
head Anfrage kein body in der Antwort
sendet sie wird hauptsächlich verwendet
um Metadaten über eine Ressource zu
erhalten ohne die gesamte Ressource
herunterzuladen angenommen ein Client
möchte Metadaten über eine Bilddatei wie
beispielsweise die Größe den Dateityp
oder den Zeitpunkt der letzten Änderung
erf
ohne die ganze Datei herunterladen zu
müssen die Datei befindet sich unter
for/profiles/flow.jpack dann kann der
Klient z.B diesen head request hier an
den Server senden als Antwort kommt vom
Server dann z.B so etwas hier zurück
hier sind einige Metadaten enthalten um
sicherzustellen dass z.B die Dateien die
ein kleent vom Server abfragt auch
wirklich ankommen wird zu beginnen einer
HTTP Verbindung ein TC threeway
Handshake durchgeführt was das genau ist
habe ich bereits in einem Video erklärt
den Link findest du unten in der
Videobeschreibung bei einer typischen
Internetanwendung besteht eine
andauernde Verbindung zwischen dem
Client und dem Server wenn bei HTTP
jedoch nicht persistente Verbindungen
verwendet werden dann wird für jeden
request eine neue TCP Verbindung
aufgebaut was einen hohen Overhead und
damit verbunden auch einen höheren
Zeitaufwand zum Aufbau der Webseite
bedeutet in diesem nichtpersistenten
Fall wird zuerst über den threeway
Handshake eine TCP Verbindung zum Server
aufgebaut danach wird mit einem get
request z.B die Ressource
index.html angefordert diese wird
ausgeliefert und danach die TCP
Verbindung beendet innerhalb von
index.html findet sich ein Verweis auf
das Bild
flow.png das noch nachgeladen werden
muss da es sich um eine nichtpersistente
Verbindung handelt wird zuerst wieder
bei den threeway Handshake eine neue TCP
Verbindung aufgebaut erst danach wird
mit einem weiteren get request die
Ressource flow.png angefordert und vom
Server ausgeliefert anschließend wird
die TCP Verbindung wieder beendet für
jede weitere Ressource die vom Server
zum Aufbau der Webseite benötigt wird
wird bei der nichtpersistenten
Verbindung eine neue TCP Verbindung
aufgebaut dass dieses Vorgehen sehr
ineffizient ist wenn es sich
beispielsweise um eine Webseite mit sehr
vielen Bilddateien und Verweisen auf
andere Ressourcen handelt leuchtet
schnell ein deshalb gibt es sogenannte
persistente Verbindungen in HTTP mit
persistenten Verbindungen lässt HTTP
nach einem request die TCP Verbindung
für eine gewisse Zeit lang offen sodass
über eine TCP Verbindung mehrere
Ressourcen geladen werden können schauen
wir uns mal an wie jetzt die
Auslieferung von
index.html und das darin eingebettete
flow.png mit einer persistenten
Verbindung erfolgen würde es muss nur
eine TCP Verbindung über den threeway
handcheck aufgebaut werden danach können
die einzelnen Ressourcen also zunächst
ein Mal
index.html und flow.png über diese eine
TCP Verbindung mit entsprechenden get
requests angefordert werden solltest du
weitere Fragen haben kannst du sie gerne
unten in den Kommentaren posten vielen
Dank fürs zusehen und bis zum nächsten
Video