Was wissen wir eigentlich über TCP vs UDP? Internet, Blockchain, Cloud-Computing: Ganz gleich, um welchen Bereich es geht, Computer entfalten ihre volle Wirkung erst, wenn sie miteinander verbunden sind. Daten zu versenden und dabei sicherzustellen, dass sie vollständig beim Empfänger ankommen, erfordert allerdings ein komplexes Zusammenspiel aus Netzwerken und Knotenpunkten. Bevor wir uns die Besonderheiten von Transport Control Protocol (TCP) und User Datagram Protocol (UDP) im Detail ansehen, lohnt sich ein Schritt zurück.
Alle Netzwerkmodelle beschreiben letztlich denselben Vorgang: wie Datenbits als elektrischer Impuls über Kabel oder als Lichtmuster über Glasfaserkabel verschickt werden. Und wie diese Datenbits auf der Empfängerseite wieder entgegengenommen und zusammengesetzt werden.
Daten von einer Anwendung auf einem Computer zu einer anderen zu übertragen, wäre technisch auch mit einem einzigen Protokoll möglich. Diese Methode wäre jedoch extrem anfällig: Jede Änderung an der Hardware würde bedeuten, dass die gesamte Anwendungs- und Protokollsoftware angepasst werden müsste. Um die nötige Flexibilität beim Verbinden von Geräten zu erreichen, arbeiten Netzwerke mit geschichteten Stapeln unterschiedlicher Protokolle. Jede Schicht im Stapel hat eine bestimmte Funktion und kommuniziert mit den direkt darüber- und darunterliegenden Schichten.
Das umfassendste Rahmenwerk ist heute das Open System Interconnection (OSI)-Modell. UDP und TCP verändern einige der beteiligten Schichten, deshalb ist das OSI-Modell der beste Ausgangspunkt für eine tiefere Betrachtung.
Das OSI-Modell im Schnelldurchlauf
Bitübertragungsschicht
Auf der grundlegendsten Ebene besteht diese Schicht aus den mechanischen Elementen des Datenversands und -empfangs. Hier wird festgelegt, wie Pins und Kabel die Nullen und Einsen in ein Signal kodieren, das anschließend als Licht-, elektrisches oder Funksignal an das lokale Medium weitergegeben wird.
Sicherungsschicht (Data Link Layer, DLL)
Die Sicherungsschicht fungiert als Vermittler zwischen den physischen Komponenten eines Geräts und den netzwerkbasierten Datenpaketen. Die Daten in der Bitübertragungsschicht sind im Grunde unstrukturiert, und es ist die Aufgabe dieser Schicht, sie in Frames zu verpacken. Dabei wird der kontinuierliche Datenstrom in Gruppen zusammengefasst, ein Vorgang, der Multiplexing genannt wird. Jedes Datenpaket erhält hier einen Header, der Absender und Ziel kennzeichnet.
Vermittlungsschicht
Sobald die Datenpakete bereitstehen, kann die Vermittlungsschicht (auch Internetschicht) sie von einem Gerät zu einem anderen über ein Netzwerk leiten. Dazu erhält jedes Gerät eine eindeutige IP-Adresse, über die es identifiziert wird und anhand derer der Weg bestimmt wird, den die Pakete nehmen sollen.
Transportschicht
Die Transportschicht liegt zwischen Vermittlungs- und Sitzungsschicht und kümmert sich darum, Nachrichten an einen Host zuzustellen. Sie sorgt dafür, dass Anwendungen und Dienste schneller laufen, weil die nachgelagerten Prozesse die individuellen Eigenheiten des jeweiligen Kommunikationsnetzes nicht berücksichtigen müssen. Diese Schicht bildet die Grundlage der UDP- und TCP-Protokolle, zu denen wir gleich kommen.
Sitzungsschicht
Die Transportschicht interessiert es nicht, ob zwei Computer bereits miteinander kommuniziert haben, sie schiebt lediglich Pakete hin und her. Die Sitzungsschicht ordnet den Datenverkehr in einen logischen Anfang und ein logisches Ende.
Darstellungsschicht
Das Volumen dieser Datenpakete kann sehr hoch sein. Die Darstellungsschicht kümmert sich vor allem darum, diese Pakete zu kodieren und zu komprimieren, um ihren Bandbreitenbedarf zu senken, bevor sie das Gerät des Absenders verlassen.
Anwendungsschicht
Schließlich müssen die empfangenen Daten (oder die Daten, die gleich versendet werden) an die Benutzer:innen weitergegeben werden. Das OSI-Modell ist ein nützliches Modell, aber bedenken Sie: Kein modernes Protokoll folgt seinen genauen Konturen über alle 7 Schichten hinweg. Die Protokolle TCP und UDP konzentrieren sich beispielsweise ausschließlich auf die Vermittlungs- und die Transportschicht.
Was ist TCP?
Das Transport Control Protocol war im Grunde das erste Netzwerkprotokoll. Es entstand 1981, kurz nach den Anfängen des Internets, und war in seiner ersten Form darauf ausgerichtet, Daten in Pakete zu segmentieren. In den Jahrzehnten danach hat es sich zum TCP/IP-Stack weiterentwickelt, der heute der Standard ist. Die Pakete innerhalb von TCP verteilen sich auf 4 Schichten: Sicherungsschicht, Vermittlungsschicht, Transportschicht und Anwendungsschicht.
Wie der Name schon andeutet, hat TCP den größten Einfluss auf der Transportschicht. Bevor Daten versendet werden, baut TCP über einen Drei-Wege-Handshake eine kurze Verbindung zwischen zwei Netzwerkendpunkten auf.
Zuerst initiiert der Client die Verbindung mit einer SYN-Nachricht (synchronize) in Form einer Zufallszahl. Der Server bestätigt den Empfang mit einem SYN-ACK, das lediglich eine 1 an die Zahl des Clients anhängt. Dieses SYN-ACK wiederum bestätigt der Client mit einer ACK-Nachricht. Dieser virtuelle Handshake stellt sicher, dass Sender und Empfänger kommunikationsbereit sind und wissen, dass der Kanal steht. Ist der empfangende Port offline oder nicht erreichbar, tritt an die Stelle der ACK-Nachricht ein TCP-RST-Paket (reset).
Nicht nur der Verbindungsaufbau beruht auf einer beidseitigen Bestätigung: Auch der Abbau erfolgt zweiseitig und bestätigt, dass ein Client oder Server das Senden von Daten abgeschlossen hat. Nach demselben Muster schickt der Client, sobald alle relevanten Daten übertragen wurden, ein FIN-Segment in Form seiner eigenen Sequenznummer. Der Server bestätigt es erneut. Wenn der Server alle Daten erhalten hat, sendet er seinerseits ein FIN-Paket, das bestätigt wird, woraufhin die Verbindung beendet ist.
Die Bedeutung von IP
Entscheidend für diesen Ablauf ist, dass für jede Verbindung vor dem Versand ein Ziel festgelegt sein muss. Erst danach kann der TCP-Handshake stattfinden. Genau hier kommt das Internet Protocol (IP) als die andere Seite der TCP/IP-Medaille ins Spiel.
Jedes Gerät und jede Domain im Internet hat eine eindeutige IP-Adresse. Im Header jedes Datenpakets steht die IP-Adresse des vorgesehenen Empfängers, sodass die Daten dort ankommen, wo sie gebraucht werden. Sobald die IP-Adresse feststeht, kann der TCP-Prozess die Datenübertragung starten. Die empfangenen Daten müssen allerdings am richtigen Port landen, und genau deshalb enthalten TCP-Pakete Port-Informationen. Stellen Sie sich die IP-Adresse als Postleitzahl vor und die TCP-Port-Daten als konkrete Hausnummer. Außerdem enthalten TCP-Pakete eine Sequenznummer, vergleichbar mit nummerierten Seiten in einem Brief; sie gibt an, in welcher Reihenfolge die Pakete versendet werden.
TCP/IP hat sich zum Standard für sichere und zuverlässige Datenübertragung über das Internet entwickelt. Ein großer Vorteil des IP-Ansatzes ist seine Flexibilität, und TCP ist nicht der einzige Weg, Daten von A nach B zu transportieren.
Was ist UDP?
Das User Datagram Protocol (UDP) ist ein schlankes Transportprotokoll, das auf den Grundlagen von IP aufsetzt. Statt des aufwendigen TCP-Handshakes verschickt UDP jedoch kleine, voneinander unabhängige Pakete, sogenannte Datagramme, ohne vorher eine Verbindung abzugleichen. Das mag riskant wirken, doch UDP ist von vornherein darauf ausgelegt, Informationen zu verlieren, ohne dass die Kommunikation deshalb zusammenbricht.
Jedes Datagramm ist eine eigenständige Einheit und enthält keine Informationen über die Datenteile davor oder danach. So muss ein Server keinen Rückstau verzögerter Pakete abarbeiten, sondern kann Anfragen vollkommen linear bearbeiten. Unterstützt wird das durch die Größe der UDP-Pakete. Man denke an die integrierte Fehlerprüfung und die fortlaufende Nummerierung bei TCP-Paketen: Weil UDP all diese optionalen Zusätze weglässt, sind UDP-Datagramme nur einen Bruchteil so groß. Diese schlanken Dateneinheiten lassen sich dann blitzschnell verarbeiten.
Deshalb kommt UDP in Diensten zum Einsatz, die eine nahezu echtzeitnahe Verarbeitung benötigen. Denken Sie an Videostreaming und Computerspiele: Sie benötigen womöglich sehr viele UDP-Datagramme, aber deren Tempo ist für eine gute Benutzererfahrung unverzichtbar. Und wenn ein Paket verloren geht oder nicht ankommt, besteht die reale Folge vielleicht aus einem fehlenden Pixel für die Dauer eines Frames. Auch Domain Name Service (DNS)-Anfragen, die einen Domainnamen mit einer erkennbaren Webadresse verknüpfen, nutzen UDP. Diese Anfragen sind winzig und bestehen aus je einem Anfrage-Antwort-Paar, müssen aber schnell ablaufen, was sie zu einem naheliegenden Anwendungsfall für UDP macht.
TCP und UDP im Funktionsvergleich
| Funktion | UDP (User Datagram Protocol) | TCP (Transmission Control Protocol) |
| Verbindung | Verbindungslos, baut vor dem Senden von Daten keine Verbindung auf. | Verbindungsorientiert, baut vor der Datenübertragung einen Drei-Wege-Handshake auf. |
| Zuverlässigkeit | Garantiert weder Zustellung noch Reihenfolge noch Fehlerprüfung. | Die Paketarchitektur stellt die Zustellung in der richtigen Reihenfolge sicher. |
| Geschwindigkeit | Schnell. | Langsamer als UDP, bedingt durch die umfangreichen Mechanismen zur Fehlerprüfung. |
| Datenflusssteuerung | Keine Flusskontrolle; sendet Daten so schnell, wie der Absender sie erzeugen und das Netzwerk sie verarbeiten kann. | Die Flusskontrolle erfolgt über Windowing-Verfahren, die den Datenfluss anpassen. |
| Einsatz | Wird für zeitkritische Anwendungen genutzt, bei denen ein gewisser Datenverlust verkraftbar ist (z. B. Live-Audio- und -Videostreaming). | Wird dort genutzt, wo eine zuverlässige Datenzustellung entscheidend ist (z. B. Surfen im Web, E-Mail). |
| Header-Größe | Kleinerer Header (8 Byte). | Größerer Header (mindestens 20 Byte). |
| Sequenzierung | Nummeriert Datenpakete nicht fortlaufend. | Nummeriert Datenpakete fortlaufend, um eine geordnete Zustellung zu gewährleisten. |
Zum Schluss noch ein paar Gedanken zur Sicherheit
Wenn Sie sich in Ihren eigenen Projekten zwischen UDP und TCP entscheiden, denken Sie daran: Das Tempo von UDP macht es zwar attraktiv, es ist aber von Natur aus anfälliger für Sicherheitsprobleme wie Spoofing und Denial-of-Service-Angriffe. Der Handshake-Mechanismus von TCP verhindert, dass gefälschte IP-Adressen Schaden anrichten, doch auch TCP ist nicht immun. In den vergangenen Jahren haben DDoS-Amplification-Angriffe genau dieses Hin und Her gekapert, um einen Server dazu zu bringen, auf eine abschließende ACK-Nachricht zu warten, die nie eintrifft.
Eine anschauliche Erklärung der Unterschiede zwischen TCP und UDP finden Sie hier: TCP vs. UDP: Worin liegt der Unterschied?