TCP oder UDP?

Ethernet und IP sind für die Netzwerkkommunikation meistens gesetzt. Aber welches Protokoll soll auf der Transportschicht verwendet werden, TCP oder UDP? Ein Leitfaden.

Unterschiede zwischen TCP und UDP

Die Transportschicht-Protokolle TCP (Transmission Control Protocol) und UDP (User Datagram Protocol) haben einen unterschiedlichen Charakter. Mit TCP wird verbindungsorientiert kommuniziert, mit UDP verbindungslos. Bei der verbindungsorientierten Kommunikation wird zwischen den zwei Teilnehmern eine logische Verbindung aufgebaut, die Daten werden als Datenstrom gesendet. Bei der verbindungslosen Kommunikation haben die einzelnen Datenpakete keine logische Zusammengehörigkeit.

TCP stellt eine korrekte Übertragung sicher. Es berechnet eine Checksumme zur Überprüfung der Daten, bildet aus den zu übertragenden Daten automatisch Portionen (Segmente) und sendet nicht korrekt übertragene Pakete selbständig nach. Durch die Flusssteuerung (Flow Control) wird sichergestellt, dass nur soviel Daten gesendet werden, wie der Empfänger verarbeiten kann. Über die aufgebaute Verbindung können beide Kommunikationspartner gleichberechtigt Daten übertragen, in Vollduplex.

Erkauft wird diese sehr zuverlässige Übertragung mit TCP mit einem grösseren Overhead. Selbst bei kleinsten Datenmengen muss zu deren Übertragung zuerst die Verbindung auf- und am Schluss abgebaut werden (Handshake), woraus eine Verzögerung bis zum Sendebeginn der Nutzdaten resultiert. Zudem vergrössern die für die Sicherungsmechanismen notwendigen Datenfelder den Header, was bei kleinen Datenmengen zu einem Missverhältnis zwischen Headergrösse und Grösse der transportierten Nutzdaten führt. Drittens führt ein häufiger Verlust von Paketen durch die automatische Sendewiederholung zu einer erhöhten Netzbelastung.

UDP stellt die korrekte Übertragung selber nicht sicher. Die Aufteilung in geeignete Portionen muss der Versender selber übernehmen, verlorene Pakete werden nicht automatisch nachgesandt und selbst die Checksumme ist optional. Auch ein mehrmaliges Empfangen desselben Datenpakets wird nicht erkannt. Dadurch ist der Header und somit der Übertragungs-Overhead wesentlich kleiner. Weil kein  Verbindungsaufbau nötig ist, kann zudem sofort mit dem Übertragen der Nutzdaten begonnen werden, ohne Zeitverlust.

Übersicht der Unterschiede:

 

TCP

UDP

Kommunikationstyp

verbindungsorientiert

verbindungslos

Charakteristik

Datenstrom

Einzelpakete

Dateneinheit

Segment

Datagram

Checksumme

Ja

Optional

Nachsenden verlorener Pakete

Ja

Nein

Segmentierung

Ja

Nein

Flusskontrolle

Ja

Nein

Overhead

Headerlänge >= 20 Bytes
3-Weg-Handshake

Headerlänge 8 Bytes

In welchem Fall eignet sich nun welches Transport-Protokoll besser? Hier einige Übertragungsarten unterschiedlicher Charakteristik mit meiner Empfehlung:

Fall 1

Charakteristik:

Sichere, bitgenaue Übertragung einer grösseren, zusammenhängenden Datenmenge zwischen zwei Kommunikationspartnern. Zeitverhalten und Netzauslastung sind zweitrangig.

Beispiel:

Datei-Transfer, Website-Transfer

Empfehlung:

TCP

Vorteile:

Sichere, bitgenaue Übertragung bei kleinem Implementationsaufwand. Overhead für Verbindungsaufbau hat kleinen prozentualen Anteil an ganzer Kommunikation.

Fall 2

Charakteristik:

Übertragung von zeitkritischen aber nicht zwingend bitgenauen Daten. Zeitverhalten und Netzauslastung wichtiger als die korrekte Übertragung jedes einzelnen Bits.

Beispiel:

Multimediadaten, IP-Telefonie

Empfehlung:

UDP

Vorteile:

Kleiner Overhead, gutes Zeitverhalten, keine erhöhte Netzauslastung bei verlorenen Datenpaketen.

Fall 3

Charakteristik:

Bitgenaue Übertragung einer kleineren Datenmenge. Mehrfaches Empfangen desselben Pakets ohne Folgen.

Beispiel:

Domain-Namensauflösung über DNS, Uhrzeitsynchronisierung NTP, Netzwerk-Scan

Empfehlung:

UDP mit Checksumme, erneutes Anfordern bei nicht empfangener Antwort auf Applikationsebene lösen.

Vorteile:

Kleiner Overhead, geringe Netzauslastung.

Fall 4

Charakteristik:

Sichere, bitgenaue Übertragung von kleinen Datenmengen, abwechslungsweise zwischen verschiedenen Kommunikationspartnern (Mesh). Zeitverhalten und Netzauslastung wichtig.

Beispiel:

Industrie-Netzwerk von Steuergeräten, z.B. mit Master/Slave Zugriff

Empfehlung:

UDP mit Checksumme

Datenverlust, mehrfaches Empfangen sowie Empfangen in falscher Reihenfolge in höher liegendem Protokoll bzw. auf Applikationsebene behandeln (bei Master/Slave Zugriff einfach).

Vorteile:

Kleiner Overhead, gutes Zeitverhalten, geringe Netzauslastung.

Bei TCP wären für die Verbindung zu wechselweise anderen Netzteilnehmern ein immer neuer Auf-/Abbau der Verbindung oder mehrere Sockets nötig. Das entfällt mit UDP.

Weiterführende Information

ISO/OSI Schichtenmodell:

Deutsche Wikipedia zum Thema "OSI-Modell"

Elektronik Kompendium zum Thema "ISO/OSI-Modell"

TCP – Transmission Control Protocol:

Deutsche Wikipedia zum Thema "Transmission Control Protocol"

Elektronik Kompendium zum Thema "TCP - Transmission Control Protocol"

UDP – User Datagram Protocol:

Deutsche Wikipedia zum Thema "User Datagram Protocol"

Elektronik Kompendium zum Thema "UDP - User Datagram Protocol"

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.