Transportprotokolle – TCP und UDP

Die TCP/IP ist die Protokollfamilie, über die grundsätzlich jeglicher Datenverkehr auf der Datenautobahn Internet abgewickelt wird. TCP/IP basiert auf einem eigenen Referenzmodell und setzt sich aus den Protokollen Transmission Control Protocol (TCP) und Internet Protocol (IP) zusammen. TCP ist ein Protokoll der Transportschicht im OSI-Referenzmodell und wurde bei der Entwicklung auf zuverlässige bzw. verlustfreie Übertragung von Nutzdaten ausgerichtet.

TCP und IP errichten im Zusammenspiel eine Punkt-zu-Punkt-Verbindung über Sockets. Über IP-Adressen können Endgeräte zum Zeitpunkt der Verbindung eindeutig identifiziert werden. IP-Adressen alleine reichen jedoch nicht aus, da die meisten Endgeräte (z. B. ein Tablet-PC) gleichzeitig eine Vielzahl an Verbindungen (über eine IP-Adresse) aufbauen können. Ein Verbindungspunkt wird als Socket bezeichnet und erst durch weitere Adress-Zusätze definiert: Neben den IP-Adressen (Sender, Empfänger) gehören zu einem Socket auch Portnummern (auf der Anwendungsschicht, z. B. 80 für HTTP-Verbindungen) für Sender und Empfänger sowie Angaben über welches Protokoll kommuniziert werden soll. Ein Socket ist demnach ein Verbindungspunkt, der Sender- und Empfänger-Adressen sowie die Übertragungsform kennt. Die socket-bezogene Kommunikation geschieht auf Ebene der Transportschicht. Dennoch muss TCP nicht zwangsläufig mit IP zusammen in Erscheinung treten, denn TCP-Pakete können auch über andere Netzwerkprotokolle (Vermittlungsschicht) übertragen werden.

Das User Datagram Protocol (UDP) ist ebenfalls wie TCP ein Transportprotokoll für Netzwerkverbindungen, steht jedoch nicht in direkter Konkurrenz zum TCP, da es einen ganz anderen Zweck erfüllt -> Die schnellstmögliche Übertragung von Nutzdaten.

Da sowohl TCP als auch UDP auch mit anderen Protokollen der Vermittlungsschicht zusammenarbeiten können, also nicht nur auf das Netzwerkprotokoll IP angewiesen sind, können TCP und UDP auch als unabhängig von den Protokollfamilien TCP/IP bzw. UDP/IP betrachtet werden.

Transmission Control Protocol (TCP)

TCP ist in RFC 793 und RFC 1323 definiert und ein Transportsystem, dass auf der Transportschicht des OSI-Referenzmodells arbeitet. TCP arbeitet verbindungsorientiert, zuverlässig und bidirektional zwischen zwei Endpunkten. Mit der Verwendung von TCP wird erst eine Verbindung zwischen Sender und Empfänger aufgebaut. Sender und Empfänger stellen bei der Verbindungsherstellung Sockets bereit. TCP arbeitet mit einer verkehrsabhängigen Datenflusssteuerung. Die Datenübertragung erfolgt paketweise mit Absicherung nach dem Prinzip „Einschreiben mit Rückschein“.

TCP muss nicht unbedingt mit IP gemeinsam eingesetzt werden, auch andere Protokolle der Vermittlungsschicht könnten eingesetzt werden. In der Praxis ist TCP jedoch nur sehr selten ohne IP im Einsatz, so dass häufig (jedoch fälschlicherweise) TCP/IP als eigenes Protokoll und nicht als Protokollfamilie bezeichnet wird.

Das TCP-Segment ist selbst dann, wenn es keine Nutzdaten enthält, recht umfangreich, da neben den eigentlichen Nutzdaten eine Vielzahl an Feldern im Header enthalten sind. Die Felder enthalten Metadaten, die jeweils entweder den sicheren Transport oder die bidirektionale Verbindung ermöglichen. Beim Auf- und Abbau der Verbindungen enthalten TCP-Segmente keine Nutzdaten, in solchen Fällen sind lediglich die Header-Informationen von Bedeutung.

  1. Quellport gibt den Port des Senders an.
  2. Zielport gibt den Port des Empfängers an.
  3. Sequenznummer gibt die Byteposition des ersten Datenbytes des jeweiligen Segments innerhalb des gesamten Datenstromes an. Ist das TCP-Segment beispielsweise 1024 Bytes lang, ist die Sequenznummer des nächsten TCP-Segments um 1024 Bytes größer. Ist der Maximalwert von 232 -1 erreicht, fängt die Zählung wieder bei 0 an.
  4. Bestätigungsnummer (Acknowledgment Number) ist die Sequenznummer des nächsten TCP-Segments, den der Empfänger erwartet.
  5. Kopflänge (Data Offset) gibt die Anzahl der 32-Bit-Worte des gesamten Headers an. Mindestwert ist 5 (da 5 * 32 Bits = 160 Bits;  160 Bits / 8 = 20 Bytes), Höchstwert ist 15 (für 60 Bytes).
  6. Reserviertes Feld wird nicht verwendet, Wert = 0.
  7. Sechs Control-Flags (Einstellungswerte):
    1. U: Urgent-Flag (Dringlichkeit). Wird selten verwendet, zum Beispiel aber für das Signal zum schnellen Abbruch einer Verbindung geeignet.
    2. A: Acknowledgement-Flag (Bestätigungs-Flag). Die Bestätigungsnummer ist nur gültig, wenn dieses Flag gesetzt wurde.
    3. P: PSH-Flag gibt an, ob auf Empfänger- und Sender-Seite gepuffert werden sollen. Der Sender puffert Daten, um mehrere kleine Übertragungen statt einer großen zu tätigen. Auf der anderen Seite puffert der Sender empfangene Segmente, um diese wieder zusammen zu fügen und als großes ganzes Datenpaket weiter zu reichen.
    4. R: Reset-Flag wird gesetzt, wenn eine Verbindung abgebrochen werden soll.
    5. S: SYN-Flag dient zur Synchronisierung der Sequenznummern. Wird für den Verbindungsaufbau verwendet. Der Server antwortet bei erfolgreichem Verbindungsaufbau mit SYN+ACK (S+A), andernfalls mit Reset (R).
    6. F: FIN-Flag (Finish) ist das Schluss-Flag. Markiert die Freigabe der Verbindung und bedeutet ferner, dass der Empfänger keine weiteren Segmente erwarten muss.
  8. Fenster (Window) gibt die Anzahl an Bytes an, wie viele Daten der Sender aussenden darf, ohne dass er eine Bestätigung vom Empfänger erhält.
  9. Prüfsumme  (Checksum) dient der Erkennung von Übertragungsfehlern. Die Prüfsumme besteht aus der TCP-Protokollkennung (0x0006), der Länge des TCP-Segments (Header + Nutzdaten) sowie (sofern IP verwendet wird) aus den  IP-Adressen (Sender, Empfänger).
  10. Zeiger auf Vorrangdaten (Urgent Pointer) zeigt die Position des ersten Bytes nach den Vorrangdaten (Urgent Data) an. Der Startpunkt der Vorrangdaten liegt immer unmittelbar nach dem Header und ist somit bekannt.
  11. Optionen sind weitere Daten, die maximal 40 Byte lang sein dürfen.
  12. Daten sind die eigentlichen Nutzdaten, welche die zu übermittelnden Kerninformationen enthalten. Die Daten können auch leer (Null) sein, wenn die Header-Informationen genügen um Verbindungen auf- oder abzubauen.

User Datagram Protocol (UDP)

Eine Alternative zum TCP ist das User Datagram Protocol (UDP), welches in der Regel ebenfalls mit IP zusammen eingesetzt wird. UDP wurde ab 1977 als Alternative zum TCP entwickelt. UDP/IP bietet den Vorteil einer sehr schnellen Datenübertragrung, so dass es sich sehr gut für das Streaming (z. B. Bild- und Tonwiedergabe) oder der Internettelefonie (Voice over IP) eignet. Diesen Vorteil schlägt UDP aus der Verbindungslosigkeit. UDP ist ein unsicheres und unzuverlässiges Protokoll, welches rein auf die schnelle Datenübertragung ausgelegt ist und zudem nur simplex arbeitet (beschränkt auf eine Richtung vom Sender zum Empfänger). Da jedoch keine verlorenen Datenpakete erneut angefordert werden, ist UDP immer dann nicht geeignet, wenn die Vollständigkeit der zu empfangenen Daten höchste Bedeutung hat. UDP bietet zwar optional die Möglichkeit der Integritätsüberprüfung durch Prüfsummen an (bei TCP obligatorisch), garantiert jedoch nicht, dass alle Datenpakete ankommen, die richtige Reihenfolge eingehalten wird oder Pakete nur einmal beim Empfänger eintreffen. Außerdem ist es bei der Übertragung mittels UDP möglich, dass der Socket des Senders schon wieder verschwunden ist, wenn das Packet beim Empfänger ankommt und erst dadurch die Erzeugung eines Sockets beim Empfänger veranlasst wird. Da nicht vollständig übertragene Dateien generell unbrauchbar sind, ist UDP in der Internetkommunikation nur selten eine Alternative zum TCP.

Der UDP-Header ist nur 8 Byte lang: 16 Bit für den Quell-Port, 16 Bit für den Ziel-Port, 16 Bit für die Länge des gesamten UDP-Datagramms sowie 16 Bit für die Prüfsumme, welche jedoch optional aufgefüllt werden kann.

1 Gedanke zu „Transportprotokolle – TCP und UDP“

Kommentare sind geschlossen.