Was ist HTTP (Hypertext Transfer Protocol)?

Protokoll der Anwendungsschicht, mit dem unter anderem Webbrowser und Webserver HTML, Bilder und Daten austauschen. Der Client sendet eine Anfrage aus Methode, URL, Headern und Body, der Server gibt eine Antwort aus Statuscode, Headern und Body zurück. Als Protokoll ist HTTP zustandslos; Zustände wie eine Anmeldung werden etwa mit Cookies gehalten. HTTP/1.1 verwendet ein Textformat und persistente Verbindungen, HTTP/2 multiplext mehrere Streams über eine TCP-Verbindung, und HTTP/3 verwendet QUIC über UDP. Mit TLS geschütztes HTTP heißt HTTPS.

Japanische Bezeichnung: HTTP

„HTTP (Hypertext Transfer Protocol)“ kommt in 14 Übungsfragen aus 2 Themen vor, z. B. Grundlagen der Webtechnologien, Grundlagen der Computernetzwerke.

Fachgebiet: Grundlagen der Webtechnologien

Aufbau von Anfragen und Antworten

Eine Anfrage besteht in dieser Reihenfolge aus einer Anfragezeile wie „GET /index.html HTTP/1.1“, Headern wie Host und Accept, einer Leerzeile und dem Body. Eine Antwort besteht aus einer Statuszeile wie „HTTP/1.1 200 OK“, Headern wie Content-Type und Cache-Control und dem Body. Header haben die Form „Name: Wert“ und übermitteln etwa die Art des Bodys, den Umgang mit Caches, Authentifizierungsdaten und das Komprimierungsverfahren.

Unterschiede zwischen den Versionen

Bei HTTP/1.1 sind persistente Verbindungen, die eine TCP-Verbindung wiederverwenden, der Standard, doch über eine Verbindung werden die Antworten der Reihe nach einzeln empfangen. HTTP/2 zerlegt Nachrichten in binäre Frames, multiplext mehrere Anfragen und Antworten über eine Verbindung und komprimiert auch die Header. HTTP/3 verwendet als Transport QUIC über UDP; das verringert das Problem, dass ein Paketverlust auch unbeteiligte Streams anhält, und senkt die Zahl der Umläufe für den Verbindungsaufbau.

Zustandslosigkeit und Zustandsverwaltung

HTTP ist ein zustandsloses Protokoll, das jede Anfrage unabhängig behandelt. Da sich der Server frühere Anfragen nicht merken muss, lässt sich die Last leicht auf viele Server verteilen. Zustände wie eine Anmeldung hält die Anwendung selbst, etwa indem eine vom Server ausgegebene Sitzungs-ID per Cookie übergeben oder ein signierter Wert im Header Authorization gesendet wird.

Jetzt üben: Fragen zu HTTP (Hypertext Transfer Protocol)

Was wird durch HTTPS (durch TLS geschütztes HTTP) geschützt?

  1. ADass der Betreiber der aufgerufenen Website eine vertrauenswürdige Person oder Organisation ohne böse Absicht ist
  2. BDass weder die Tatsache der Kommunikation noch die IP-Adresse des aufgerufenen Servers unterwegs sichtbar ist
  3. CDass der Inhalt unterwegs weder mitgelesen noch verändert werden kann und dass der aufgerufene Server der rechtmäßige Inhaber des Domainnamens im Zertifikat ist
Antwort und Erläuterung anzeigen

Antwort: C. Dass der Inhalt unterwegs weder mitgelesen noch verändert werden kann und dass der aufgerufene Server der rechtmäßige Inhaber des Domainnamens im Zertifikat ist

TLS bietet dreierlei: Verschlüsselung der Kommunikation (Vertraulichkeit), Erkennung von Manipulationen (Integrität) und Authentifizierung des Servers. Der Server legt ein Zertifikat vor, und der Browser prüft es, indem er die Signaturen bis zu einer vertrauenswürdigen Zertifizierungsstelle (CA) zurückverfolgt, und vergleicht es mit dem Domainnamen der URL. Damit ist jedoch nur belegt, dass man mit dem Inhaber dieses Domainnamens kommuniziert; ob der Betreiber der Website redlich ist, sagt es nicht. Auch eine betrügerische Website kann ein Zertifikat für ihre eigene Domain erhalten. Außerdem wird der IP-Header nicht verschlüsselt, sodass unterwegs sichtbar ist, mit welcher IP-Adresse wann und wie viel kommuniziert wird.

Welche Kombination nennt die Elemente der ersten Zeile (der Anfragezeile) einer HTTP/1.1-Anfrage richtig?

  1. AMethode, Ziel der Anfrage (etwa ein Pfad), HTTP-Version
  2. BHTTP-Version, Statuscode, kurze Begründungsphrase
  3. CQuell-IP-Adresse, Zielportnummer, Methode
Antwort und Erläuterung anzeigen

Antwort: A. Methode, Ziel der Anfrage (etwa ein Pfad), HTTP-Version

Eine HTTP-Anfrage besteht in dieser Reihenfolge aus der Anfragezeile, den Headern (ein „Name: Wert“ pro Zeile), einer Leerzeile und dem Body. „GET /docs/index.html HTTP/1.1“ ist zum Beispiel eine Zeile, die mit der Methode GET /docs/index.html anfordert. Bei HTTP/1.1 muss außerdem immer der Host-Header gesendet werden, damit der Server erkennen kann, an welche Website sich eine Anfrage richtet, auch wenn mehrere Websites unter derselben IP-Adresse betrieben werden. Die erste Zeile der Antwort ist die Statuszeile; sie enthält wie in „HTTP/1.1 200 OK“ die Version, den Statuscode und die Begründungsphrase (Reason Phrase).

Häufige Fragen

Was ist der Unterschied zwischen HTTP und HTTPS?

HTTPS verschlüsselt den HTTP-Austausch mit TLS und ergänzt die Erkennung von Manipulationen und die Authentifizierung des Servers. Anfragen und Antworten haben dieselbe Form wie bei HTTP; die Standardportnummern sind 80 für HTTP und 443 für HTTPS. Websites verwenden im Allgemeinen HTTPS, um Passwörter und Cookies zu schützen.

Wann verwendet man GET und wann POST?

GET ist die Methode zum Abrufen einer Ressource. Sie gilt als „sicher“, weil sie den Zustand des Servers nicht ändert, und Browser und Caches senden sie unter Umständen wiederholt oder speichern das Ergebnis. POST verwendet man, wenn der Server etwas verarbeiten oder Daten erfassen soll, etwa bei einer Bestellung oder einem Beitrag. Die Query einer GET-Anfrage steht in der URL und bleibt in Zugriffsprotokollen und im Browserverlauf erhalten; geheime Informationen wie Passwörter gehören daher nicht hinein.

„HTTP (Hypertext Transfer Protocol)“ in den Erläuterungen

Fragen mit „HTTP (Hypertext Transfer Protocol)“ (14)

  1. Was wird durch HTTPS (durch TLS geschütztes HTTP) geschützt?
  2. Welche Kombination nennt die Elemente der ersten Zeile (der Anfragezeile) einer HTTP/1.1-Anfrage richtig?
  3. Welche Zuordnung eines Statuscodes zu seiner Bedeutung ist bei HTTP richtig?
  4. Welche Aussage über HTTP/2 und HTTP/3 ist richtig?
  5. HTTP ist ein zustandsloses Protokoll. Welche Aussage darüber, was das bedeutet, und über den üblichen Weg, wie eine Website einen Nutzer angemeldet hält, ist richtig?
  6. Der Server eines Händlers soll sofort erfahren, wenn bei einem Online-Zahlungsdienst eine Zahlung abgeschlossen wurde. Welche Aussage über das Verfahren, bei dem der Zahlungsdienst eine Benachrichtigung per HTTP (Methode POST) an eine vorab vom Händler registrierte URL sendet (Webhook), ist richtig?
  7. 1,5 MB Textdaten werden mit gzip auf ein Drittel der Größe komprimiert und gesendet. Die Bandbreite beträgt 10 Mbit/s und die RTT 100 ms; bevor das Senden der Daten beginnt, brauchen TCP-Verbindungsaufbau, TLS-Handshake und HTTP-Anfrage zusammen drei Umläufe. Es gilt 1 MB = 10^6 Byte; die Zeit für Komprimierung und Dekomprimierung, Header sowie Wartezeiten durch die Überlastkontrolle von TCP werden vernachlässigt. Welcher Wert liegt der Zeit bis zum vollständigen Empfang der Daten am nächsten?
  8. Zu welcher Schicht des vierschichtigen TCP/IP-Modells gehören TCP und UDP?
  9. Welche Beschreibung von UDP ist richtig?
  10. Ein Client baut zu einem Webserver mit einer Umlaufzeit (RTT) von 100 ms eine neue HTTPS-Verbindung auf (TLS 1.3 über TCP). Wie lange dauert es ungefähr, bis die Antwort auf die erste Anfrage einzutreffen beginnt? Die DNS-Namensauflösung ist bereits erledigt; Verarbeitungszeit des Servers und Übertragungszeit der Daten werden vernachlässigt.
  11. Welche Zuordnung von Protokollen zu den Standardportnummern ihrer Server ist richtig?
  12. Von einem Webserver mit einer Umlaufzeit (RTT) von 40 ms werden eine HTML-Datei und die vier darin referenzierten Bilder nacheinander einzeln abgerufen. Der Aufbau einer TCP-Verbindung dauert einen Umlauf, jede Anfrage mit Antwort ebenfalls einen Umlauf; Übertragungszeit der Daten, Verarbeitungszeit des Servers, TLS und Verbindungsabbau werden nicht berücksichtigt. Wie groß ist der Zeitunterschied zwischen einer neuen TCP-Verbindung für jedes Objekt und der Wiederverwendung einer einzigen TCP-Verbindung (persistente Verbindung)?
  13. Eine Chat-App soll neue Nachrichten sofort vom Server an den Browser zustellen. Welche Aussage über WebSocket ist richtig?
  14. Ein Websystem wird in drei Schichten aufgebaut: Webserver, Anwendungsserver und Datenbankserver. Welche Verarbeitung übernimmt der Anwendungsserver hauptsächlich?

Verwandte Begriffe

TLS (Transport Layer Security) DNS (Domain Name System) HTTP-Statuscode Cookie (HTTP-Cookie) OSI-Referenzmodell Drei-Wege-Handschlag (Three-Way Handshake) Portnummer SSH WebSocket CORS (Cross-Origin Resource Sharing)

Zur Glossarübersicht