Eine kurze Geschichte von HTTP
04. Juli 2017
Veröffentlicht in:
WebentwicklungEin Blick auf das HTTP-Protokoll, das das Netz zusammenhält
Als Angela Merkel vor einiger Zeit das Internet als Neuland für uns alle bezeichnete, geschah das unter offensichtlicher Missachtung der großartigen Leistung einiger der größten Köpfe des ausgehenden zwanzigsten Jahrhunderts. Gut, verglichen mit der Erfindung des Rades oder der Beherrschung des Feuers mag das Internet tatsächlich Neuland sein, liegen seine Anfänge doch erst in den 80er Jahren des 20. Jahrhunderts begründet. Spannt man den Bogen etwas weiter und bezieht das rein US-amerikanische Arpanet als Vorläufer des heutigen Internets mit ein, kann man den Beginn des globalen Netzwerkes etwa auf die Mitte der 1960er Jahre datieren. Ab dieser Zeit wurden Techniken entwickelt und demonstriert, die im Jahr 1969 schließlich in das vom US-Verteidigungsministerium betriebene Arpanet mündeten.
Beeindruckend ist ohne Zweifel der technische Weitblick, mit dem die Pioniere des Internes sich ans Werk machten. Als einer dieser Pioniere darf mit Fug und Recht der britische Physiker und Informatiker Tim Berners-Lee gelten. Viele gehen sogar so weit, ihn als den Vater des Internets zu bezeichnen. Berners-Lee, damals am Schweizer CERN beschäftigt, verfügte über eine Schar nicht zu vernachlässigender Mitstreiter, wie etwa Robert Cailliau, aber es war sein Verdienst, mit der Etablierung eines Computernetzwerkes gleich einige unabdingbare Standards mitzudefinieren. So gehen die Auszeichnungssprache HTML (Hypertext Markup Language) und das Übertragungsprotokoll HTTP (Hypertext Transfer Protocol) fraglos auf Ideen und Initiativen von Tim Berners Lee zurück.
Ohne diese beiden Standards wäre das Internet, wie wir es heute kennen nicht denkbar. Deshalb wird es Zeit, einmal einen Blick auf das Übertragungsprotokoll HTTP zu werfen, mit dessen Hilfe sich Computer vernetzen und dessen aktuelle Version HTTP/2 vor einiger Zeit veröffentlicht wurde.
HTTP 0.9 - Ein rudimentärer Anfang
Der ursprüngliche Vorschlag von Tim Berners-Lee für ein universelles Kommunikationsprotokoll erfolgte mit der Maßgabe der Einfachheit und vor dem Hintergrund eines sich entwickelnden weltweiten Computernetzwerkes. Dabei verfolgte Berners-Lee mit seinem Vorschlag folgende Ziele:
- Funktionalität zur Datenübertragung
- Möglichkeit zur Indexsuche in einem Hypertext-Archiv
- Handling verschiedener Dateiformate
- Ermöglichung einer Kommunikation zwischen Client und Server
Vor dem Hintergrund dieser Designgedanken entwickelte Berners-Lee einen einfachen Prototypen, der einige dieser Anforderungen erfüllen konnte. Dabei wies diese Urversion des Protokolls bereits Standards auf, die noch heute gelten oder als Leitlinie für eine behutsame Fortentwicklung dienen. Hierzu gehören folgende Protokolleigenschaften:
- Die Anfrage eines Clients an den Server besteht aus einer Abfolge von ASCII-Zeichen.
- Die Client-Anfrage wird durch einen Zeilenumbruch abgeschlossen.
- Die Antwort des Servers besteht ebenfalls aus einer Reihe von ASCII-Zeichen.
- Der Server überträgt seine Antwort in der Auszeichnungssprache HTML (Hypertext Markup Language).
- Nach vollendeter Übertragung des HTML-Dokumentes wird die Verbindung zwischen Client und Server beendet.
Diese Version des Internetprotokolls ermöglicht also eine sehr einfache Kommunikation zwischen verschiedenen Computern, die im Prinzip nur aus wenigen Schritten besteht:
- Senden der Verbindungsanfrage
- Verbindungsaufbau
- Senden einer clientseitigen GET-Anforderung
- Versenden der Serverantwort
- Beenden der Verbindung
Tipp: Services wie Apache oder Nginx unterstützen HTTP 0.9 bis heute. Eröffnen Sie spaßeshalber doch noch einmal eine Telnet-Sitzung und besuchen Sie die Startseite von Google oder Ihre Lieblingswebseite. Ein Vergleich mit einer aktuellen Verbindung über HTTP/2 lässt die Funktionalitäten und Einschränkungen von HTTP 0.9 noch gut erahnen.
HTTP 0.9 wurde ein voller Erfolg, sodass bald eine Aktualisierung auf die Version HTTP/1.0 fällig war. Doch bevor wir der Geschichte des Internetprotokolls weiter folgen, wollen wir uns noch einmal die wichtigsten Funktionalitäten der Urversion vor Augen führen:
- HTTP 0.9 ist ein Anfrage-Antwort-Protokoll zwischen Client und Server
- Der Datenaustausch zwischen Client und Server erfolgt mithilfe von ASCII-Zeichen über eine TCP/IP-Verbindung.
- Der Server versendet HTML-Dokumente.
- Die Verbindung wird nach jeder Anfrage wieder geschlossen.
HTTP/1.0 - Ein Protokoll wird erwachsen
Die Entwicklung von HTML/1.0 erfolgte eng verzahnt mit der Entwicklung eines neuartigen Computerprogramms: dem Webbrowser. Tim Berners-Lee schwebte ein spezielles Programm zur Darstellung von HTML-Dokumenten vor und so wurde mit NCSA Mosaic der erste populäre Browser entwickelt. Aus diesem ging später der legendäre Netscape Navigator 1.0 hervor.
Spätestens jetzt war klar, dass das Internet nicht mehr nur eine rein akademische Spinnerei war, sondern ein spannendes Entwicklungsfeld für die Zukunft werden würde.
Gleichzeitig mit der Entwicklung der ersten Browser begannen Firmen wie Compuserve, Prodigy und AOL (Wer erinnert sich nicht an die berühmten AOL-CDs, die Mitte der 1990er überall hinterhergeworfen wurden?) damit, bezahlbare Internetverbindungen für jedermann anzubieten.
Für das sich in dieser Zeit rasant entwickelnde Netz begannen Heerscharen von Entwicklern damit, das ursprüngliche Übertragungsprotokoll an die neue Zeit anzupassen. Dinge wie die Übertragung von Metadaten oder das Handling von Multimediaelementen rückten plötzlich in den Vordergrund. Diese wilde Experimentalphase endete im Jahr 1996, als das mittlerweile gegründete Internetkonsortium W3C eine ganze Reihe praktikabler und weitläufig akzeptierter Erweiterungen zum ursprünglichen Protokoll in der Version HTTP/1.0 kodifizierte.
Diese Version des Internetprotokolls zeichnet sich durch folgende Neuerungen aus:
- In einer Clientanforderung können mehrere Zeilenumbrüche vorhanden sein, denen jeweils ein Header vorangestellt ist.
- Der serverseitigen Antwort ist eine Statusmeldung vorangestellt.
- Die serverseitige Antwort kann ebenfalls eine Reihe von Headern mit Metainformationen enthalten.
- Die Antwort muss nicht mehr zwingend im HTML-Format erfolgen.
- Die Verbindung wird weiterhin nach jeder Client-Anfrage geschlossen.
Werden mit der Version HTTP/1.0 die Header weiterhin im ASCII-Format übertragen, so kann die eigentliche Antwort in nahezu jedem beliebigen Format erfolgen. Schnell wurde so aus dem ursprünglichen Hypertext Transfer Protocol ein Hypermedia Transfer Protocol. Die Funktionalität des Protokolls erweiterte sich, der alte Name blieb.
Übrigens beherrscht noch heute jeder Server den Übertragungsstandard HTTP/1.0.
HTTP/1.1 - Internetstandard für lange Zeit
Schon bald nach der Version HTTP/1.0 wurde mit HTTP/1.1 ein Nachfolger vorgestellt, der viele Fehler und Unklarheiten beseitigte, die sich aus der etwa unkoordinierten Entwicklung des Vorgängers ergaben. Gleichzeitig wurde eine Reihe kritischer Leistungsoptimierungen etabliert. Hier ist vor allem das Keepalive-Argument zu nennen, das es ermöglicht, eine Verbindung auch nach erfolgreich abgeschlossener Client-Server-kommunikation aufrechtzuerhalten. Neben verbesserten Cashing- und Komprimierungs-Mechanismen trug dieses Argument einen Großteil zur Geschwindigkeitssteigerung der weltweiten Kommunikation bei.
Die Version HTTP/1.1 wird heute von jedem Browser unterstützt und stellt immer noch den Standard der weltweiten Internetkommunikation dar. Auf die vielen Neuerungen und Errungenschaften von HTTP/1.1 genauer einzugehen, würde den Rahmen dieses kurzen Überblicks sprengen. Damit wäre ein ganzes Buch zu füllen.
HTTP/2 - Fit for the Future
Das mobile Internet ist längst Realität und mit dem sogenannten Internet der Dinge steht der nächste Entwicklungssprung des weltweiten Netzes unmittelbar bevor. Schon bald werden nicht mehr noch Computer und Mobilfunkgeräte miteinander kommunizieren, sondern Kaffeekannen und Kühlschränke. Diese Entwicklung wird eine ungeahnte Zunahme des globalen Datenverkehrs nach sich ziehen, die mit den bisherigen Protokollversionen nicht mehr zu bewältigen sein wird. Vor diesem Hintergrund bringt die Version HTTP/2 einige signifikante Leistungsverbesserungen mit sich, indem es sich wieder auf die ursprünglichen Werte des Internetübertragungsprotokolls konzentriert: schneller Datenaustausch mithilfe eines einfachen und schlanken Protokolls.
Ausblick
Schaut man sich die Entwicklungsgeschichte des Internetübertragungsprotokolls HTTP an, so mag in Angela Merkels Bonmot über das Internet als Neuland tatsächlich eine gewisse Wahrheit stecken. Schließlich entwickelt sich das Internet so rasant fort und verändert sich sekündlich. So ist es wohl tatsächlich so, dass den Gründern des Arpanet das heutige Internet wie ein Neuland vorkommen muss, ein schnelles, faszinierendes und lebendiges Neuland. Internetpioniere wie Tim Berners-Lee hatten schon damals so viel Weitblick, eins der grundlegenden Elemente des weltweiten Netzes so stabil und gleichzeitig flexibel und ausbaufähig zu gestalten, das es in Grundzügen noch heute Bestand hat.
Ausgehend von einfachsten Anfängen mit HTTP 0.9 entwickelte sich das Protokoll mit den Versionen HTML/1.0 und HTML/1.1 zu einem unersetzlichen Faktor im Internet, das dessen weltweiten Siegeszug erst ermöglichte. Lange Zeit bildete HTML/1.1 das Rückgrat eines sich stetig verändernden Netzes.
Und erst im Jahr 2016 erforderte die rasante Entwicklung des Internets hin zu mobilen Services und dem Internet der Dinge eine Aktualisierung und Erweiterung des Kommunikationsprotokolls auf die aktuelle Version HTTP/2. Mit ihm gelingen eine noch schnelle Kommunikation und eine deutlich bessere Ausnutzung der vorhandenen Ressourcen. Nichtsdestotrotz verstehen auch 26 Jahre nach Ihrer Einführung die Protokollversion 0.9.
Das Internet ist also trotz aller Wandlungsfähigkeit ein äußerst stabiles Neuland.
Können wir weiterhelfen?
Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!