Was ist HTTP / 2 und wie wirkt es sich auf die Zukunft des Internets aus?
Sie haben vielleicht noch nicht von HTTP / 2 gehört, aber es ist die letzte Aktualisierung von HTTP. Der neue Protokollstandard führt einige neue Konzepte ein und macht die Kommunikation zwischen Servern und Anwendungen schneller und effizienter.
Was ist HTTP / 2??
HyperText Transfer Protocol Version 2 oder HTTP / 2 ist das erste große Update von HTTP seit 15 Jahren.
Der bisherige Protokollstandard HTTP / 1.1 wird seit 1997 verwendet und verwendet eine Mischung aus unübersichtlichen Workarounds, um die Einschränkungen von HTTP zu verbessern.
Es basiert auf SPDY (“schnell”), ein Open-Source-Experiment, das von Google gestartet wurde, um einige der Probleme und Einschränkungen von HTTP / 1.1 zu beheben
Die Internet Engineering Task Force (IETF) legt die Änderungen wie folgt in Hypertext Transfer Protocol Version 2, Entwurf 17 fest:
“HTTP / 2 ermöglicht eine effizientere Nutzung von Netzwerkressourcen und eine geringere Wahrnehmung von Latenzzeiten, indem die Headerfeldkomprimierung eingeführt wird und mehrere gleichzeitige Austausche über dieselbe Verbindung ermöglicht werden. […]
“Es ermöglicht auch die Priorisierung von Anforderungen, wodurch wichtigere Anforderungen schneller abgeschlossen werden können und die Leistung weiter verbessert wird.”
“HTTP / 2 ermöglicht außerdem eine effizientere Verarbeitung von Nachrichten durch die Verwendung von binären Nachrichtenrahmen.”
“Diese Angabe ist eine Alternative zur HTTP / 1.1-Nachrichtensyntax, die jedoch nicht obsolet ist. Die bestehende Semantik von HTTP bleibt unverändert.”
HTTP / 2 basiert auf SPDY
Bis 2012 unterstützen die meisten modernen Browser und viele beliebte Websites (Google, Twitter, Facebook usw.) SPDY. Als die Popularität von SPDY anstieg, begann die HTTP-Arbeitsgruppe (HTTP-WG) mit der Aktualisierung des HTTP-Standards.
Ab diesem Zeitpunkt wurde SPDY zur Grundlage und zum experimentellen Zweig für neue Funktionen in HTTP / 2. Zu dieser Zeit haben wir untersucht, wie SPDY das Surfen verbessern kann. Was ist SPDY und wie kann es Ihre Browser-Erfahrung maximieren? Was ist SPDY und wie kann es Ihre Browser-Erfahrung maximieren? Weiterlesen . Seitdem wurde der Standard der Version 2 entworfen, genehmigt und veröffentlicht.
Viele der Funktionen von SPDY wurden in HTTP / 2 integriert, und Google hat dieses Protokoll ab Anfang 2016 eingestellt.
Die meisten Browser stellten schließlich die Unterstützung für SPDY ein, und da es keine Alternativen gibt, wird HTTP / 2 zum De-facto-Standard.
Während der HTTP / 2-Protokollstandard nicht streng abwärtskompatibel zu HTTP / 1 ist, kann die Kompatibilität über die Übersetzung erreicht werden. Ein Nur-HTTP / 1.1-Client versteht keinen HTTP / 2-Server und umgekehrt, weshalb die neue Protokollversion HTTP / 2 und nicht HTTP / 1.2 ist.
Ein wichtiger Teil der Arbeit von HTTP-WG besteht jedoch darin, sicherzustellen, dass HTTP / 1 und HTTP / 2 ohne Informationsverlust hin und her übersetzt werden können.
Alle neu eingeführten Mechanismen oder Funktionen sind auch versionsunabhängig und mit dem vorhandenen Web abwärtskompatibel.
HTTP / 2 kann nicht wirklich von Benutzern implementiert werden, aber es gibt einige Möglichkeiten, um unsere Browsing-Geschwindigkeit zu beeinflussen. Glauben Sie, dass einer dieser verbreiteten Mythen Ihre Internetgeschwindigkeit beschleunigt? 5 Mythen über die Steigerung der Internetgeschwindigkeit und warum sie nicht funktionieren 5 Mythen über die Steigerung der Internetgeschwindigkeit und warum sie nicht funktionieren Internetgeschwindigkeit ist eine wichtige Messgröße im 21. Jahrhundert. Im Internet gibt es jedoch viele falsche Informationen darüber, wie Sie Ihre Verbindung schneller machen können. Hier sind fünf Mythen, die Sie nicht glauben sollten. Weiterlesen
Die Vorteile und Funktionen von HTTP / 2
HTTP / 2 enthält einige großartige Updates für den HTTP-Standard. Einige der wichtigsten sind Binär-Framing, Multiplexing, Stream-Priorisierung, Flusskontrolle und Server-Push.
Binäre Rahmung
Nach dem Update auf HTTP2 / wird die HTTP-Protokollkommunikation in einen Austausch von binär codierten Frames aufgeteilt. Diese Frames werden Nachrichten zugeordnet, die zu einem bestimmten Stream gehören. Die Streams werden dann in einer einzigen TCP-Verbindung gemultiplext (gewissermaßen miteinander verwoben).
Die neue binäre Bildebene führt eine neue Terminologie ein. Streams, Nachrichten und Frames.
- Ströme sind bidirektionale Flüsse von Bytes, die eine oder mehrere Nachrichten enthalten.
- Jeder dieser Ströme hat eine eindeutige Kennung und kann bidirektionale Nachrichten mit optionalen Prioritätsinformationen übertragen.
- Frames sind die kleinste Kommunikationseinheit in HTTP / 2, die bestimmte Datensätze enthalten (HTTP-Header, Nachrichtennutzlasten usw.). Der Header identifiziert mindestens den Stream, zu dem der Frame gehört.
- Nachrichten sind ein vollständiger Satz von Frames, die einer logischen Anforderungs- oder Antwortnachricht zugeordnet werden.
- Jede Nachricht ist eine logische HTTP-Nachricht, wie eine Anfrage oder Antworten, die aus einem oder mehreren Frames besteht.
Dies erlaubt uns, eine einzige TCP-Verbindung zu verwenden, für die früher mehrere erforderlich waren.
Multiplexing
HTTP / 1.1 stellt sicher, dass pro Verbindung jeweils nur eine Antwort übermittelt werden kann. Der Browser öffnet zusätzliche TCP-Verbindungen, wenn der Client mehrere parallele Anforderungen erstellen möchte.
HTTP / 2 hebt diese Einschränkung von HTTP / 1.1 auf und ermöglicht das vollständige Anfordern und Antwortmultiplexen. Dies bedeutet, dass Client und Server eine HTTP-Nachricht in unabhängige Frames unterteilen können, die dann verschachtelt und am anderen Ende wieder zusammengefügt werden.
Insgesamt ist dies die wichtigste Verbesserung von HTTP / 2, da zum Teil mehrere Verbindungen entfallen. Dies führt wiederum zu zahlreichen Leistungsvorteilen bei allen Web-Technologien.
Die reduzierte Anzahl von Verbindungen bedeutet weniger Transport Layer Security-Handshakes (TLS), eine bessere Wiederverwendung von Sitzungen und eine allgemeine Reduzierung der Ressourcenanforderungen für Clients und Server. Dadurch können Anwendungen schneller, einfacher und kostengünstiger bereitgestellt werden.
Websites mit vielen externen Assets (Bilder oder Skripts) werden durch HTTP / 2-Multiplexing die größten Leistungssteigerungen erzielen.
Stream Priorisierung und Abhängigkeit
Weitere Verbesserungen der gemultiplexten Ströme werden mit Abhängigkeit von Gewicht und Strom vorgenommen. Mit HTTP / 2 können wir jedem Stream eine Gewichtung zuweisen (einen Wert zwischen 1 und 256) und ihn explizit von einem anderen Stream abhängig machen.
Diese Kombination aus Abhängigkeit und Gewicht führt zur Erstellung eines Prioritätsbaums, der dem Server mitteilt, wie der Client Antworten erhalten möchte.
Der Server verwendet die Informationen im Prioritätsbaum, um die Zuweisung von CPU, Speicher und anderen Ressourcen sowie die Zuweisung von Bandbreite zu steuern, um sicherzustellen, dass der Client die optimale Zustellung von Antworten mit hoher Priorität erhält.
Ablaufsteuerung
Probleme mit der Flusssteuerung in HTTP / 2 ähneln HTTP / 1.1. Da HTTP / 2-Streams jedoch in einer einzigen TCP-Verbindung gemultiplext werden, ist die Funktionsweise der Flusskontrolle in HTTP / 1.1 nicht mehr effizient.
Kurz gesagt, es ist eine Flusssteuerung erforderlich, um zu verhindern, dass Streams sich gegenseitig stören, um eine Blockierung zu verursachen. Dies ermöglicht Multiplexing. HTTP / 2 ermöglicht die Verwendung einer Vielzahl von Flusssteuerungsalgorithmen, ohne dass Protokolländerungen erforderlich sind.
In HTTP / 2 ist kein Algorithmus für die Flusssteuerung angegeben. Stattdessen wurde eine Reihe von Bausteinen bereitgestellt, mit denen Clients und Server ihre eigene Flusssteuerung anwenden können.
Die Besonderheiten dieser Bausteine finden Sie im “Ablaufsteuerung” Abschnitt des HTTP / 2-Internetentwurfs.
Server-Push
Ihr Browser fordert normalerweise beim ersten Besuch einer Seite ein HTML-Dokument an und empfängt dieses von einem Server. Der Server muss dann warten, bis der Browser das HTML-Dokument analysiert und eine Anforderung für die eingebetteten Elemente (CSS, JavaScript, Bilder usw.) sendet..
In HTTP / 1.1 kann der Server diese Assets nicht senden, bis der Browser sie anfordert, und für jedes Asset ist eine separate Anforderung erforderlich (d. H. Mehrere Handshakes und Verbindungen)..
Server-Push verringert die Latenz, da der Server diese Ressourcen ohne Aufforderung senden kann, da er bereits weiß, dass der Client sie benötigt. Im obigen Beispiel überträgt der Server CSS und JavaScript (eine häufig verwendete Skriptsprache Was ist JavaScript und wie funktioniert es? Was ist JavaScript und wie funktioniert es? Was ist JavaScript?) Diese Programmiersprache wird zur Verbesserung von Webseiten verwendet. Es beinhaltet das dynamische Aktualisieren von Webseiten, Benutzeroberflächen und mehr. Lassen Sie uns ein wenig in das, was Javascript bedeutet (Lesen Sie mehr in Webseiten) und Bilder für den Browser, um die Seite schneller anzeigen zu können.
Grundsätzlich ermöglicht Server Push dem Server das Senden mehrerer Antworten für eine einzelne Clientanforderung.
Dies ist zwar der manuelle Effekt, den wir derzeit erzielen, wenn wir CSS oder JS in unsere HTML-Dokumente einbetten. Wir geben die Inline-Ressource an den Client weiter, ohne darauf zu warten, dass der Client sie anfordert.
Dies ist ein großer Schritt weg vom aktuellen HTTP-Standard des strengen Eins-zu-Eins-Anforderungs-Antwort-Workflows.
Die Einschränkungen von HTTP / 2
SPDY hatte eine etwas strengere Sicherheitsrichtlinie und verlangte SSL-Verschlüsselung für alle Verbindungen. HTTPS / 2 erfordert keine Verschlüsselung, aber viele Dienste liefern kein HTTP / 2 ohne SSL.
Alle gängigen Browser unterstützen HTTP / 2, aber keiner von ihnen unterstützt es ohne Verschlüsselung. Die CanIUs-Website bietet eine hervorragende Übersicht über die aktuelle Browserunterstützung für HTTP / 2 (siehe oben).
Die Rückwärtskompatibilität und Übersetzungen zwischen HTTP / 1.1 und HTTP / 2 verlangsamen die Seitenladegeschwindigkeit.
Es gibt keinen wirklichen Grund, warum Verschlüsselung jetzt keine Standard- oder obligatorische Einrichtung sein sollte. Wenn Sie bereits ein SSL-Zertifikat auf Ihrer Site installiert haben, können Sie die Sicherheit Ihrer HTTPS-Website verbessern, indem Sie HSTS aktivieren.
Ist HTTP / 2 das nächste große Ding??
Mitte 2015 wurde HTTP / 2 als Standard vorgeschlagen, und die meisten Browser fügten bis Ende dieses Jahres Unterstützung hinzu. HTTP / 2 beeinflusst bereits die Funktionsweise des Internets und das Zusammenspiel von Anwendungen und Servern.
Es gibt keine Anforderungen, um die Verwendung von HTTP / 2 zu erzwingen, aber bisher bietet es nur Vorteile und keine Nachteile. Dies ist auch eine relativ geringfügige Änderung aus Benutzersicht, die die Leute nicht wirklich bemerken.
Laut W3Tech unterstützen derzeit 31,7% der Top-10-Millionen-Websites HTTP / 2. Die meisten von Ihnen können HTTP / 2 auf Ihrer Website am schnellsten aktivieren, indem Sie Cloudflares CDN verwenden.
Der nächste vorgeschlagene Standard (HTTP / 3) ist bereits in Arbeit und basiert auf QUIC, einem anderen experimentellen Projekt von Google. Im Oktober dieses Jahres forderten die HTTP-WG von IETF und die QUIC-Arbeitsgruppe offiziell QUIC auf, der neue weltweite Standard zu werden und ihn in HTTP / 3 umzubenennen.
Wenn Sie neugierig sind, bietet Akamai.com ein schnelles Werkzeug, um zu prüfen, ob Ihr Browser HTTP / 2 unterstützt. Wenn dies nicht der Fall ist, sollten Sie vielleicht in Betracht ziehen, Ihren Browser zu wechseln. 5 Google Chrome-Alternativen für einen besseren Browser für Desktop oder Mobile 5 Google Chrome-Alternativen für einen besseren Browser für Desktop oder Mobile Chrome ist der beliebteste Browser der Welt. Aber es hat immer noch Probleme. Können diese alternativen Browser die bessere Wahl sein? Weiterlesen .
Erfahren Sie mehr über: Computernetze, HTTP / 2, SPDY.