Anatomie einer Anfrage
Lektion 20 von 47 im Kurs Netzwerken mit dem Terminal von Coddy.
Unterhalb von curl ist eine HTTP-Anfrage einfacher Text, der über einen Socket gesendet wird. Sie beginnt mit einer Zeile, die angibt, was du möchtest:
GET /index.html HTTP/1.1Drei Teile: die Methode (welche Art von Operation), der Pfad (welches Element) und die Version. Danach kommen Header, jeweils einer pro Zeile, dann eine Leerzeile und anschließend ein optionaler Body.
Die Leerzeile dient nicht nur der Gestaltung. An ihr erkennt der Server, dass die Header beendet sind und der Body, falls vorhanden, beginnt. Eine Anfrage ohne sie hängt, weil der Server weiterhin darauf wartet, den Rest zu empfangen.
Du kannst eine Anfrage von Hand senden. nc öffnet eine unverfälschte Verbindung, und alles, was du ihm zuführst, wird direkt über die Leitung gesendet:
printf 'GET / HTTP/1.0\r\n\r\n' | nc 127.0.0.1 9110\r\n ist der von HTTP erforderliche Zeilenabschluss, und die doppelte Folge stellt die Leerzeile dar.
Aufgabe
SchwerÜberspringe curl vollständig und sprich selbst HTTP.
- Erstelle
index.html, dasrawenthält - Stelle den Ordner auf Port 9110 bereit
- Sende eine rohe
GET /index.html HTTP/1.0-Anfrage überncund gib nur die erste Zeile der Antwort aus
Diese erste Zeile ist die Statuszeile des Servers. Erwartete Ausgabe:
HTTP/1.0 200 OKDenke an die Leerzeile:
printf 'GET /index.html HTTP/1.0\r\n\r\n'.
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Netzwerken mit dem Terminal
2Namen und DNS
Warum Namen existierenDie Hosts-DateiEinen Namen nachschlagenRecord-TypenRückblick: Namen5HTTP von Hand
Anatomie einer AnfrageAnfragemethodenStatuscodesAntwort-HeaderEine Antwort schreibenRückblick: HTTP-GrundlagenÜbe selbstständig: Terminal-Playground