Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| schulung:http [2021/12/06 21:48] – [Aber wie sieht ein wohldefinierter Request aus?] Thomas | schulung:http [2022/01/31 15:09] (aktuell) – [Was macht es dann zu einem Protokoll?] Thomas | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== HTTP ====== | ====== HTTP ====== | ||
| + | {{gallery> | ||
| - | Nachdem jetzt klar ist, wie grundsätzlich | + | Nachdem jetzt klar ist, wie grundsätzlich zwischen zwei Rechnern // |
| {{ : | {{ : | ||
| Dafür müssen sie sich auf eine gemeinsame Sprache verabreden, das ist das | Dafür müssen sie sich auf eine gemeinsame Sprache verabreden, das ist das | ||
| Zeile 10: | Zeile 11: | ||
| Der Name scheint aus einer anderen Zeit zu stammen. Tatsächlich ist HTTP gar nicht so alt wie das Internet: | Der Name scheint aus einer anderen Zeit zu stammen. Tatsächlich ist HTTP gar nicht so alt wie das Internet: | ||
| - | * RFC 1945 HTTP/1.0 (1996) | + | * [[https:// |
| * RFC 2616 HTTP/1.1 (1999) | * RFC 2616 HTTP/1.1 (1999) | ||
| * RFC 7540 HTTP/2 (2015) | * RFC 7540 HTTP/2 (2015) | ||
| Zeile 20: | Zeile 21: | ||
| Es geht nicht nur um Text im landläufigen Sinn. Der Text enthält selbst noch Metadaten, die Formatierung und Textsatz ermöglichen und (ganz wichtig) es sind Elemente mit Interaktion möglich. Zuerst nur //Links//, die zu einem anderen Dokument verweisen, aber auch Formularelemente o.ä.. | Es geht nicht nur um Text im landläufigen Sinn. Der Text enthält selbst noch Metadaten, die Formatierung und Textsatz ermöglichen und (ganz wichtig) es sind Elemente mit Interaktion möglich. Zuerst nur //Links//, die zu einem anderen Dokument verweisen, aber auch Formularelemente o.ä.. | ||
| - | Der Name steht für eine Gattung | + | Der Name steht für eine Gattung |
| **H**yper**t**ext **M**arkup **L**anguage | **H**yper**t**ext **M**arkup **L**anguage | ||
| Zeile 38: | Zeile 39: | ||
| - Der Browser (ein TCP-Client) stellt dem Server eine wohldefinierte Anfrage. | - Der Browser (ein TCP-Client) stellt dem Server eine wohldefinierte Anfrage. | ||
| - | - Der Server antwortet auf demselben TCP-Kommuniationskanal exakt auf diese Anfrage mit einem Status-Code (OK oder irgend ein Fehler) | + | - Der Server antwortet auf demselben TCP-Kommuniationskanal exakt auf diese Anfrage mit einem Status-Code (OK oder irgend ein Fehler) und in einem Rutsch mit dem angefragten Inhalt. |
| - Danach wird der Kommunikationskanal wieder abgebaut (so war das zumindest ganz zu Beginn, mittlerweile wartet der Server auf der einmal aufgebauten TCP-Verbindung, | - Danach wird der Kommunikationskanal wieder abgebaut (so war das zumindest ganz zu Beginn, mittlerweile wartet der Server auf der einmal aufgebauten TCP-Verbindung, | ||
| Zeile 44: | Zeile 45: | ||
| Ganz so einfach ist das heutzutage alles auch nicht mehr. Aber ein minimalistischer Webserver könnte genau so funktionieren. So ein Server ist beispielsweise ein sogenannter " | Ganz so einfach ist das heutzutage alles auch nicht mehr. Aber ein minimalistischer Webserver könnte genau so funktionieren. So ein Server ist beispielsweise ein sogenannter " | ||
| + | |||
| + | > **Erinnerung: | ||
| + | {{: | ||
| + | |||
| ===== Aber wie sieht ein wohldefinierter Request aus? ===== | ===== Aber wie sieht ein wohldefinierter Request aus? ===== | ||
| Zeile 63: | Zeile 68: | ||
| Je nach HTTP Version können zwischen der ersten Zeile und der Leerzeile noch weitere sogenannte HTTP-Header-Zeilen eingebaut sein. Die sind optional, erleichtern dem Server aber eventuell etwas die Arbeit. Bei HTTP/1.0 wären das u.a.: | Je nach HTTP Version können zwischen der ersten Zeile und der Leerzeile noch weitere sogenannte HTTP-Header-Zeilen eingebaut sein. Die sind optional, erleichtern dem Server aber eventuell etwas die Arbeit. Bei HTTP/1.0 wären das u.a.: | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| Zeile 70: | Zeile 75: | ||
| < | < | ||
| - | Server: www.qgelm.de | + | Host: www.qgelm.de |
| </ | </ | ||
| zum Beispiel. | zum Beispiel. | ||
| Zeile 81: | Zeile 86: | ||
| * Bis hier war alles in einer Zeile. Die nächsten Zeilen können dann weitere sogenannte // | * Bis hier war alles in einer Zeile. Die nächsten Zeilen können dann weitere sogenannte // | ||
| * Die eigentlich übermittelte Ressource folgt dann nach einer Leerzeile und wird einfach Byte für Byte angehängt. | * Die eigentlich übermittelte Ressource folgt dann nach einer Leerzeile und wird einfach Byte für Byte angehängt. | ||
| + | |||
| + | Der RFC für Version 1.0 definiert den übermittelten Statuscode übrigens so: | ||
| + | |||
| + | < | ||
| + | Status-Code | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | | " | ||
| + | </ | ||
| + | |||
| + | Wenn man nicht (unbemerkt) meistens den Status '' | ||
| Kommen wir nach der Vorrede zu einem einfachen [[schulung: | Kommen wir nach der Vorrede zu einem einfachen [[schulung: | ||