In der Kommunikation im Internet werden verschiedene Verfahren verwendet, um Daten zum Gegenüber zu bringen. Zu den wichtigsten gehören TCP und UDP.
TCP ist ein Kommunikationsverfahren, das Wert darauf legt, Daten korrekt zuzustellen. UDP ist ein Kommunikationsverfahren, das den Mechanismus selbst leicht hält und Verzögerung leichter reduzieren kann.
TCP und UDP vergleicht man jedoch nicht danach, "welches überlegen ist". Je nach Kommunikationszweck wird das passende Verfahren verwendet.
Was ist TCP?
TCP ist ein Kommunikationsverfahren, das Zuverlässigkeit betont.
Bei TCP wird eine Verbindung mit dem Kommunikationspartner aufgebaut, und über diese Verbindung werden Daten gesendet und empfangen. Es wird bestätigt, ob gesendete Daten angekommen sind, und unterwegs verlorene Daten werden erneut gesendet.
Im Netzwerk kommen Daten außerdem nicht zwingend in der Reihenfolge an, in der sie gesendet wurden. TCP versieht Daten mit Informationen zur Reihenfolgenverwaltung und bringt sie auf der Empfangsseite wieder in die richtige Reihenfolge.
Deshalb eignet sich TCP für Kommunikation, bei der fehlende oder vertauschte Daten problematisch wären.
Login-Verarbeitung, Dateiübertragung, E-Mail-Versand und Webkommunikation über HTTP/1.1 oder HTTP/2 brauchen zum Beispiel korrekte Daten. Wenn ein Teil von Logindaten fehlt oder ein Teil einer Datei beschädigt ist, lässt sich die Verarbeitung nicht korrekt durchführen.
TCP führt Bestätigungen, erneutes Senden und andere Steuerung aus, um Zuverlässigkeit zu erreichen. Dadurch ist die Steuerung umfangreicher als bei UDP, aber für Kommunikation, die Daten in richtiger Reihenfolge verlässlich behandeln muss, ist es wichtig.
TCP verwaltet "damit es korrekt ankommt"
TCP sendet nicht einfach nur Daten, sondern verwaltet, dass gesendete Daten als Kommunikation nutzbar werden.
Konkret hat TCP folgende Eigenschaften.
Eigenschaft
Inhalt
Verbindungsorientiert
Baut vor dem Senden und Empfangen eine Verbindung mit dem Gegenüber auf
Zustellbestätigung
Prüft, ob gesendete Daten angekommen sind
Erneutes Senden
Sendet nicht angekommene Daten bei Bedarf erneut
Reihenfolgenkontrolle
Ordnet Daten, die in anderer Reihenfolge ankamen, korrekt ein
Umgang mit Duplikaten
Sortiert mehrfach angekommene gleiche Daten aus
Durch diese Mechanismen stellt TCP Anwendungen einen geordneten und zuverlässigen Datenstrom bereit.
TCP erhält jedoch nicht die "einzelne Dateneinheit", die eine Anwendung einmal gesendet hat. TCP behandelt Daten als fortlaufende Bytefolge.
Deshalb muss die Anwendungsschicht gesondert festlegen, wo eine Nachricht beginnt und endet. Höhere Protokolle wie HTTP besitzen dafür eigene Regeln.
Was ist UDP?
UDP ist ein Kommunikationsverfahren, das Leichtgewichtigkeit und geringe Verzögerung betont.
UDP baut nicht wie TCP erst eine Verbindung auf. UDP selbst besitzt auch keinen Mechanismus, um nicht angekommene Daten erneut zu senden oder Reihenfolgen zu ordnen.
UDP sendet Daten in vergleichsweise einfachen Einheiten. Diese Einheiten nennt man Datagramme.
Da UDP dem Kommunikationsverfahren selbst wenig Steuerung mitgibt, bleibt die Verarbeitung leicht. Dadurch kann es für Echtzeitkommunikation geeignet sein.
Trotzdem ist "UDP ist immer schnell" zu einfach. Tatsächliche Geschwindigkeit und wahrgenommene Qualität hängen auch von Netzwerkumgebung, Anwendungsdesign, Verschlüsselung, Wiederholungen und Überlastung ab.
Der Kern von UDP ist, dass das Kommunikationsverfahren selbst wenige Garantien besitzt.
UDP macht Kommunikation durch weniger Garantien handhabbar
UDP enthält die Zuverlässigkeitsmechanismen von TCP nicht im Kommunikationsverfahren selbst.
Eigenschaft
Inhalt
Verbindungslos
Setzt keinen Verbindungsaufbau wie TCP voraus
Keine Zustellgarantie
UDP selbst garantiert nicht, dass Daten sicher ankommen
Keine Reihenfolgengarantie
UDP selbst garantiert nicht die Reihenfolge der Ankunft
Kein erneutes Senden
UDP selbst sendet verlorene Daten nicht automatisch erneut
Datagrammeinheit
Die gesendete Einheit wird als Datagramm behandelt
So beschrieben wirkt UDP vielleicht unvollständig. UDP wird jedoch verwendet, weil Anwendungen durch weniger Garantien die Kommunikation freier entwerfen können.
Bei Videoanrufen ist es oft natürlicher, aktuelle Audiodaten sofort zu erhalten, als alte Audiodaten später exakt erneut zuzustellen. Auch bei Online-Spielen kann es wichtiger sein, den aktuellen Zustand schnell widerzuspiegeln, als alte Positionsinformationen vollständig erneut zu senden.
Außerdem bedeutet UDP nicht, dass eine Anwendung keinerlei Garantien bereitstellen kann. Bei Bedarf kann die Anwendung eigene Bestätigungen, Wiederholungen, Reihenfolgenkontrolle, Verschlüsselung und andere Mechanismen hinzufügen.
QUIC ist ein typisches Beispiel. QUIC basiert auf UDP, ist aber keine bloße UDP-Kommunikation. Es legt Mechanismen wie Verbindungsverwaltung, Verschlüsselung, erneutes Senden und Stream-Steuerung auf UDP.
Vergleich von TCP und UDP
Der Unterschied zwischen TCP und UDP ist nicht nur "Zuverlässigkeit ja oder nein". Die Entwurfsphilosophie der Kommunikation unterscheidet sich.
Punkt
TCP
UDP
Grundgedanke
Verwaltet Kommunikation, damit sie korrekt zugestellt wird
Hält das Kommunikationsverfahren selbst leicht und die Kontrolle minimal
Verbindung
Kommuniziert nach Verbindungsaufbau
Setzt keinen Verbindungsaufbau voraus
Datenbehandlung
Behandelt Daten als fortlaufende Bytefolge
Behandelt Daten in Datagrammeinheiten
Zustellbestätigung
Wird ausgeführt
Wird von UDP selbst nicht ausgeführt
Reihenfolgenkontrolle
Wird ausgeführt
Wird von UDP selbst nicht ausgeführt
Erneutes Senden
Erfolgt bei Bedarf
Wird von UDP selbst nicht ausgeführt
Geeignete Nutzung
Kommunikation, bei der Genauigkeit wichtig ist
Kommunikation, bei der geringe Verzögerung oder flexible Kontrolle wichtig ist
TCP eignet sich für Kommunikation, bei der fehlende Daten oder falsche Reihenfolge leicht zum Problem werden.
Wenn beim Herunterladen einer Datei ein Teil fehlt, kann die ganze Datei beschädigt sein. Auch bei Login-Verarbeitung kann sie nicht korrekt laufen, wenn notwendige Authentifizierungsdaten nicht korrekt ankommen.
Auch im Web laufen HTTP/1.1 und HTTP/2 über TCP. HTML, CSS, JavaScript, Bilder und andere Bestandteile einer Webseite müssen grundsätzlich korrekt abgerufen werden.
In solchen Fällen, in denen Genauigkeit wichtig ist, passt TCP.
Heutige Webkommunikation läuft allerdings nicht vollständig nur über TCP. Bei HTTP/3 wird QUIC verwendet. QUIC ist ein Kommunikationsverfahren auf UDP-Basis.
Deshalb ist "Webansicht ist TCP" als Merksatz ungenau. Genauer ist: HTTP/1.1 und HTTP/2 verwenden TCP, HTTP/3 verwendet QUIC.
Für welche Kommunikation eignet sich UDP?
UDP eignet sich für Kommunikation, bei der Echtzeitfähigkeit oder flexible Gestaltung wichtig ist.
Bei Videoanrufen ist es wichtiger, aktuelle Audio- und Videodaten möglichst schnell zu erhalten, als etwas ältere Daten später vollständig zu empfangen. Auch wenn einzelne Audio- oder Videoteile fehlen, kann es natürlicher sein, die Kommunikation fortzusetzen, statt alles anzuhalten.
Auch bei Online-Spielen ist geringe Verzögerung wichtig. Oft ist es passender, den aktuellen Zustand in kurzen Abständen fortlaufend zu aktualisieren, als vergangene Zustände vollständig erneut zu senden.
Auch DNS verwendet häufig UDP. DNS fragt etwa IP-Adressen zu Domainnamen ab. Für kurze Anfrage- und Antwortvorgänge eignet sich UDP.
DNS verwendet jedoch nicht immer nur UDP. Bei großen Antworten, Zonentransfers oder Verfahren wie DNS over TLS wird TCP verwendet.
DNS ist also ein typisches UDP-Beispiel, aber keine reine UDP-Kommunikation.
Beziehung zwischen QUIC und UDP
QUIC ist ein Kommunikationsverfahren, das auf UDP basiert. HTTP/3 läuft auf QUIC.
Wichtig ist: QUIC ist nicht "unzuverlässig, weil es UDP ist".
UDP selbst besitzt keine Mechanismen für Zustellbestätigung, erneutes Senden, Reihenfolgenkontrolle oder Verschlüsselung. QUIC legt jedoch eigene Steuerung auf UDP und realisiert dadurch Zuverlässigkeit und Verschlüsselung.
Der Grund, QUIC auf UDP statt direkt auf TCP aufzubauen, liegt darin, dass TCP tief in Betriebssysteme und Netzwerkgeräte eingebaut ist. Neue Kommunikationsverfahren lassen sich flexibler auf UDP entwerfen.
UDP ist daher nicht einfach "grobe Kommunikation". Es wird auch als Grundlage für neue Kommunikationsverfahren verwendet.
Ist TCP oder UDP besser?
TCP und UDP stehen nicht in einem Verhältnis, in dem eines immer besser ist.
TCP betont Zuverlässigkeit der Kommunikation. UDP hält den Mechanismus leicht und erleichtert flexible Kontrolle durch die Anwendung.
Für Kommunikation, bei der Genauigkeit wichtig ist, passt TCP. Für Kommunikation, bei der geringe Verzögerung oder Echtzeitfähigkeit wichtig ist, kann UDP passen.
Auch bei Nutzung von UDP kann die Anwendung Zuverlässigkeit ergänzen. Umgekehrt entstehen auch bei TCP Verzögerungen und Wiederholungen, wenn die Netzwerklage schlecht ist.
TCP und UDP lassen sich daher nicht einfach in "schnell/langsam" oder "sicher/gefährlich" einteilen. Sie werden je nach Kommunikationszweck, tolerierbarer Verzögerung, Verlusttoleranz und dem Umfang der Kontrolle auf Anwendungsebene ausgewählt.
Berührungspunkte mit Anonymität
Der Unterschied zwischen TCP und UDP ist auch relevant, wenn man Anonymität und Sichtbarkeit von Kommunikation verstehen möchte.
Bei , , DNS, HTTP/3, Videoanrufen und Online-Spielen kann sich die Behandlung der Kommunikation je nachdem ändern, ob TCP oder UDP verwendet wird.
TCP-Kommunikation hat Beginn, Fortsetzung und Ende einer Verbindung vergleichsweise klar. UDP-Kommunikation hat eine Verbindung nicht so deutlich wie TCP und kann aus kurzen, zeitweise fließenden Datagrammen bestehen.
Dieser Unterschied ist bei Firewalls, NAT, VPNs, Proxys und Anonymisierungsnetzwerken wichtig.
Tor ist zum Beispiel grundsätzlich für TCP-Streams entworfen. UDP-Kommunikation von Anwendungen lässt sich daher nicht unbedingt unverändert über Tor führen.
Bei HTTP/3 wird außerdem QUIC verwendet, sodass Webkommunikation auch UDP-basiert sein kann. In solchen Fällen können Sichtbarkeit und Steuerung anders ausfallen als bei traditionellem HTTP/1.1 oder HTTP/2.
Auch DNS ist für Anonymität und Privatsphäre wichtig. Ob DNS-Anfragen per UDP nach außen gehen oder über TCP beziehungsweise verschlüsselte DNS-Verfahren behandelt werden, verändert die Beobachtbarkeit der Kommunikation.
Wenn man TCP und UDP versteht, kann man nicht nur "es kommuniziert" sehen, sondern besser ordnen, welche Art von Kommunikation wie transportiert wird.
Zusammenfassung
TCP ist ein Kommunikationsverfahren, das Zuverlässigkeit betont. Es baut Verbindungen auf, bestätigt Datenzustellung, sendet bei Bedarf erneut und ordnet die Reihenfolge.
UDP hält das Kommunikationsverfahren leicht und besitzt Zustellbestätigung, erneutes Senden und Reihenfolgenkontrolle nicht als Grundfunktion. Dadurch wird es für Kommunikation verwendet, bei der geringe Verzögerung oder flexible Gestaltung wichtig ist.
TCP eignet sich für HTTP/1.1, HTTP/2, Login, Dateiübertragung und E-Mail-Versand. UDP wird bei DNS, Videoanrufen, Online-Spielen, QUIC und HTTP/3 verwendet.
DNS nutzt jedoch nicht nur UDP, sondern auch TCP. QUIC basiert auf UDP, ist aber keine bloße UDP-Kommunikation, sondern besitzt eigene Mechanismen für Zuverlässigkeit und Verschlüsselung.
TCP und UDP sind nicht so zu verstehen, dass eines überlegen wäre. Sie werden je nach Kommunikationszweck danach ausgewählt, ob Genauigkeit oder geringe Verzögerung und Flexibilität wichtiger sind.
Verwandte Werkzeuge
DNS Leak Test
DNSLeakTest
Eine externe Ressource zu diesem Artikel. Öffne sie nur, wenn sie zu deiner Situation und deinem Bedrohungsmodell passt.
Warum es hier aufgeführt ist: Sie kann beim Thema des Artikels helfen, liegt aber außerhalb von Anonymity Sense und sollte vor der Nutzung geprüft werden.