TCP oder UDP?
- Details
- Veröffentlicht: Donnerstag, 19. Dezember 2013 15:23
- Geschrieben von David Schmider
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 |
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"