WikiDer > Hypertext Transfer Protocol
Hypertext Transfer Protocol (HTTP) ist der Protokoll für die Kommunikation zwischen einem Web-Client (normalerweise a Webbrowser oder eine App) und a Webserver. Dieses Protokoll wird nicht nur viel verwendet weltweites Netz verwendet, sondern auch in lokalen Netzwerken (wir sprechen von a Intranet).
HTTP zeichnet auf, welche Fragen (der englische Begriff dafür ist Requests) ein Client einem Server stellen kann und welche Antworten (der englische Begriff ist Responses) ein Webserver zurückgeben kann. Jede Frage enthält a URL die sich auf eine Webkomponente oder ein statisches Objekt wie eine Webseite oder ein Bild bezieht.
HTTP-Anfragen
Ein HTTP-Request besteht aus dem Request-Typ, der URL, den Header-Feldern (Header-Feldern) und eventuell etwas Inhalt. Eine Übersicht über die HTTP-Request-Methoden:
- GET – Ruft das durch die URL angegebene Dokument ab.
- HEAD – Nur die Kopfzeilen des abzurufenden Dokuments empfangen.
- POST – Daten an den Server senden.
- PUT – Ersetzen Sie das Dokument auf dem Server durch die gesendeten Daten.
- LÖSCHEN – Löschen Sie das Dokument.
- TRACE – Gibt die Anfrage zurück, damit ein Client sehen kann, welche Änderungen oder Ergänzungen von Zwischenstationen vorgenommen wurden.
- OPTIONEN – Fordern Sie die Optionen auf dieser Ebene vom Server an.
- CONNECT – Ersetzt die Verbindung durch einen transparenten TCP/IP-Tunnel, um beispielsweise SSL-verschlüsselte Kommunikation (HTTPS) über einen unverschlüsselten HTTP-Proxy zu unterstützen.
- PATCH – Teilweise Änderung des Dokuments (einen Teil durch die übertragenen Daten ersetzen).
Die wichtigsten Header-Felder sind:
- Inhaltslänge: Gibt die Länge des Inhalts an.
- Standort: Wenn der Server den Webbrowser auf eine andere Seite umleitet, wird der erforderliche Pfad hinzugefügt.
- Server: Enthält eine kurze Beschreibung der Serversoftware (z. B. "Apache/2.2.9 (Win32) PHP/5.2.6").
- User-Agent: Liefert Informationen über den Anforderer. Dies ist normalerweise ein Webbrowser.
- Datum: Das Datum und die Uhrzeit, zu der das Dokument gesendet wurde.
- Host*: Da das Paket an a . gesendet wird IP Adresse gesendet wird, weiß der Server nicht, auf welcher Domain man surft. In HTTP 1.1 ist es zwingend erforderlich, die Domain mit diesem Header zu teilen.
* eingeführt in HTTP 1.1[1]
Eine vollständige Anfrage einschließlich der Header-Felder für HTTP 1.1 könnte so aussehen:
GET /wiki/Home HTTP/1.1Host: en.wikipedia.orgVerbindung: closeUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3Akzeptieren: text/xml,text/html,text/plain,image/png,image/jpeg,image/gifAccept-Charset: ISO-8859-1,utf-8
HTTP-Antworten
Eine HTTP-Antwort besteht aus einem Ergebniscode, Header-Feldern und einem Body (der Nachricht). Der Ergebniscode besteht aus mindestens drei Ziffern. Die erste Zahl ist die wichtigste:
- 1xx: eine Benachrichtigung vom Webserver, auf die weitere Daten folgen
- 2xx: Eine Nachricht vom Server, dass die angeforderte Aktion erfolgreich abgeschlossen wurde
- 3xx: eine "Weiterleitung" an einen anderen Ort, aus welchem Grund auch immer
- 4xx: Eine vom Client verursachte Fehlermeldung, z. B. falsche Eingabe einer URL
- 5xx: Eine vom Server verursachte Fehlermeldung, z. B. ein Fehler in a CGIA-Skript
- 6xx: a Proxy-Fehler ist vorgefallen
Die gängigsten Ergebniscodes sind:
- 200 OK – Das angeforderte Dokument wurde erfolgreich angefordert.
- 304 Nicht modifiziert – relativ zu die Version in der Zwischenspeicher die Seite hat sich nicht geändert.
- 400 Ungültige Anfrage – Der Benutzer hat einen Fehler in der Anfrage gemacht, der die Verarbeitung verhindert hat.
- 403 Verboten – Das angeforderte Dokument darf nicht angefordert werden.
- 404 Not Found – Das angeforderte Dokument existiert nicht.
- 405 Method Not Allowed – Die verwendete Anfragemethode ist nicht zulässig.
- 410 Gone – Das angeforderte Dokument existierte, ist aber nicht mehr verfügbar. Ähnlich Fehlercode 404.
- 451 Aus rechtlichen Gründen nicht verfügbar - eine Website kann aus rechtlichen Gründen nicht angezeigt werden
- 500 Internal Server Error – Der Webserver konnte die angeforderte Aktion nicht ausführen.
- 503 Dienst vorübergehend nicht verfügbar – Der Webserver wird vorübergehend gewartet.
Eine Antwort auf die obige Anfrage könnte dann so aussehen:
HTTP/1.1 200 OKDatum: Do, 08.04.2004 18:24:33 GMTServer: Apache/1.3.29 (Unix) PHP/4.3.4X-Powered-By: PHP/4.3.4Content-Language: nlContent-Type: text/ html; charset=iso-8859-1X-Cache: MISS from wikipedia.orgConnection: closeContent-Type: text/htmlContent-Length: 49
<html><head></head><body></body></html>
Geschichte
Die ursprüngliche Version von HTTP ist als HTTP 1.0 bekannt. Anfangs funktionierte dieses Protokoll gut, aber mit der Popularitätsexplosion der Internet identifizierten auch eine Reihe von Mängeln in diesem Protokoll. Diese wurden in der nächsten Version, HTTP 1.1, behoben. Ab etwa 1997 hat sich der Standard im World Wide Web daher von HTTP 1.0 auf HTTP 1.1 verschoben.
Eine der Haupteinschränkungen von HTTP 1.0 war die auf allen IP Adresse nur 1 Domain untergebracht werden könnte. Aufgrund der enormen Zunahme der Zahl der WWW-Domains hätte dies bald zu einer Knappheit an IP-Adressen geführt. HTTP 1.1 unterstützt daher das Hosten von mehr als 1 Domain auf derselben IP-Adresse. Weitere wichtige Ergänzungen in HTTP 1.1, die hauptsächlich darauf abzielen, die Antwortgeschwindigkeit zu erhöhen, sind:
- Caching-Unterstützung
- nicht mehr unbedingt nach jeder Antwort trennen (sog. dauernde Verbindung), wie es in HTTP 1.0 passiert ist
- die Möglichkeit, (dynamisch generierte) Seiten in Teilen zu senden. Dies ermöglicht es, den ersten Teil zu senden, bevor die gesamte Seite generiert wurde, auch ohne zu wissen, wie lang die Seite letztendlich sein wird.
Technische Details von HTTP sind in mehreren beschrieben RFCs. HTTP-Version 1.0 befindet sich im RFC mit der Nummer 1945. Version 1.1 des Protokolls befindet sich im RFC mit der Nummer 2616.
HTTP/2
Im Jahr 2012 begannen die Arbeiten am Nachfolger von HTTP 1.1, genannt HTTP/2: IETF gründete die Arbeitsgruppe HTTP-Arbeitsgruppe auf.[2] Es war eine Reaktion auf die Entwicklung der SPDYProtokoll als experimentelles Protokoll nach Protokoll entwickelt Google um die Ladezeiten von Webseiten über HTTP 1.1 zu verbessern.
HTTP/2 basiert auf SPDY und bietet gleichzeitig ein hohes Maß an Kompatibilität mit HTTP 1.1. Weitere Vorteile sind eine geringere Latenz (Verzögerung) und andere Geschwindigkeitsverbesserungen. Die größte Änderung ist die Möglichkeit, Multiplexing anzuwenden: mehrere Anfragen können über eine Verbindung gesendet werden. Dies erfordert eine Header-Komprimierung. Die HPACK-Spezifikation spezifiziert die Header-Komprimierung für HTTP/2.[3]
Darüber hinaus verwendet HTTP/2 weniger Verbindungen zwischen Server und Client. HTTP/2 spezifiziert auch eine Möglichkeit, Inhalte vom Server an den Browser zu senden, ohne dass der Client ständig fragen muss, ob neue Inhalte verfügbar sind.
HTTP/2 erfordert keine TLS/SSL-Verschlüsselung, fördert sie aber. Außerdem entscheiden sich bestimmte Softwareanbieter wie Mozilla dafür, HTTP/2 nur mit SSL zu implementieren.[4]
Im Februar 2015 wurde die HTTP2-Spezifikation fertiggestellt.[3] Mitte Mai 2015 wurde die finale Version der Spezifikation als RFC 7540.[5][6]
Siehe auch
Externe Links
- (und) HTTP/1.1-Statuscode-Definitionen
- (und) RFC - Technische Details von HTTP
- (und) Dokumentation HTTP 1.1
- (und) Dokumentation HTTP 2.0
Quellen, Anmerkungen und/oder Verweise
|
| Internetprotokolle laut der TCP/IP-Modemodell | ||||||||
|---|---|---|---|---|---|---|---|---|
|