· 

UDP vs. TCP

1. Einführung

UDP (User Datagram Protocol) und TCP (Transmission Control Protocol) sind zwei Transportprotokolle auf der Transportschicht (Schicht 4) des ISO/OSI-Schichtenmodells des Internets. Sie unterscheiden sich in vielen Punkten und sind für unterschiedliche Zweck geeignet. Im Folgenden sollen die Unterschiede dieser beiden Protokolle dargestellt werden.


2. Unterschiede zwischen UDP und TCP

UDP TCP
UDP produziert keinen Overhead für das Herstellen, Aufrechterhalten und Schließen einer Verbindung (verbindungsloses Protokoll). Daher ist es sehr gut für Broadcast- und Multicast-Übertragungen geeignet. TCP ist ein verbindungsorientiertes Protokoll, d. h. die Geräte müssen vor der Datenübermittlung eine Verbindung aufbauen und diese nach der Transmission wieder schließen.
Die erfolgreiche Übermittlung von Daten von der Quelle zum Ziel kann nicht garantiert werden. TCP ist zuverlässig, da es die Zustellung von Daten an den Zielrouter sicherstellt.
UDP bietet nur standardmäßige Fehlerkennungsmechanismen auf Basis von Checksummen. TCP stellt umfangreiche Mechanismen zum Erkennen von Fehlern bereit. Es bietet z. B. Flow Control und Paket-Acknowledgements (ACKs).
UDP ist schneller, einfacher und effizienter als TCP. TCP ist langsamer als UDP.
Eine Sequenzierung von Daten ist bei UDP nicht vorgesehen. Wenn die Reihenfolge der Paketankunft entscheidend ist, übernimmt dies die Anwendungsschicht (Schicht 5). TCP bietet eine Sequenzierung von Daten an, d. h. sie kommen in der „richtigen“ Reihenfolge beim Empfänger an.
Das erneute Übertragen verlorengegangener Pakete ist nicht vorgesehen (keine Retransmission). Verlorengegangene Pakete können erneut gesendet werden (Retransmission).
Der UDP Header besitzt eine Größe von 8 Bytes. Es handelt sich um ein leichtgewichtiges Übertragungsprotokoll. Der TCP Header besitzt eine Größe von 20 Bytes. Es handelt sich um ein schwergewichtiges Übertragungsprotokoll.
UDP wird von DHCP, TFTP, SNMP, DNS, RIP und VoIP genutzt. TCP wird von HTTP/HTTPS, FTP, Telnet und SMTP genutzt.

3. Wann nutzt man welches Protokoll?

UDP wird vor allem bei Streaming- und Multimedia-Applikationen (z. B. VoIP) verwendet. Besonders bei schnellen Online-Multiplayerspielen (z. B. Fortnite als Shooter-Game) ist ein ruckelfreies Spielerlebnis gewünscht, weshalb der Verlust einzelner Pakete durchaus in Kauf genommen werden kann. Es ist zwar nervig, wenn das Aiming aufgrund falsch kommunizierter Map-Daten nicht funktioniert, doch in gewisser Weise tolerierbar. Beim Streaming von Netflix ist es auch nicht notwendig, dass jedes einzelne Pixel in einer Full HD Auflösung richtig ankommt, da man sie ohnehin nicht alle für sich selbst betrachtet wahrnimmt. Die Alternative wäre entweder hohe Wartzeit, bis der gesamte Film geladen ist oder ständiges Ruckeln, das abhängig von verschiedenen Störfaktoren (z. B. Netzwerk-Interferenzen, Witterung, Signalstärke) mal öfter und mal seltener auftritt. 

 

TCP auf der anderen Seite wird verwendet, wenn man sicherstellen will, dass die versendeten Daten auch tatsächlich ankommen. Es wäre fatal, wenn bspw. nur 70% aller E-Mails oder Whats-App-Nachrichten ankommen würden. Genauso könnte es bei der Verwendung von UDP statt TCP passieren, dass die Nachrichten in unterschiedlicher Reihenfolge beim Empfänger eingehen, weshalb dieser Use-Case für die Verwendung von TCP prädestiniert ist. Auch beim Download von Dateien aus dem Internet ist TCP eine gute Wahl, da Paketverluste und falsche Reihenfolgen berücksichtigt werden, was ansonsten zu korrupten bzw. nicht anzeigbaren Dateien führen kann.

 

Deaktiviert man hingegen den Nagle Algorithmus, dann könnte TCP auch als Transportprotokoll für Online-Games verwendet werden (so verhält es sich z. B. in World of Warcraft).