Quick UDP Internet Connections: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „Man-Pages“ durch „Man-Page“
 
(60 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' - Kurzbeschreibung
'''Quick UDP Internet Connections''' (QUIC) - auf UDP aufbauendes, zuverlässiges, verbindungsorientiertes und verschlüsseltes Netzwerkprotokoll auf Transportschicht
 
== Beschreibung ==
== Beschreibung ==
Familie = [[Internetprotokollfamilie]]
* [[Netzwerkprotokoll]]  
Einsatzfeld = Zuverlässiger und verschlüsselter bidirektionaler Datentransport
* [[Transportschicht]]
aufbauend auf = [[User Datagram Protocol|UDP]]
* nutzt [[User Datagram Protocol]] (UDP)
Einführung = Mai 2021
* [[Zuverlässigkeit (Telekommunikation)|zuverlässig]]
entwickelt aus = [[SPDY]]
* [[Nachrichtenverbindung|verbindungsorientiert]]
  Entwickler = [[Google LLC]], [[Internet Engineering Task Force|IETF]]
* [[Kryptografieprotokoll|verschlüsselt]]
 
; Integriert [[Transport Layer Security]] (TLS)
* zur [[Kryptografie|kryptographischen]] Absicherung der Kommunikation und verfolgt das Ziel, eine höhere Performanz als das [[Transmission Control Protocol]] (TCP) zu bieten.
* QUIC wird von Protokollen wie [[HTTP/3]] oder [[DNS over QUIC]] (DoQ) verwendet


{| class="wikitable float-right"
{| {{{2|class="float"}}} cellspacing="3"
|-
| colspan="2" style="text-align: center;" class="hintergrundfarbe6"| Internet-Standards
|-
| RFC 8999
| Versionsunabhängige Eigenschaften
|-
| RFC 9000
| Hauptdefinition
|-
| RFC 9001
| Benutzung von [[Transport Layer Security|TLS]]
|-
| RFC 9002
| [[Paketverlust|Verlusterkennung]] und [[Datenflusssteuerung|Staukontrolle]]
|}
{| {{{2|class="float-right"}}} cellspacing="3"
|+ QUIC im [[TCP/IP-Referenzmodell|TCP/IP-Protokollstapel]]:
|+ QUIC im [[TCP/IP-Referenzmodell|TCP/IP-Protokollstapel]]:
|- style="background:#DDDDFF;"
|- style="background:#DDDDFF;"
Zeile 49: Zeile 38:
|}
|}


'''QUIC''' ist ein auf dem [[User Datagram Protocol]] (UDP) aufbauendes [[Zuverlässigkeit (Telekommunikation)|zuverlässiges]], [[Nachrichtenverbindung|verbindungsorientiertes]] und [[Kryptografiesprotokoll|verschlüsseltes]] [[Netzwerkprotokoll]] auf [[Transportschicht]]. Es integriert [[Transport Layer Security]] (TLS) zur [[Kryptografie|kryptographischen]] Absicherung der Kommunikation und verfolgt das Ziel, eine höhere Performanz als das [[Transmission Control Protocol]] (TCP) zu bieten. QUIC wird von Protokollen wie [[HTTP/3]] oder [[DNS over QUIC]] (DoQ) verwendet.<ref>{{Internetquelle |autor=Monika Ermert |url=https://www.heise.de/news/Internetbeschleuniger-Die-IETF-laesst-das-QUIC-Protokoll-vom-Stapel-6058718.html |titel=Internetbeschleuniger: Die IETF lässt das QUIC-Protokoll vom Stapel |werk=[[heise online]] |datum=2021-06-01 |abruf=2021-06-01}}</ref>
; Ursprünglich von Google entwickelt
* Der Name stand ursprünglich als Akronym für {{EnS|'''''Q'''uick '''U'''DP '''I'''nternet '''C'''onnections''}}, wird jedoch in diesem Zusammenhang nicht mehr verwendet.
* Seit Februar 2017 arbeitete die [[Internet Engineering Task Force]] (IETF) an einer Standardisierung des QUIC-Protokolles.
* Der Standard wurde im Mai 2021 als RFC 8999, RFC 9000, RFC 9001 und RFC 9002 veröffentlicht.
 
Familie = [[Internetprotokolle]]
Einsatzfeld = Zuverlässiger und verschlüsselter bidirektionaler Datentransport
aufbauend auf = [[User Datagram Protocol|UDP]]
Einführung = Mai 2021
entwickelt aus = [[SPDY]]
Entwickler = [[Google LLC]], [[Internet Engineering Task Force|IETF]]
 
== Quick UDP Internet Connections ==
=== HTTP im Vergleich mit dem QUIC-Protokoll ===
; HTTP stützt sich auf das [[Transmission Control Protocol]] (TCP).
* TCP bestätigt den Erhalt jedes Datenpakets.
* Dies führt dazu, dass im Falle eines Paketverlustes alle anderen Pakete auf die erneute Übertragung des verloren gegangenen warten müssen, wenn der Empfängercache überläuft (''Head-of-Line Blocking''<ref>{{Internetquelle |url=https://www.ionos.de/digitalguide/hosting/hosting-technik/was-ist-http/ |titel=Was ist HTTP? |abruf=2021-03-25 |sprache=de}}</ref>)
 
; Schnelleres Versenden von Datenpaketen
Das [[Quick UDP Internet Connections|QUIC-Protokoll]] soll in seiner Gesamtheit ein schnelleres Versenden von Datenpaketen über das verbindungslose [[User Datagram Protocol|UDP]] ermöglichen.
* Funktionen, die UDP fehlen – wie beispielsweise Empfangsbestätigungen – müssen vom übergeordneten Protokoll bereitgestellt werden.
 
; QUIC regelt die Verbindungskontrolle selbst
* Sender und Empfänger tauschen bei einer Datenverbindung lediglich beim ersten Handshake das Zertifikat und den Schlüssel aus, wodurch sich die Latenz verringert.
* Bei weiteren Sendevorgängen „erinnert“ sich QUIC an die in der Vergangenheit bestehende Verbindung und greift auf die gespeicherten Daten zu.
 
; Kryptografieprotokoll
* Als Kryptografieprotokoll wird aktuell die [[Transport Layer Security|TLS]] Version 1.3 verwendet.
* Im QUIC-Protokoll besteht außerdem die Möglichkeit des ''[[Multiplexverfahren|Multiplexing]]''.
* Dabei können über eine Client-Server-Verbindung mehrere Datenströme gleichzeitig übertragen werden, was die Ladezeit nochmals deutlich reduziert.
 
== Hintergrund und Eigenschaften ==
[[Datei:Tcp-vs-quic-handshake.svg|mini|500px|Verbindungsaufbau von QUIC im Vergleich zu TCP mit TLS1.2]]
 
; Als Weiterentwicklung von [[HTTP]] hat Google bereits das Protokoll [[SPDY]] ausgearbeitet
* dessen Neuerungen aber aufgrund von Beschränkungen des darunterliegenden [[Transmission Control Protocol]] nicht in vollem Umfang genutzt werden können.
* Diese Beschränkungen soll das auf [[User Datagram Protocol|UDP]] basierende QUIC aufheben.
* Die ursprüngliche Form von QUIC wurde von Google am 20. Juli 2016 zur Standardisierung eingebracht.
* QUIC schreibt vor, dass die gesendeten Daten mit [[Transport Layer Security|TLS]] 1.3 verschlüsselt übertragen werden.
 
; Es kommen zwei unterschiedliche Header zum Einsatz
* Der erste Header enthält mehr Informationen und dient dem Verbindungsaufbau.
* Sobald die Verbindung hergestellt wurde, wird der kürzere Header verwendet.
* Bei einem bekannten Host wird die Kryptografie bei einer erneuten Verbindungsherstellung zudem nicht neu ausgehandelt, sondern ab dem ersten Paket verschlüsselt übertragen.
* Da der Header zu einem großen Teil verschlüsselt wird, sind – im Vergleich zu älteren Protokollen – weniger Metadaten aus dem Header auslesbar.
* Hierdurch wird einerseits die Privatsphäre der Nutzer besser gewahrt, aber anderseits das Netzwerk-Monitoring und -Management erschwert.
 
; QUIC bietet höherliegenden Schichten [[Multiplexverfahren|gemultiplexte]] Verbindungen
* so dass mehrere Datenströme unabhängig voneinander empfangen und gesendet werden können.
* Dies kann von [[HTTP/2]] genutzt werden, [[HTTP/3]] wird sogar immer über QUIC genutzt.
* Im Gegensatz dazu kann es bei Multiplexing über [[Transmission Control Protocol|TCP]] zu Verzögerungen auf Grund von [[Head-of-Line-Blocking]] aller gemultiplexten Streams kommen, wenn eines der TCP-Pakete verzögert wird oder verloren geht.
 
; Weiteren Ziele
Zu den weiteren Zielen von QUIC gehören eine reduzierte [[Verbindungsaufbau|Verbindungs]]- und [[Paketumlaufzeit|Transportlatenz]] sowie eine Geschwindigkeitsabschätzung in beide Richtungen, um Überlastungen zu vermeiden.
* Außerdem werden die Algorithmen zur [[Network congestion avoidance|Staukontrolle]] an beiden Endpunkten in den [[User-Space]] (anstatt Kernel-Space) verlagert, was eine schnellere Verbesserung dieser Algorithmen ermöglichen soll.
* Zusätzlich kann das Protokoll mit einer [[Vorwärtsfehlerkorrektur]] (FEC) versehen werden, um die Leistung bei zu erwartenden Fehlern weiter zu verbessern, was als nächster Schritt in der Evolution des Protokolls angesehen wird.
 
Seit Anfang 2021 sind die grundlegenden Protokollspezifikationen von QUICv1 standardisiert.
* Zu den wichtigsten weiterhin diskutierten vielfältigen Erweiterungen gehört Multipath, also – analog zu [[Multipath TCP]] (MPTCP) – der parallele Verbindungsaufbau zwischen Endgeräten und einem netzseitigen Server über mehrere (z.&nbsp;B.&nbsp;leitungsgebundene und drahtlose) Pfade.
 
== Unterstützung ==
; QUIC muss von der Anwendung unterstützt werden
* Der erste Browser, der clientseitig QUIC unterstützt, war [[Google Chrome]] ab Version 29
 
; Beispielimplementierungen für Client und Server finden sich im [[Repository]] von Chromium
* Hierbei handelt es sich allerdings noch um die ursprünglich von Google implementierte Variante
* Ab Version 72 hat auch [[Firefox]] experimentelle Unterstützung für die vom IETF entwickelte Version implementiert
 
Im Oktober 2020 gab Facebook bekannt, dass es sowohl seine Apps auf Android und iOS als auch seine Server-Infrastruktur auf QUIC umgestellt habe und mittlerweile 75 % seines Internet-Datenverkehrs darüber erfolge.
* Für die Benutzer ergäben sich daraus eindeutig messbare Verbesserungen u.&nbsp;a. hinsichtlich Fehlerraten und Latenzzeiten.


== Syntax ==
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Anwendung ==
=== Fehlerbehebung ===
== Konfiguration ==
=== Dateien ===
== Anhang ==
== Anhang ==
=== Siehe auch ===
=== Siehe auch ===
==== Unterseiten ====
{{Special:PrefixIndex/Quick UDP Internet Connections}}
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
 
==== Sicherheit ====
==== Sicherheit ====
==== Dokumentation ====
==== Dokumentation ====
===== RFC =====
===== RFC =====
===== Man-Pages =====
{| class="wikitable options"
|-
! RFC !! Beschreibung
|-
| RFC 8999 || Versionsunabhängige Eigenschaften
|-
| RFC 9000 || Hauptdefinition
|-
| RFC 9001 || Benutzung von [[Transport Layer Security|TLS]]
|-
| RFC 9002 || [[Paketverlust|Verlusterkennung]] und [[Datenflusssteuerung|Staukontrolle]]
|}
 
===== Man-Page =====
===== Info-Pages =====
===== Info-Pages =====
==== Links ====
==== Links ====
===== Einzelnachweise =====
===== Einzelnachweise =====
<references />
<references />
===== Projekt =====
===== Projekt =====
===== Weblinks =====
===== Weblinks =====
# https://de.wikipedia.org/wiki/QUIC
# [https://http3-explained.haxx.se/ HTTP/3 explained] freies und offenes Buch über http/3 und QUIC in verschiedenen Sprachen
# [https://http3-explained.haxx.se/ HTTP/3 explained] freies und offenes Buch über http/3 und QUIC in verschiedenen Sprachen
# [https://www.sueddeutsche.de/digital/internet-schneller-google-tcp-protokoll-verschluesselung-1.5171790 Revolution in den Tiefen des Internets]
# [https://www.sueddeutsche.de/digital/internet-schneller-google-tcp-protokoll-verschluesselung-1.5171790 Revolution in den Tiefen des Internets]
Zeile 79: Zeile 146:
<noinclude>
<noinclude>


=== Testfragen ===
[[Kategorie:QUIC]]
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
 
[[Kategorie:Netzwerk/Protokoll (Transportschicht)]]
[[Kategorie:Kryptografiesprotokoll]]
[[Kategorie:Transport Layer Security]]
[[Kategorie:Abkürzung]]
 


</noinclude>
</noinclude>
= Wikipedia =
== Geschichte ==
QUIC wurde ursprünglich von der Firma [[Google Inc.]] entwickelt. Der Name stand ursprünglich als Akronym für {{EnS|'''''Q'''uick '''U'''DP '''I'''nternet '''C'''onnections''}},<ref name="QUIC Design Doc">{{cite web|url=https://docs.google.com/document/d/1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV-ev2jRFUoVD34/edit|title=QUIC: Design Document and Specification Rationale|publisher=Jim Roskind, Chromium Contributor}}</ref> wird jedoch in diesem Zusammenhang nicht mehr verwendet.<ref name=":0" /> Seit Februar 2017 arbeitete die [[Internet Engineering Task Force]] (IETF) an einer Standardisierung des QUIC-Protokolles.<ref>{{Internetquelle |url=https://datatracker.ietf.org/wg/quic/charter/ |titel=QUIC Workgroup |abruf=2017-04-05}}</ref><ref>{{Internetquelle |autor=Monika Ermert |url=https://www.heise.de/newsticker/meldung/QUIC-kommt-quicker-IETF-bringt-neues-Internet-Transportprotokoll-voran-3674315.html |titel=QUIC kommt quicker: IETF bringt neues Internet-Transportprotokoll voran |hrsg=Heise |datum=2017-04-05 |abruf=2017-04-05}}</ref> Der Standard wurde im Mai 2021 als RFC 8999, RFC 9000, RFC 9001 und RFC 9002 veröffentlicht.<ref name=":0">{{Internetquelle |autor=Sebastian Grüner |url=https://www.golem.de/news/ietf-quic-ist-offizieller-internet-standard-2105-156853.html |titel=Quic ist offizieller Internet-Standard |werk=[[golem.de]] |datum=2021-05-28 |abruf=2021-05-28}}</ref>
== Hintergrund und Eigenschaften ==
[[Datei:Tcp-vs-quic-handshake.svg|mini|Verbindungsaufbau von QUIC im Vergleich zu TCP mit TLS1.2]]
Als Weiterentwicklung von [[HTTP]] hat Google bereits das Protokoll [[SPDY]] ausgearbeitet, dessen Neuerungen aber aufgrund von Beschränkungen des darunterliegenden [[Transmission Control Protocol]] nicht in vollem Umfang genutzt werden können. Diese Beschränkungen soll das auf [[User Datagram Protocol|UDP]] basierende QUIC aufheben.<ref>{{Internetquelle |url=https://blog.chromium.org/2013/06/experimenting-with-quic.html |titel=Experimenting with QUIC |werk=Chromium Blog |hrsg=Google |datum=2013-06-27 |abruf=2013-06-29 |sprache=en}}</ref>
Die ursprüngliche Form von QUIC wurde von Google am 20. Juli 2016 zur Standardisierung eingebracht.<ref>{{Internetquelle |url=https://datatracker.ietf.org/meeting/96/session/quic |titel=IETF-96: QUIC |datum=2016-07-20 |abruf=2016-12-10 |sprache=en}}</ref>
QUIC schreibt vor, dass die gesendeten Daten mit [[Transport Layer Security|TLS]] 1.3 verschlüsselt übertragen werden.<ref>{{Internetquelle |autor=M. Thomson, S. Turner |url=https://www.ietf.org/archive/id/draft-ietf-quic-tls-02.txt |titel=Using Transport Layer Security (TLS) to Secure QUIC |hrsg=IETF |datum=2017-03-13 |abruf=2017-04-05 |format=txt |sprache=en}}</ref> Es kommen zwei unterschiedliche Header zum Einsatz. Der erste Header enthält mehr Informationen und dient dem Verbindungsaufbau. Sobald die Verbindung hergestellt wurde, wird der kürzere Header verwendet. Bei einem bekannten Host wird die Kryptografie bei einer erneuten Verbindungsherstellung zudem nicht neu ausgehandelt, sondern ab dem ersten Paket verschlüsselt übertragen. Da der Header zu einem großen Teil verschlüsselt wird, sind – im Vergleich zu älteren Protokollen – weniger Metadaten aus dem Header auslesbar. Hierdurch wird einerseits die Privatsphäre der Nutzer besser gewahrt, aber anderseits das Netzwerk-Monitoring und -Management erschwert.<ref>{{Internetquelle |autor=M. Kuehlewind, B. Trammell, D. Druta |url=https://www.ietf.org/archive/id/draft-kuehlewind-quic-manageability-00.txt |titel=Manageability of the QUIC Transport Protocol |hrsg=IETF |datum=2017-03-09 |abruf=2017-04-05 |format=txt |sprache=en}}</ref>
QUIC bietet höherliegenden Schichten [[Multiplexverfahren|gemultiplexte]] Verbindungen an, so dass mehrere Datenströme unabhängig voneinander empfangen und gesendet werden können.<ref name=":0" /> Dies kann von [[HTTP/2]] genutzt werden, [[HTTP/3]] wird sogar immer über QUIC genutzt.<ref>{{Internetquelle |autor=Sebastian Grüner |url=https://www.golem.de/news/ietf-http-ueber-quic-wird-zu-http-3-1811-137655.html |titel=HTTP über Quic wird zu HTTP/3 |werk=[[golem.de]] |datum=2018-11-12 |abruf=2021-05-29}}</ref> Im Gegensatz dazu kann es bei Multiplexing über [[Transmission Control Protocol|TCP]] zu Verzögerungen auf Grund von [[Head-of-Line-Blocking]] aller gemultiplexten Streams kommen, wenn eines der TCP-Pakete verzögert wird oder verloren geht.
Zu den weiteren Zielen von QUIC gehören eine reduzierte [[Verbindungsaufbau|Verbindungs]]- und [[Paketumlaufzeit|Transportlatenz]] sowie eine Geschwindigkeitsabschätzung in beide Richtungen, um Überlastungen zu vermeiden. Außerdem werden die Algorithmen zur [[Network congestion avoidance|Staukontrolle]] an beiden Endpunkten in den [[User-Space]] (anstatt Kernel-Space) verlagert, was eine schnellere Verbesserung dieser Algorithmen ermöglichen soll. Zusätzlich kann das Protokoll mit einer [[Vorwärtsfehlerkorrektur]] (FEC) versehen werden, um die Leistung bei zu erwartenden Fehlern weiter zu verbessern, was als nächster Schritt in der Evolution des Protokolls angesehen wird.
Seit Anfang 2021 sind die grundlegenden Protokollspezifikationen von QUICv1 standardisiert. Zu den wichtigsten weiterhin diskutierten vielfältigen Erweiterungen gehört Multipath, also – analog zu [[Multipath TCP]] (MPTCP) – der parallele Verbindungsaufbau zwischen Endgeräten und einem netzseitigen Server über mehrere (z.&nbsp;B. leitungsgebundene und drahtlose) Pfade.<ref>{{Internetquelle |autor=heise online |url=https://www.heise.de/news/IETF-Vorsitzernder-im-Interview-Lars-Eggert-ueber-das-QUIC-Protokoll-6003458.html |titel=IETF-Vorsitzender im Interview: Lars Eggert über das QUIC-Protokoll |abruf=2021-05-06 |sprache=de}}</ref>
== Unterstützung ==
QUIC muss von der Anwendung unterstützt werden. Der erste Browser, der clientseitig QUIC unterstützt, war [[Google Chrome]] ab Version 29.<ref>{{Internetquelle |autor=Christian Kirsch |url=https://www.heise.de/ix/meldung/Google-experimentiert-mit-UDP-fuers-Web-1902457.html |titel=Google experimentiert mit UDP fürs Web |werk=iX |hrsg=Heise |datum=2013-06-28 |abruf=2013-06-29}}</ref> Beispielimplementierungen für Client und Server finden sich im [[Repository]] von Chromium. Hierbei handelt es sich allerdings noch um die ursprünglich von Google implementierte Variante. Ab Version 72 hat auch [[Firefox]] experimentelle Unterstützung für die vom IETF entwickelte Version implementiert.<ref>{{Internetquelle |autor=Sebastian Grüner |url=https://www.golem.de/news/mozilla-firefox-nightly-unterstuetzt-http-3-experimente-1911-144834.html |titel=Firefox Nightly unterstützt HTTP/3-Experimente |werk=Golem.de |hrsg=Computec Media GmbH |datum=2019-11-06 |abruf=2019-11-15}}</ref>
Im Oktober 2020 gab Facebook bekannt,<ref>{{Internetquelle |autor=Matt Joras, Yang Chi |url=https://engineering.fb.com/networking-traffic/how-facebook-is-bringing-quic-to-billions/ |titel=How Facebook is bringing QUIC to billions |datum=2020-10-21 |abruf=2020-10-23}}</ref>
dass es sowohl seine Apps auf Android und iOS als auch seine Server-Infrastruktur auf QUIC umgestellt habe und mittlerweile 75 % seines Internet-Datenverkehrs darüber erfolge. Für die Benutzer ergäben sich daraus eindeutig messbare Verbesserungen u.&nbsp;a. hinsichtlich Fehlerraten und Latenzzeiten.

Aktuelle Version vom 6. November 2024, 12:39 Uhr

Quick UDP Internet Connections (QUIC) - auf UDP aufbauendes, zuverlässiges, verbindungsorientiertes und verschlüsseltes Netzwerkprotokoll auf Transportschicht

Beschreibung

Integriert Transport Layer Security (TLS)
QUIC im TCP/IP-Protokollstapel:
Anwendung HTTP/3 DNS over QUIC
Transport QUIC
Transport UDP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI
Ursprünglich von Google entwickelt
  • Der Name stand ursprünglich als Akronym für , wird jedoch in diesem Zusammenhang nicht mehr verwendet.
  • Seit Februar 2017 arbeitete die Internet Engineering Task Force (IETF) an einer Standardisierung des QUIC-Protokolles.
  • Der Standard wurde im Mai 2021 als RFC 8999, RFC 9000, RFC 9001 und RFC 9002 veröffentlicht.
Familie = Internetprotokolle
Einsatzfeld = Zuverlässiger und verschlüsselter bidirektionaler Datentransport
aufbauend auf = UDP
Einführung = Mai 2021
entwickelt aus = SPDY
Entwickler = Google LLC, IETF

Quick UDP Internet Connections

HTTP im Vergleich mit dem QUIC-Protokoll

HTTP stützt sich auf das Transmission Control Protocol (TCP).
  • TCP bestätigt den Erhalt jedes Datenpakets.
  • Dies führt dazu, dass im Falle eines Paketverlustes alle anderen Pakete auf die erneute Übertragung des verloren gegangenen warten müssen, wenn der Empfängercache überläuft (Head-of-Line Blocking[1])
Schnelleres Versenden von Datenpaketen

Das QUIC-Protokoll soll in seiner Gesamtheit ein schnelleres Versenden von Datenpaketen über das verbindungslose UDP ermöglichen.

  • Funktionen, die UDP fehlen – wie beispielsweise Empfangsbestätigungen – müssen vom übergeordneten Protokoll bereitgestellt werden.
QUIC regelt die Verbindungskontrolle selbst
  • Sender und Empfänger tauschen bei einer Datenverbindung lediglich beim ersten Handshake das Zertifikat und den Schlüssel aus, wodurch sich die Latenz verringert.
  • Bei weiteren Sendevorgängen „erinnert“ sich QUIC an die in der Vergangenheit bestehende Verbindung und greift auf die gespeicherten Daten zu.
Kryptografieprotokoll
  • Als Kryptografieprotokoll wird aktuell die TLS Version 1.3 verwendet.
  • Im QUIC-Protokoll besteht außerdem die Möglichkeit des Multiplexing.
  • Dabei können über eine Client-Server-Verbindung mehrere Datenströme gleichzeitig übertragen werden, was die Ladezeit nochmals deutlich reduziert.

Hintergrund und Eigenschaften

Verbindungsaufbau von QUIC im Vergleich zu TCP mit TLS1.2
Als Weiterentwicklung von HTTP hat Google bereits das Protokoll SPDY ausgearbeitet
  • dessen Neuerungen aber aufgrund von Beschränkungen des darunterliegenden Transmission Control Protocol nicht in vollem Umfang genutzt werden können.
  • Diese Beschränkungen soll das auf UDP basierende QUIC aufheben.
  • Die ursprüngliche Form von QUIC wurde von Google am 20. Juli 2016 zur Standardisierung eingebracht.
  • QUIC schreibt vor, dass die gesendeten Daten mit TLS 1.3 verschlüsselt übertragen werden.
Es kommen zwei unterschiedliche Header zum Einsatz
  • Der erste Header enthält mehr Informationen und dient dem Verbindungsaufbau.
  • Sobald die Verbindung hergestellt wurde, wird der kürzere Header verwendet.
  • Bei einem bekannten Host wird die Kryptografie bei einer erneuten Verbindungsherstellung zudem nicht neu ausgehandelt, sondern ab dem ersten Paket verschlüsselt übertragen.
  • Da der Header zu einem großen Teil verschlüsselt wird, sind – im Vergleich zu älteren Protokollen – weniger Metadaten aus dem Header auslesbar.
  • Hierdurch wird einerseits die Privatsphäre der Nutzer besser gewahrt, aber anderseits das Netzwerk-Monitoring und -Management erschwert.
QUIC bietet höherliegenden Schichten gemultiplexte Verbindungen
  • so dass mehrere Datenströme unabhängig voneinander empfangen und gesendet werden können.
  • Dies kann von HTTP/2 genutzt werden, HTTP/3 wird sogar immer über QUIC genutzt.
  • Im Gegensatz dazu kann es bei Multiplexing über TCP zu Verzögerungen auf Grund von Head-of-Line-Blocking aller gemultiplexten Streams kommen, wenn eines der TCP-Pakete verzögert wird oder verloren geht.
Weiteren Ziele

Zu den weiteren Zielen von QUIC gehören eine reduzierte Verbindungs- und Transportlatenz sowie eine Geschwindigkeitsabschätzung in beide Richtungen, um Überlastungen zu vermeiden.

  • Außerdem werden die Algorithmen zur Staukontrolle an beiden Endpunkten in den User-Space (anstatt Kernel-Space) verlagert, was eine schnellere Verbesserung dieser Algorithmen ermöglichen soll.
  • Zusätzlich kann das Protokoll mit einer Vorwärtsfehlerkorrektur (FEC) versehen werden, um die Leistung bei zu erwartenden Fehlern weiter zu verbessern, was als nächster Schritt in der Evolution des Protokolls angesehen wird.

Seit Anfang 2021 sind die grundlegenden Protokollspezifikationen von QUICv1 standardisiert.

  • Zu den wichtigsten weiterhin diskutierten vielfältigen Erweiterungen gehört Multipath, also – analog zu Multipath TCP (MPTCP) – der parallele Verbindungsaufbau zwischen Endgeräten und einem netzseitigen Server über mehrere (z. B. leitungsgebundene und drahtlose) Pfade.

Unterstützung

QUIC muss von der Anwendung unterstützt werden
  • Der erste Browser, der clientseitig QUIC unterstützt, war Google Chrome ab Version 29
Beispielimplementierungen für Client und Server finden sich im Repository von Chromium
  • Hierbei handelt es sich allerdings noch um die ursprünglich von Google implementierte Variante
  • Ab Version 72 hat auch Firefox experimentelle Unterstützung für die vom IETF entwickelte Version implementiert

Im Oktober 2020 gab Facebook bekannt, dass es sowohl seine Apps auf Android und iOS als auch seine Server-Infrastruktur auf QUIC umgestellt habe und mittlerweile 75 % seines Internet-Datenverkehrs darüber erfolge.

  • Für die Benutzer ergäben sich daraus eindeutig messbare Verbesserungen u. a. hinsichtlich Fehlerraten und Latenzzeiten.

Anhang

Siehe auch

Sicherheit

Dokumentation

RFC
RFC Beschreibung
RFC 8999 Versionsunabhängige Eigenschaften
RFC 9000 Hauptdefinition
RFC 9001 Benutzung von TLS
RFC 9002 Verlusterkennung und Staukontrolle
Man-Page
Info-Pages

Links

Einzelnachweise
Projekt
Weblinks
  1. https://de.wikipedia.org/wiki/QUIC
  2. HTTP/3 explained freies und offenes Buch über http/3 und QUIC in verschiedenen Sprachen
  3. Revolution in den Tiefen des Internets