Eine Einführung in HTTP / 2

Einleitung

HTTP / 2 ist die neueste Version der Hypertext Transfer Protocol oder HTTP [01], wird von Browsern zur Kommunikation mit Webservern verwendet. Abgeleitet vom älteren SPDY [02] Protokoll, HTTP / 2 ist die erste neue Version von HTTP seit der Standardisierung von HTTP / 1.1 in RFC 2068 im Jahr 1997.

Es wurde von der HTTP-Arbeitsgruppe der Internet Engineering Task Force (IETF) entwickelt httpbis (wobei "bis" "zweimal" bedeutet) und als RFC 7540 veröffentlicht [03] im Mai 2015.

HTTP / 2-Einführung

HTTP / 2 wurde seit seiner offiziellen Veröffentlichung zunehmend von funktionierenden Websites übernommen. Der Online-Umfragedienst W3Techs [04] stellt fest, dass die HTTP / 2017-Unterstützung von September 2018 bis September 2 von 16% auf 30% aller überwachten Websites gestiegen ist.

Darüber hinaus bieten gängige Browser (z. B. Chrome, Firefox, Edge usw.) bereits vollständige Unterstützung für HTTP / 2 [05]. (Einige entwickelten sogar experimentelle Implementierungen, bevor HTTP / 2 als Standard akzeptiert wurde.)

Diese weit verbreitete Akzeptanz bedeutet, dass HTTP / 2 das Potenzial hat, das De-facto-Kommunikationsprotokoll des Webs zu werden.

Motivation hinter HTTP / 2

HTTPS'Charter [06] erwähnt mehrere Komponenten von HTTP / 1.1, die als Motivation für HTTP / 2 verbessert werden könnten. Das Hauptziel der Gruppe war jedoch, die vom Endbenutzer wahrgenommene Latenz zu verringern.

Um dies zu tun, httpbis Es wurde erwogen, den Bandbreiten-Overhead durch Header-Komprimierung und aggressive Prefetching-Techniken (z. B. Server-Push) zu minimieren und gleichzeitig systematisch zu versuchen, bekannte Leistungsprobleme wie Verbindungsüberlastung und das Problem der Head-of-Line-Blockierung (HoL) zu beheben [07].

Darüber hinaus musste HTTP / 2 abwärtskompatibel sein, was bedeutete, dass dieselben Methodenverben, Statuscodes, URIs und (die meisten) Headerfelder wie in HTTP / 1.1 verwendet werden mussten. HTTP / 2 musste auch so konzipiert sein, dass es gängige HTTP-Anwendungsfälle wie Desktop- und mobile Webbrowser, Programmierschnittstellen, Proxys und Firewalls unterstützt.

Um diese Kompatibilität aufrechtzuerhalten, entwickelte die Arbeitsgruppe einen Protokollverhandlungsmechanismus, mit dem Clients und Server zwischen HTTP / 1.1-, HTTP / 2- oder sogar Nicht-HTTP-Protokollen wählen können.

Was ist neu in HTTP / 2?

HTTP / 2 verwendet weiterhin dieselben URI-Schemata und Portnummern wie HTTP / 1.1 (dh Port 80 für http URIs und Port 443 für https URIs), aber viele Dinge werden unter der Haube anders gemacht.

Die grundlegendste Änderung ist die Einführung von Rahmen als Basisdateneinheit von HTTP / 2.

HTTP / 1.1 wird traditionell verwendet Pakete Netzwerkdaten darstellen. Ein Client erstellt ein Anforderungspaket mit einem Methodenverb (z GET or POST), Anhängen einer Liste von Headern, die die Verbindung beschreiben, und eines Körpers, der Anwendungsdaten enthält.

Beim Empfang eines Anforderungspakets antwortet ein HTTP / 1.1-Server mit einem ähnlichen Antwortpaket, das die angeforderten Informationen enthält. Infolgedessen erfordert jeder Anforderungs- und Antwortzyklus eine neue Verbindung.

Umgekehrt stellen HTTP / 2-Clients eine einzelne Netzwerkverbindung mit dem Server her, die sie für die gesamte nachfolgende Netzwerkkommunikation verwenden. Header, Benutzerdaten, Fehlermeldungen und solche Informationen werden in verschiedene binäre Datenstrukturen gepackt, die als Frames bezeichnet werden, bevor sie über das Netzwerk übertragen werden.

Dies scheint eine kleine Änderung zu sein, hat jedoch erhebliche Auswirkungen.

Header-Komprimierung

Ein großer Vorteil der Verwendung von Frames besteht darin, dass HTTP / 2-Header in a gepackt werden HEADER Frame, der mit normalen Komprimierungsmethoden komprimiert werden kann. Header müssen vor allen Daten übertragen werden, damit die Header-Komprimierung den durch HTTP / 2 verursachten Bandbreiten-Overhead verringern kann.

Die Header-Komprimierung kann zusammen mit den folgenden leistungsverbessernden HTTP / 2-Funktionen besonders in mobilen oder Internet-of-Things-Anwendungen (IOT) nützlich sein, bei denen nur eine minimale Netzwerknutzung erforderlich ist.

Streams und Multiplexing

Eine unabhängige Folge von semantisch relevanten Frames heißt a Strom. Streams erhalten vom Endpunkt (dh Client oder Server), der sie erstellt hat, eine eindeutige Kennung, damit andere Endpunkte zwischen ihnen unterscheiden können.

Endpunkte können Frames aus mehreren Streams über dieselbe HTTP / 2-Verbindung verschachteln, sodass eine einzelne Netzwerkverbindung mehrere gleichzeitig geöffnete Streams unterstützt. Dieser Vorgang wird aufgerufen Multiplexing [08].

Die Wiederverwendung derselben Verbindung verringert Probleme wie die Überlastung der Verbindung und das zuvor erwähnte HoL-Problem und bietet eine bessere Leistung und eine reibungslosere Benutzererfahrung als frühere HTTP-Versionen.

Stream-Abhängigkeit und Priorisierung

Das Verwalten mehrerer gleichzeitiger Streams bedeutet, dass einige Streams vor anderen verarbeitet werden. Mit HTTP / 2 kann der Entwickler (oder Administrator) dieses Verhalten mit einer Funktion namens optimieren Stream-Abhängigkeit.

Ein Stream kann von der vollständigen Übertragung eines anderen Streams abhängen, bevor er verarbeitet wird. Beispielsweise ermöglicht HTTP / 2 auf einer Site, auf der der Hauptinhalt einer Webseite vor Empfehlungen für ähnliche Inhalte geladen werden soll, die Erstellung des Empfehlungsstroms als abhängig vom Hauptinhaltsstrom.

HTTP / 2 unterstützt auch Stream-Priorisierung. Das heißt, jedem Stream kann eine Priorität zugewiesen werden, um anzugeben, wie dringend die Endpunkte Ressourcen zuweisen sollen, um die Frames des Streams zu verarbeiten.

Durch Priorisierung und Stream-Abhängigkeit können Entwickler und Websitebesitzer die Netzwerknutzung ihrer Website optimieren, wodurch die Benutzererfahrung ihrer Website erheblich verbessert werden kann.

Server-Push

Schließlich kann HTTP / 2 die Leistung einer Website verbessern, indem es Push-Funktionen bereitstellt. Ein HTTP / 2-Webserver kann mit Daten auf mehr Anfragen antworten, als der Client ursprünglich angefordert hat. Auf diese Weise kann der Server Daten bereitstellen, von denen er weiß, dass ein Webbrowser eine Seite rendern muss, ohne darauf zu warten, dass der Browser die erste Antwort überprüft, und somit ohne den Aufwand eines zusätzlichen Anforderungszyklus.

Mit Server Push haben Entwickler die vollständige Kontrolle über die Anzahl der Anforderungen, die ein Browser zum Rendern seiner Website benötigt. Bei korrekter Verwendung kann diese Funktion den Netzwerk-Overhead minimieren.

Natürlich kann ein Missbrauch der Push-Funktion auch mehr Bandbreite verschwenden, als tatsächlich erforderlich ist. Aus diesem Grund ermöglicht HTTP / 2 einem Client, die Deaktivierung des Server-Push beim ersten Aushandeln einer Verbindung anzufordern.

HTTP / 2-Sicherheit

Wenn Sie bis zu diesem Punkt gelesen haben, sollte klar sein, dass die Entwickler von HTTP / 2 wirklich Anstrengungen unternehmen, um die Leistung zu verbessern. Es ist jedoch zu beachten, dass HTTP / 2 auch dazu beitragen kann, die Sicherheit der Browserbenutzer insgesamt zu verbessern.

Insbesondere ist HTTP / 2 sowohl für HTTP-URIs (dh ohne Verschlüsselung) als auch für HTTPS-URIs (über) definiert TLS verschlüsselte Kanäle). Obwohl der Standard selbst keine Verschlüsselung erfordert, sind alle wichtigen Browser-Implementierungen (z. B. Firefox) erforderlich [09], Chrome, Safari, Opera, IE, Edge) haben entschieden, dass dies der Fall sein wird einzige unterstütze HTTP / 2 über TLS.

In der Tat unterscheiden Browser zwischen Klartext-HTTP / 2 und HTTP / 2 über verschlüsselt TLS als zwei verschiedene Protokolle. Verschlüsseltes HTTP / 2 wird aufgerufen h2 und Klartext h2c. Zum jetzigen Zeitpunkt unterstützt keiner der gängigen Browser h2c , Was bedeutet, dass TLS Die Verschlüsselung ist obligatorisch, damit eine Website die anderen Vorteile von HTTP / 2 nutzen kann. Wenn HTTP / 2 zum Standard-Webnetzwerkprotokoll wird, können ältere Websitebesitzer, die noch kein Upgrade auf SSL / durchgeführt haben,TLSwird stark motiviert sein, dies endlich zu tun.

Zusammenfassung

Die weit verbreitete Einführung von HTTP / 2 wird zu einem neuen und verbesserten Web führen. Es ist schneller, benötigt weniger Bandbreite und hilft Websites, sicher zu bleiben. Durch die allgemeine Akzeptanz wird die Benutzererfahrung im Internet insgesamt reibungsloser und sicherer.

Holen Sie sich noch heute ein Zertifikat und schließen Sie sich uns in Zukunft an.

Bibliographie

  1. HTTP-Protokoll
  2. SPDY-Protokoll
  3. HTTP / 2-Spezifikation
  4. Umfrage zur Einführung von W3Techs HTTP / 2
  5. HTTP / 2-Übernahme in Browsern
  6. httpbis Charter
  7. HOL-Blockierung
  8. Multiplexing
  9. Firefox unter HTTP / 2

Abonnieren Sie den Newsletter von SSL.com

Verpassen Sie keine neuen Artikel und Updates von SSL.com

Bleiben Sie informiert und sicher

SSL.com ist ein weltweit führendes Unternehmen im Bereich Cybersicherheit, PKI und digitale Zertifikate. Melden Sie sich an, um die neuesten Branchennachrichten, Tipps und Produktankündigungen von zu erhalten SSL.com.

Wir würden uns über Ihr Feedback freuen

Nehmen Sie an unserer Umfrage teil und teilen Sie uns Ihre Meinung zu Ihrem letzten Kauf mit.