5.2 TCP und UDP
TCP und UDP transportieren Anwendungsdaten zwischen Prozessen, verwenden Ports und werden in IPv4- oder IPv6-Paketen gekapselt. Ihr Dienstmodell unterscheidet sich jedoch grundlegend: TCP stellt einen verbindungsorientierten, zuverlässigen und geordneten Bytestrom bereit. UDP überträgt einzelne Datagramme ohne eigenen Verbindungsaufbau und ohne Garantie für Zustellung oder Reihenfolge. Die Wahl richtet sich deshalb nach den Anforderungen der Anwendung und nicht nach einer pauschalen Einteilung in „sauber“ oder „schnell“.
Gemeinsame Grundlage, unterschiedlicher Dienst
TCP und UDP arbeiten an den Endsystemen oberhalb von IP. Router müssen für die gewöhnliche Weiterleitung weder eine TCP-Verbindung aufbauen noch UDP-Endpunkte bereitstellen. Firewalls, NAT-Gateways und Lastverteiler können Transportinformationen dennoch auswerten oder verändern.
Beide Protokolle besitzen getrennte 16-Bit-Porträume von 0 bis 65535. Ein TCP-Port und ein UDP-Port mit derselben Nummer sind daher verschiedene Endpunkte. TCP bildet Segmente und UDP Datagramme; beide werden als Nutzlast eines IP-Pakets übertragen.
| Merkmal | TCP | UDP |
|---|---|---|
| Dienstmodell | verbindungsorientierter Bytestrom | verbindungslose einzelne Datagramme |
| Zustellung | Verluste erkennen und durch Wiederholung behandeln | keine Zustellgarantie durch UDP selbst |
| Reihenfolge | geordnet für die Anwendung | kann vertauscht, dupliziert oder verworfen ankommen |
| Nachrichtengrenzen | werden im Bytestrom nicht erhalten | jedes Datagramm bleibt eine eigene Nachricht |
| Flusssteuerung | Empfangsfenster schützt den Empfänger | nicht Bestandteil von UDP |
| Überlastkontrolle | Bestandteil moderner TCP-Implementierungen | muss eine UDP-basierte Anwendung selbst oder durch ein höheres Protokoll lösen |
| Header | mindestens 20 Byte, mit Optionen bis 60 Byte | fest 8 Byte |
| Broadcast / Multicast | nein, TCP ist auf Unicast-Verbindungen ausgelegt | UDP kann über IP auch Broadcast oder Multicast nutzen |
Ports, Dienste und Sockets
Ein Port bezeichnet eine logische Transportadresse, keine physische Buchse. System- beziehungsweise Well-Known Ports reichen von 0 bis 1023, registrierte Ports von 1024 bis 49151 und dynamische oder private Ports von 49152 bis 65535. Ein Betriebssystem kann für kurzlebige Clientverbindungen einen eigenen Teilbereich verwenden.
Die IANA-Zuordnung beschreibt den vorgesehenen Dienst, beweist aber nicht, dass ein Dienst tatsächlich läuft oder durch eine Firewall erreichbar ist. Anwendungen dürfen außerdem abweichende Ports verwenden. Manche Anwendungsprotokolle nutzen bewusst TCP und UDP.
| Port | Transport | Typischer Dienst | Einordnung |
|---|---|---|---|
| 22 | TCP | SSH | verschlüsselte Fernadministration |
| 25 | TCP | SMTP | Übertragung von E-Mail zwischen Mailservern |
| 53 | UDP und TCP | DNS | kurze Anfragen häufig über UDP; TCP unter anderem bei großen Antworten und Zonentransfers |
| 67 / 68 | UDP | DHCPv4 | Server- und Clientport für die Adresskonfiguration |
| 80 | TCP | HTTP | unverschlüsseltes HTTP/1.1 oder HTTP/2 |
| 161 / 162 | meist UDP | SNMP | Abfragen sowie Traps oder Informs |
| 443 | TCP und UDP | HTTPS / HTTP/3 | HTTP/1.1 und HTTP/2 über TCP; HTTP/3 über QUIC und UDP |
TCP- und UDP-Header im direkten Vergleich
Der TCP-Header ist wegen seiner zusätzlichen Aufgaben deutlich umfangreicher. Ohne Optionen umfasst er 20 Byte. TCP-Optionen wie Maximum Segment Size, Window Scale, Selective Acknowledgment oder Zeitstempel können den Header erweitern. Der UDP-Header besteht immer aus vier 16-Bit-Feldern und umfasst genau 8 Byte.
Weniger Headerfelder bedeuten nicht automatisch, dass eine UDP-Anwendung insgesamt schneller oder einfacher ist. Muss sie Zuverlässigkeit, Reihenfolge, Sicherheit oder Überlastkontrolle selbst ergänzen, entsteht die Komplexität oberhalb von UDP. QUIC ist ein wichtiges Beispiel dafür.
Die Felder des TCP-Headers
| Feld | Länge | Bedeutung |
|---|---|---|
| Quellport / Zielport | je 16 Bit | ordnen das Segment den Transportendpunkten zu |
| Sequenznummer | 32 Bit | Nummer des ersten Datenbytes im Segment; SYN belegt ebenfalls eine Sequenznummer |
| Bestätigungsnummer | 32 Bit | nächste Sequenznummer, die der Absender des ACK erwartet |
| Data Offset | 4 Bit | Länge des TCP-Headers in 32-Bit-Wörtern; Mindestwert 5 |
| Reserviert | 4 Bit | für zukünftige Verwendung; ohne definierte Erweiterung null |
| Steuerbits | 8 Bit | CWR, ECE, URG, ACK, PSH, RST, SYN und FIN |
| Window | 16 Bit | vom Empfänger angekündigte Menge weiterer Bytes; Window Scale kann den wirksamen Wert vergrößern |
| Prüfsumme | 16 Bit | prüft TCP-Header, Daten und einen IPv4- beziehungsweise IPv6-Pseudoheader; nicht optional |
| Urgent Pointer | 16 Bit | nur bei gesetztem URG auszuwerten; kennzeichnet die Grenze dringender Daten |
| Optionen / Füllung | 0 bis 40 Byte | unter anderem MSS, Window Scale, SACK und Zeitstempel; Header endet auf einer 32-Bit-Grenze |
TCP-Steuerbits richtig lesen
Die sechs klassischen Flags aus vielen Lehrdarstellungen werden heute durch ECE und CWR für Explicit Congestion Notification ergänzt. Ein einzelnes Flag erklärt noch nicht den vollständigen Zustand; entscheidend sind Kombination, Verbindungsphase, Sequenz- und Bestätigungsnummern.
| Flag | Bedeutung |
|---|---|
| CWR | Sender signalisiert, dass sein Congestion Window als Reaktion auf ECN reduziert wurde. |
| ECE | übermittelt ECN-bezogene Überlastinformationen und wird beim Aufbau auch zur Aushandlung verwendet. |
| URG | Urgent Pointer ist gültig; heute nur selten genutzt. |
| ACK | Bestätigungsnummer ist gültig; nach dem Aufbau bei normalen Segmenten gesetzt. |
| PSH | Empfänger soll bereitstehende Daten zeitnah an die Anwendung weitergeben. |
| RST | Verbindung wird abrupt zurückgesetzt oder ein unerwartetes Segment abgewiesen. |
| SYN | Sequenznummern werden beim Verbindungsaufbau synchronisiert. |
| FIN | Absender hat in dieser Richtung keine weiteren Daten. |
TCP-Verbindung aufbauen und geordnet schließen
Der Client beginnt den Three-Way Handshake mit SYN und einer Initial Sequence Number. Der Server antwortet mit SYN und ACK sowie seiner eigenen Initial Sequence Number. Das abschließende ACK bestätigt die Serversequenz. Erst dann besteht auf beiden Seiten ein abgestimmter Verbindungszustand.
TCP ist vollduplex: Beide Seiten können unabhängig Daten senden. Beim geordneten Schließen beendet FIN jeweils nur eine Senderichtung. ACK und FIN können in getrennten oder kombinierten Segmenten auftreten. RST beendet eine Verbindung dagegen abrupt. Der Zustand TIME_WAIT verhindert am aktiv schließenden Endpunkt, dass verspätete Segmente sofort einer neuen Verbindung mit denselben Endpunkten zugeordnet werden.
Sequenznummern, ACK und Retransmission
TCP nummeriert nicht einfach Pakete, sondern Bytes im Datenstrom. Die Bestätigungsnummer nennt das nächste erwartete Byte. Dadurch bestätigt ein kumulatives ACK alle davor lückenlos empfangenen Bytes. Ein Empfänger darf ACKs verzögern oder mehrere Segmente gemeinsam bestätigen; deshalb folgt nicht zwingend auf jedes Segment sofort ein eigenes ACK.
Fehlende Daten können nach Ablauf eines berechneten Retransmission Timeout erneut gesendet werden. Mehrere gleiche ACKs können eine Lücke früher sichtbar machen und eine schnelle Wiederholung auslösen. Mit Selective Acknowledgment kann der Empfänger zusätzlich bereits vorhandene Bereiche oberhalb der Lücke melden.
Die TCP-Prüfsumme erkennt viele Übertragungsfehler, ist aber weder Verschlüsselung noch kryptografischer Manipulationsschutz. Vertraulichkeit, Authentizität und ein stärkerer Integritätsschutz werden beispielsweise durch TLS oberhalb von TCP ergänzt.
Flusssteuerung und Überlastkontrolle sind nicht dasselbe
Die Flusssteuerung richtet sich nach dem Empfänger. Er meldet mit dem Receive Window, kurz rwnd, wie viele weitere Bytes er aufnehmen kann. Ein Fenster von null stoppt neue Nutzdaten vorübergehend; Window-Probes helfen zu erkennen, wann wieder Platz vorhanden ist.
Die Überlastkontrolle richtet sich nach dem Netzpfad. Der Sender verwaltet dafür ein Congestion Window, kurz cwnd, und reagiert abhängig vom eingesetzten Algorithmus auf ACK-Verhalten, Verlust, Laufzeit und gegebenenfalls ECN. Die praktisch sendbare Datenmenge wird unter anderem durch den kleineren Wert aus rwnd und cwnd begrenzt. Die ältere Pauschalaussage, bei jedem Verlust werde die Zahl aller Pakete einfach halbiert, ist deshalb zu ungenau.
| Mechanismus | Schützt | Zentrale Größe |
|---|---|---|
| Flusssteuerung | Empfangspuffer und Empfänger | rwnd - angekündigtes Empfangsfenster |
| Überlastkontrolle | gemeinsam genutzten Netzpfad | cwnd - senderseitiges Überlastfenster |
| Sendefenster | beide Grenzen | unter anderem Minimum aus rwnd und cwnd |
Sockets verbinden Anwendung und Transport
Ein Socket ist eine vom Betriebssystem bereitgestellte Kommunikationsschnittstelle. Anwendungen erzeugen einen Socket, binden ihn bei Bedarf an eine lokale Adresse und einen Port und lesen oder schreiben darüber Daten. Server binden typischerweise einen bekannten Port, lauschen und nehmen Verbindungen an; Clients verwenden häufig einen dynamisch vergebenen Quellport.
Diese Rollen sind ein häufiges Anwendungsmuster, aber keine allgemeine technische Pflicht jedes Sockets. Peer-to-Peer-Anwendungen können beide Rollen übernehmen. Stream-Sockets werden üblicherweise mit TCP verwendet, Datagram-Sockets mit UDP. Eine TCP-Verbindung wird durch Transportprotokoll, Quell-IP, Quellport, Ziel-IP und Zielport unterschieden.
| Socket-Typ | Typischer Transport | Sicht der Anwendung |
|---|---|---|
| Stream | TCP | geordneter Bytestrom ohne erhaltene Nachrichtengrenzen |
| Datagram | UDP | einzelne Nachrichten mit erhaltenen Datagrammgrenzen |
UDP-Header und Prüfsumme
Der UDP-Header enthält Quellport, Zielport, Länge und Prüfsumme. Das Längenfeld umfasst Header und Nutzdaten. Der kleinste Wert ist deshalb 8 Byte. Das theoretische Maximum eines gewöhnlichen UDP-Datagramms wird durch das 16-Bit-Längenfeld bestimmt; praktisch begrenzen Pfad-MTU, IP-Header und Anwendungsprotokoll die sinnvolle Größe.
Bei IPv4 darf eine UDP-Prüfsumme als null übertragen werden und ist dann deaktiviert. Bei gewöhnlichem UDP über IPv6 ist die Prüfsumme erforderlich. Sie deckt UDP-Header, Nutzdaten und einen IP-Pseudoheader ab, erkennt aber keinen Verlust eines vollständigen Datagramms und erzeugt keine Wiederholung.
| Feld | Länge | Bedeutung |
|---|---|---|
| Quellport | 16 Bit | Port des Absenders; darf in besonderen Fällen null sein |
| Zielport | 16 Bit | Port des vorgesehenen Empfängers |
| Länge | 16 Bit | Gesamtlänge von UDP-Header und Nutzdaten |
| Prüfsumme | 16 Bit | Fehlererkennung über Header, Daten und IP-Pseudoheader |
MTU, MSS und Fragmentierung
Die häufige Ethernet-MTU von 1500 Byte beschreibt die maximale Größe des IP-Pakets im Ethernet-Frame, nicht die maximale Größe eines TCP-Segments. Ohne IP- oder TCP-Optionen bleiben bei IPv4 typischerweise 1460 Byte und bei IPv6 1440 Byte TCP-Nutzdaten. Die Maximum Segment Size, kurz MSS, bezieht sich auf die TCP-Nutzdaten und wird beim Verbindungsaufbau angekündigt.
UDP besitzt keine MSS-Aushandlung. Eine Anwendung sollte Datagramme an die zulässige Größe des Pfades anpassen. Zu große IP-Pakete können bei IPv4 fragmentiert werden; bei IPv6 fragmentieren Router nicht. Fragmentverlust macht das gesamte ursprüngliche Datagramm unbrauchbar. Die historische 512-Byte-Grenze betrifft klassische DNS-Antworten ohne EDNS und ist keine allgemeine UDP-Grenze.
| Größe bei Ethernet-MTU 1500 | IPv4 ohne Optionen | IPv6 ohne Erweiterungsheader |
|---|---|---|
| IP-Header | 20 Byte | 40 Byte |
| TCP-Header ohne Optionen | 20 Byte | 20 Byte |
| typische TCP-MSS | 1460 Byte | 1440 Byte |
| UDP-Nutzdaten ohne Fragmentierung | 1472 Byte | 1452 Byte |
Welches Protokoll passt zur Anwendung?
TCP eignet sich, wenn ein geordneter zuverlässiger Bytestrom gewünscht ist und die Anwendung diese Funktionen nicht selbst implementieren soll. UDP eignet sich für kompakte Anfrage-Antwort-Protokolle, Broadcast oder Multicast und Anwendungen, die Aktualität höher bewerten als die Wiederholung veralteter Daten. Echtzeitverkehr kann Paketverluste tolerieren, benötigt aber weiterhin eine kontrollierte Senderate.
QUIC zeigt, dass UDP auch als Träger für ein komplexes Transportprotokoll dienen kann. QUIC ergänzt unter anderem sichere Verbindungen, zuverlässige Streams, Verlustbehandlung und Überlastkontrolle und bildet die Transportbasis von HTTP/3. Die Aussage „UDP ist immer schneller“ ist daher fachlich nicht haltbar; entscheidend sind Aufbau, Datenmenge, Netzbedingungen und Protokollfunktionen der gesamten Anwendung.
| Anforderung | Naheliegende Wahl | Beispiel |
|---|---|---|
| zuverlässiger geordneter Bytestrom | TCP | SSH, SMTP, HTTP/1.1 und HTTP/2 |
| kleine einzelne Anfrage und Antwort | UDP | viele DNS-Abfragen |
| Broadcast oder Multicast | UDP | DHCPv4 oder ausgewählte Streaming-/Discovery-Verfahren |
| moderne sichere Streams mit geringer Aufbauverzögerung | QUIC über UDP | HTTP/3 |
| Echtzeitdaten mit eigener Verlustbehandlung | häufig UDP-basiert | Sprach- oder Videokommunikation |
TCP und UDP bei der Fehlersuche
| Beobachtung | Mögliche Bedeutung | Nächster Prüfschritt |
|---|---|---|
| SYN ohne SYN-ACK | Dienst nicht erreichbar, Filter, falscher Port oder fehlender Rückweg | Listener, Firewall, Routing und Mitschnitt an beiden Enden prüfen |
| sofortiges RST | kein Listener oder Verbindung bewusst abgewiesen | Dienststatus und Zielport prüfen |
| viele Retransmissions | Verlust, starke Verzögerung oder fehlerhafter Rückweg | Paketpfad, Interfacezähler, RTT und MTU untersuchen |
| Zero Window | Empfangsanwendung liest zu langsam oder Puffer ist gefüllt | Empfängerressourcen und Anwendung analysieren |
| UDP-Anfrage ohne Antwort | Verlust, Filter, falscher Port oder Anwendungsfehler | beide Richtungen mitschneiden und Anwendungsprotokoll prüfen |
| ICMP Port Unreachable | am Ziel ist gewöhnlich kein passender UDP-Empfänger vorhanden | Dienst und Portzuordnung kontrollieren |
Quellen zur fachlichen Prüfung
- RFC Editor: RFC 9293 - Transmission Control Protocol
- RFC Editor: RFC 768 - User Datagram Protocol
- RFC Editor: RFC 1122 - Requirements for Internet Hosts
- RFC Editor: RFC 5681 - TCP Congestion Control
- RFC Editor: RFC 7323 - TCP Extensions for High Performance
- RFC Editor: RFC 8200 - Internet Protocol Version 6
- RFC Editor: RFC 9000 - QUIC Transport Protocol
- IANA: Service Name and Transport Protocol Port Number Registry
PDF-Download nach Anmeldung
Zum Schutz der Unterrichtsunterlagen steht der PDF-Download ausschließlich angemeldeten Nutzern zur Verfügung.
