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.
| Merkmal | TCP | UDP |
|---|---|---|
| Verbindungsaufbau | Verbindungsorientiert: 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 Sendewiederholung | Die Zustellung wird mit ACKs bestätigt; Verluste werden über einen Retransmission-Timeout oder doppelte ACKs erkannt, und die verlorenen Daten werden erneut gesendet | Keine Bestätigung und keine Sendewiederholung; verlorene Daten bleiben verloren |
| Reihenfolge | Mit Sequenznummern werden die Daten neu geordnet und in Sendereihenfolge zugestellt; Duplikate werden entfernt | Die Daten werden in Ankunftsreihenfolge zugestellt; Vertauschungen und Duplikate können auftreten |
| Datengrenzen | Ein Bytestrom ohne Grenzen; wo Nachrichten beginnen und enden, legt die Anwendung fest | Jeder Sendevorgang wird zu einem Datagramm, daher bleiben Nachrichtengrenzen erhalten |
| Fluss- und Überlastkontrolle | Ja: Das Empfangsfenster verhindert einen Überlauf des Empfängerpuffers, und das Überlastfenster passt die gesendete Menge an die Überlastung an | Keine; bei Bedarf regelt die Anwendung ihre Senderate selbst |
| Headergröße | 20 Byte ohne Optionen (bis zu 60 Byte mit Optionen) | 8 Byte (Quell- und Zielport, Länge, Prüfsumme) |
| Latenz | Der Verbindungsaufbau kostet eine Umlaufzeit; nach einem Verlust warten auch spätere Daten, bis die Wiederholung ankommt | Kein Aufbau und kein Warten auf Wiederholungen, daher geringe Verzögerung, aber einige Daten können fehlen |
| Zieltypen | Nur eins zu eins (Unicast) | Unicast sowie Broadcast und Multicast |
| Typischer Einsatz | Das Web über HTTP/1.1 und HTTP/2, Videoauslieferung über HTTP, E-Mail (SMTP), SSH, Dateiübertragung | DNS-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.