TCP vs. UDP: Verbindung, Zuverlässigkeit, Reihenfolge, Überlastkontrolle, Latenz

TCP und UDP sind beide Protokolle der Transportschicht, die auf IP aufsetzen und Anwendungen über Portnummern unterscheiden. TCP baut vor dem Senden von Daten mit einem Drei-Wege-Handschlag eine Verbindung auf, bestätigt den Empfang mit Bestätigungen (ACKs), wiederholt verlorene Daten und übergibt die Daten der empfangenden Anwendung in der Sendereihenfolge. Zudem passt es die gesendete Menge an den freien Pufferplatz des Empfängers (Flusskontrolle) und an die Überlastung des Netzwerks an (Überlastkontrolle). UDP tut nichts davon: Es verschickt die Daten einfach als Datagramme, daher ist sein Header klein, und vor dem Senden muss nicht gewartet werden. TCP verwenden, wenn zuverlässige Zustellung wichtig ist, und UDP, wenn geringe Verzögerung wichtig ist und die Anwendung alles Weitere selbst übernimmt.

MerkmalTCPUDP
VerbindungsaufbauVerbindungsorientiert: Die Daten folgen auf einen Drei-Wege-Handschlag (SYN → SYN+ACK → ACK), daher gibt es anfangs eine Wartezeit von einer Umlaufzeit (RTT)Verbindungslos: Daten können sofort ohne Aufbau gesendet werden
Bestätigung und SendewiederholungDie Zustellung wird mit ACKs bestätigt; Verluste werden über einen Retransmission-Timeout oder doppelte ACKs erkannt, und die verlorenen Daten werden erneut gesendetKeine Bestätigung und keine Sendewiederholung; verlorene Daten bleiben verloren
ReihenfolgeMit Sequenznummern werden die Daten neu geordnet und in Sendereihenfolge zugestellt; Duplikate werden entferntDie Daten werden in Ankunftsreihenfolge zugestellt; Vertauschungen und Duplikate können auftreten
DatengrenzenEin Bytestrom ohne Grenzen; wo Nachrichten beginnen und enden, legt die Anwendung festJeder Sendevorgang wird zu einem Datagramm, daher bleiben Nachrichtengrenzen erhalten
Fluss- und ÜberlastkontrolleJa: Das Empfangsfenster verhindert einen Überlauf des Empfängerpuffers, und das Überlastfenster passt die gesendete Menge an die Überlastung anKeine; bei Bedarf regelt die Anwendung ihre Senderate selbst
Headergröße20 Byte ohne Optionen (bis zu 60 Byte mit Optionen)8 Byte (Quell- und Zielport, Länge, Prüfsumme)
LatenzDer Verbindungsaufbau kostet eine Umlaufzeit; nach einem Verlust warten auch spätere Daten, bis die Wiederholung ankommtKein Aufbau und kein Warten auf Wiederholungen, daher geringe Verzögerung, aber einige Daten können fehlen
ZieltypenNur eins zu eins (Unicast)Unicast sowie Broadcast und Multicast
Typischer EinsatzDas Web über HTTP/1.1 und HTTP/2, Videoauslieferung über HTTP, E-Mail (SMTP), SSH, DateiübertragungDNS-Anfragen, DHCP, Echtzeitverkehr wie Sprachanrufe und Live-Video, Onlinespiele und das von HTTP/3 genutzte QUIC

Die Zahlenwerte sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.

Wann welche Variante?

TCP
Wenn fehlende oder vertauschte Daten ein Problem wären. Der Standard für die meisten Anwendungen: Webseiten, Dateien, E-Mail, Datenbankverbindungen und mehr.
UDP
Für Echtzeitverkehr, bei dem etwas Verlust besser ist als verspätete Ankunft, und für kurze Austausche mit nur einer Anfrage und einer Antwort. Auch für Broadcast und Multicast und wenn die Anwendung ihre eigene Zuverlässigkeit aufbaut, wie QUIC es tut.

Häufige Fragen

Sollte man UDP meiden, weil es unzuverlässig ist?

Das hängt vom Zweck ab. UDP lässt Zustellbestätigung und Sendewiederholung, Reihenfolge und Ratenanpassung weg. Werden diese nicht gebraucht oder will die Anwendung sie auf eigene Weise lösen, passt UDP gut. Bei einem Sprachanruf etwa ist verspätet ankommender Ton nutzlos, daher ist Weitermachen besser als das Warten auf eine Wiederholung. Anwendungen, die große Datenmengen über UDP senden, müssen ihre Senderate jedoch selbst steuern, um das Netzwerk nicht zu überlasten.

Warum setzt QUIC auf UDP auf?

QUIC (RFC 9000) ist ein Transportprotokoll, das Sendewiederholung, Reihenfolge, Überlastkontrolle und TLS-1.3-Verschlüsselung vereint. Ein ganz neues Protokoll direkt über IP passiert NATs und Firewalls auf dem Weg oft nicht und müsste zudem auf die Unterstützung durch Betriebssysteme warten. Der Aufbau auf UDP lässt es durch bestehende Netzwerke gelangen und in der Anwendung implementieren und aktualisieren. HTTP/3 läuft über QUIC.

Verwendet DNS nur UDP?

Gewöhnliche Namensanfragen nutzen UDP-Port 53 und kommen mit einer Anfrage und einer Antwort aus. Ist eine Antwort zu groß für UDP, und für Zonentransfers wird TCP verwendet; DNS-Implementierungen müssen auch TCP unterstützen (RFC 7766).

Wie unterscheiden sich Fluss- und Überlastkontrolle bei TCP?

Die Flusskontrolle verhindert einen Überlauf des Empfängerpuffers: Der Empfänger meldet seinen freien Platz als Empfangsfenster. Die Überlastkontrolle verhindert eine Überlastung des Netzwerks auf dem Weg: Der Sender schließt aus Paketverlusten und ähnlichen Anzeichen auf Überlastung und vergrößert oder verkleinert sein Überlastfenster. Die tatsächlich sendbare Menge wird durch das kleinere der beiden Fenster bestimmt.

Verständnis prüfen

Zu welcher Schicht des vierschichtigen TCP/IP-Modells gehören TCP und UDP?

  1. AAnwendungsschicht
  2. BInternetschicht
  3. CTransportschicht
Antwort und Erläuterung anzeigen

Antwort: C. Transportschicht

Das TCP/IP-Modell wird von unten nach oben mit vier Schichten beschrieben: Netzzugangsschicht (Link Layer), Internetschicht, Transportschicht und Anwendungsschicht. TCP und UDP sind Protokolle der Transportschicht; mit Portnummern unterscheiden sie, für welche Anwendung auf einem Endgerät die Daten bestimmt sind. IP in der Internetschicht ist dafür zuständig, Pakete von Endgerät zu Endgerät zu befördern. HTTP und DNS sind Protokolle der Anwendungsschicht. Im OSI-Referenzmodell entspricht die Transportschicht der Schicht 4 und die Internetschicht der Schicht 3.

Welche Beschreibung von UDP ist richtig?

  1. AEs baut keine Verbindung auf und steuert weder Sendewiederholung noch Reihenfolge, daher ist der Header klein, und vor dem Senden entsteht keine Wartezeit
  2. BEs baut eine Verbindung auf, wiederholt nicht angekommene Daten und bringt sie beim Empfänger in die richtige Reihenfolge
  3. CEs stellt Daten ohne IP-Adressen nur anhand von MAC-Adressen an das Zielgerät zu
Antwort und Erläuterung anzeigen

Antwort: A. Es baut keine Verbindung auf und steuert weder Sendewiederholung noch Reihenfolge, daher ist der Header klein, und vor dem Senden entsteht keine Wartezeit

UDP ist ein schlankes Protokoll, das IP lediglich um Portnummern und eine einfache Fehlerprüfung (Prüfsumme) ergänzt; sein Header ist 8 Byte groß (der von TCP ohne Optionen 20 Byte). Ohne Verbindungsaufbau, Empfangsbestätigung und Sendewiederholung eignet es sich für Sprachanrufe und Live-Video, bei denen ein kleiner Verlust besser ist als Verzögerung, und für DNS, das mit einer Anfrage und einer Antwort auskommt. Wird Zuverlässigkeit benötigt, sorgt die Anwendung dafür; QUIC, das HTTP/3 verwendet, implementiert zum Beispiel Sendewiederholung und Verschlüsselung auf UDP. Verbindungsaufbau, Sendewiederholung und Reihenfolgesteuerung leistet TCP.

In welcher Reihenfolge werden beim Drei-Wege-Handschlag, der eine TCP-Verbindung aufbaut, die Pakete ausgetauscht?

  1. ASYN → ACK → FIN
  2. BACK → SYN → SYN+ACK
  3. CSYN → SYN+ACK → ACK
Antwort und Erläuterung anzeigen

Antwort: C. SYN → SYN+ACK → ACK

Beim Drei-Wege-Handschlag fordert zuerst der Client mit SYN eine Verbindung an und teilt die erste Nummer der Daten mit, die er senden wird (seine initiale Sequenznummer). Der Server antwortet mit SYN+ACK, bestätigt (ACK) damit den Empfang und teilt zugleich seine eigene initiale Sequenznummer mit. Zuletzt sendet der Client ein ACK, und beide Richtungen sind bereit. Indem die Nummern beider Richtungen in drei Schritten bestätigt werden, werden Fehlverbindungen verhindert, etwa durch alte, verspätet eintreffende Pakete. Deshalb braucht TCP mindestens eine Umlaufzeit (RTT), bevor Daten fließen können. FIN dient zum Abbau einer Verbindung.

  1. Welchen Zweck hat es bei der TCP-Flusskontrolle, dass der Empfänger dem Sender seine Fenstergröße (Empfangsfenster) mitteilt?
  2. Welche Beschreibung des Grundgedankens der TCP-Überlastkontrolle ist richtig?
  3. Was veranlasst einen TCP-Sender, ein Segment als verloren anzusehen und erneut zu senden?

Übungsfragen zu Grundlagen der Computernetzwerke

Wichtige Begriffe erklärt

Drei-Wege-Handschlag (Three-Way Handshake)
Ablauf, mit dem eine TCP-Verbindung aufgebaut wird. Drei Nachrichten – SYN des Clients, SYN+ACK des Servers und ACK des Clients – bestätigen die initialen Sequenznummern beider Seiten.
Portnummer
Zahl von 0 bis 65535, mit der TCP und UDP unterscheiden, für welche Anwendung auf einem Endgerät die Daten bestimmt sind. Die Ports 0–1023, etwa 80 für HTTP, 443 für HTTPS und 53 für DNS, heißen Well-known Ports.
OSI-Referenzmodell
Modell, das die Kommunikationsfunktionen in sieben Schichten gliedert: Bitübertragungsschicht, Sicherungsschicht, Vermittlungsschicht, Transportschicht, Sitzungsschicht, Darstellungsschicht und Anwendungsschicht. Es dient als gemeinsame Sprache, um die Aufgaben der einzelnen Schichten getrennt zu betrachten.
DNS (Domain Name System)
System, das Domainnamen wie www.example.com den für die Kommunikation verwendeten IP-Adressen zuordnet und verteilt von Servern auf der ganzen Welt verwaltet wird.
DHCP (Dynamic Host Configuration Protocol)
Protokoll, das Geräten, die sich mit einem Netzwerk verbinden, automatisch und befristet IP-Adresse, Subnetzmaske, Standardgateway, DNS-Server und weitere Einstellungen zuweist.
TLS (Transport Layer Security)
Protokoll, das die Kommunikation verschlüsselt, Manipulationen erkennt und Server mithilfe von Zertifikaten authentifiziert. HTTPS ist durch TLS geschütztes HTTP.
HTTP (Hypertext Transfer Protocol)
Protokoll der Anwendungsschicht, mit dem unter anderem Webbrowser und Webserver HTML, Bilder und Daten austauschen. Der Client sendet eine Anfrage aus Methode, URL, Headern und Body, der Server gibt eine Antwort aus Statuscode, Headern und Body zurück. Als Protokoll ist HTTP zustandslos; Zustände wie eine Anmeldung werden etwa mit Cookies gehalten. HTTP/1.1 verwendet ein Textformat und persistente Verbindungen, HTTP/2 multiplext mehrere Streams über eine TCP-Verbindung, und HTTP/3 verwendet QUIC über UDP. Mit TLS geschütztes HTTP heißt HTTPS.

Verwandte Vergleiche