HTTP steht für Hypertext Transfer Protocol (ein Übertragungsprotokoll), mit dem hauptsächlich Webseiten (Hypertext Dokumente) in einem Webbrowser geladen werden.
Es gibt im Moment drei Versionen von HTTP: 1.0 wurde 1996 veröffentlicht, 1.1 1999, und 2.0 (oft als HTTP/2 geschrieben) erst 16 Jahre später, in 2015. An HTTP/3 wird derzeit gearbeitet.
HTTP ist ein textbasiertes Protokoll, das auf TCP und IP aufbaut. Daher lässt sich HTTP anhand von relativ gut lesbaren Beispielen erklären.
GET /infotext.html HTTP/1.1
Eine einfache HTTP Anfrage (ein Request) sieht mit HTTP/1.1 so aus:
GET /infotext.html HTTP/1.1
Host: www.example.net
Die erste Zeile gibt an, dass das Dokument mit dem Pfad /infotext.html
geladen werden soll. GET
gibt dabei an, dass nur gelesen werden soll (andere Methoden wie POST
sind zum Schreiben da, z.B. beim Abschicken eines Formulars). HTTP/1.1
gibt explizit das Protokoll an.
Die zweite Zeile gibt die Zieladresse explizit an. Diese wird über DNS aufgelöst und in eine IP Adresse übersetzt.
HTTP/1.1 200 OK
Die Antwort könnte dann so aussehen:
HTTP/1.1 200 OK
Content-Length: 219
Content-Language: de
Content-Type: text/html
Connection: close
<html>
<head>
<title>Titel der Webseite</title>
<!-- weitere Kopfinformationen -->
<!-- Kommentare werden im Browser nicht angezeigt. -->
</head>
<body>
<p>Inhalt der Webseite</p>
</body>
</html>
Die erste Zeile gibt wieder das Protokoll sowie einen Status Code an, hier 200 OK
. Bei Fehlern wird hier z.B. 404 Not Found
verwendet.
Die nächsten paar Zeilen liefern Metadaten zum Dokument: Wie lang ist es (Content-Length
), in welcher Sprache (Content-Language
) und in welchem Format (Content-Type
). Connection: close
gibt eine Information über die Netzwerkverbindung, die hier vom Server geschlossen wird, sobald die Antwort beim Browser angekommen ist.
Nach einer Leerzeile kommt dann das eigentliche Dokument, in Form von HTML.
HTTP allein ist textbasiert und unverschlüsselt. Für sichere Verbindungen wird daher HTTPS (auf Basis von SSL oder TLS) verwendet.