TCP vs. UDP

Es gibt zwei Arten von IP-Verkehr (Internet Protocol). Sie sind TCP oder Transmission Control Protocol und UDP oder User Datagram Protocol . TCP ist verbindungsorientiert - sobald eine Verbindung hergestellt ist, können Daten bidirektional gesendet werden. UDP ist ein einfacheres, verbindungsloses Internetprotokoll. Mit UDP werden mehrere Nachrichten als Pakete in Blöcken gesendet.

Vergleichstabelle

TCP versus UDP Vergleichstabelle
TCP UDP
Akronym fürÜbertragungssteuerungsprotokollUser Datagram Protocol oder Universal Datagram Protocol
VerbindungDas Übertragungssteuerungsprotokoll ist ein verbindungsorientiertes Protokoll.Das User Datagram Protocol ist ein verbindungsloses Protokoll.
FunktionWährend eine Nachricht über das Internet von einem Computer zum anderen gelangt. Dies ist verbindungsbasiert.UDP ist auch ein Protokoll, das beim Transport oder der Übertragung von Nachrichten verwendet wird. Dies ist nicht verbindungsbasiert, was bedeutet, dass ein Programm eine Menge Pakete an ein anderes senden kann und dies das Ende der Beziehung wäre.
VerwendungTCP eignet sich für Anwendungen, die eine hohe Zuverlässigkeit erfordern, und die Übertragungszeit ist relativ weniger kritisch.UDP eignet sich für Anwendungen, die eine schnelle und effiziente Übertragung erfordern, z. B. Spiele. Die zustandslose Natur von UDP ist auch nützlich für Server, die kleine Anfragen von einer großen Anzahl von Clients beantworten.
Verwendung durch andere ProtokolleHTTP, HTTPs, FTP, SMTP, TelnetDNS, DHCP, TFTP, SNMP, RIP, VOIP.
Bestellung von DatenpaketenTCP ordnet Datenpakete in der angegebenen Reihenfolge neu an.UDP hat keine inhärente Reihenfolge, da alle Pakete unabhängig voneinander sind. Wenn eine Bestellung erforderlich ist, muss diese von der Anwendungsschicht verwaltet werden.
ÜbertragungsgeschwindigkeitDie Geschwindigkeit für TCP ist langsamer als für UDP.UDP ist schneller, da keine Fehlerbehebung versucht wird. Es ist ein "Best Effort" -Protokoll.
VerlässlichkeitEs besteht die absolute Garantie, dass die übertragenen Daten intakt bleiben und in derselben Reihenfolge ankommen, in der sie gesendet wurden.Es gibt keine Garantie dafür, dass die gesendeten Nachrichten oder Pakete überhaupt erreicht werden.
Header-GrößeDie Größe des TCP-Headers beträgt 20 ByteDie Größe des UDP-Headers beträgt 8 Byte.
Gemeinsame Header-FelderQuellport, Zielport, PrüfsummeQuellport, Zielport, Prüfsumme
Streaming von DatenDaten werden als Bytestrom gelesen, es werden keine Unterscheidungsanzeigen an Signalnachrichten- (Segment-) Grenzen übertragen.Pakete werden einzeln gesendet und nur dann auf Integrität geprüft, wenn sie ankommen. Pakete haben bestimmte Grenzen, die beim Empfang berücksichtigt werden. Dies bedeutet, dass eine Leseoperation am Empfängersocket eine gesamte Nachricht liefert, wie sie ursprünglich gesendet wurde.
GewichtTCP ist schwer. TCP benötigt drei Pakete, um eine Socket-Verbindung einzurichten, bevor Benutzerdaten gesendet werden können. TCP übernimmt die Zuverlässigkeits- und Überlastungskontrolle.UDP ist leicht. Es gibt keine Reihenfolge von Nachrichten, keine Tracking-Verbindungen usw. Es handelt sich um eine kleine Transportschicht, die über IP aufgebaut ist.
DatenflusskontrolleTCP führt die Flusskontrolle durch. TCP benötigt drei Pakete, um eine Socket-Verbindung einzurichten, bevor Benutzerdaten gesendet werden können. TCP übernimmt die Zuverlässigkeits- und Überlastungskontrolle.UDP hat keine Option zur Flusskontrolle
FehlerüberprüfungTCP führt eine Fehlerprüfung und Fehlerbehebung durch. Fehlerhafte Pakete werden erneut von der Quelle zum Ziel übertragen.UDP führt eine Fehlerprüfung durch, verwirft jedoch einfach fehlerhafte Pakete. Eine Fehlerbehebung wird nicht versucht.
Felder1. Sequenznummer, 2. AcK-Nummer, 3. Datenoffset, 4. Reserviert, 5. Steuerbit, 6. Fenster, 7. Dringender Zeiger 8. Optionen, 9. Auffüllen, 10. Prüfsumme, 11. Quellport, 12. Zielport1. Länge, 2. Quellport, 3. Zielport, 4. Prüfsumme
WissenBestätigungssegmenteKeine Bestätigung
HandschlagSYN, SYN-ACK, ACKKein Handshake (verbindungsloses Protokoll)

Unterschiede in den Datenübertragungsfunktionen

TCP gewährleistet eine zuverlässige und geordnete Übermittlung eines Bytestroms vom Benutzer zum Server oder umgekehrt. UDP ist nicht für End-to-End-Verbindungen vorgesehen, und die Kommunikation überprüft nicht die Bereitschaft des Empfängers.

Verlässlichkeit

TCP ist zuverlässiger, da es die Bestätigung von Nachrichten und die erneute Übertragung bei Verlust verlorener Teile verwaltet. Somit fehlen absolut keine Daten. UDP stellt nicht sicher, dass die Kommunikation den Empfänger erreicht hat, da Konzepte für Bestätigung, Zeitüberschreitung und erneute Übertragung nicht vorhanden sind.

Bestellung

TCP- Übertragungen werden in einer Sequenz gesendet und in derselben Sequenz empfangen. Wenn Datensegmente in falscher Reihenfolge eintreffen, ordnet TCP die Anwendung neu und liefert sie aus. Im Fall von UDP wird die gesendete Nachrichtensequenz möglicherweise nicht beibehalten, wenn sie die empfangende Anwendung erreicht. Es gibt absolut keine Möglichkeit, die Reihenfolge vorherzusagen, in der die Nachricht empfangen wird.

Verbindung

TCP ist eine schwere Verbindung, die drei Pakete für eine Socket-Verbindung benötigt und die Überlastungskontrolle und Zuverlässigkeit übernimmt. UDP ist eine leichte Transportschicht, die auf einer IP entwickelt wurde. Es gibt keine Tracking-Verbindungen oder die Reihenfolge von Nachrichten.

Übertragungsmethode

TCP liest Daten als Bytestrom und die Nachricht wird an Segmentgrenzen übertragen. UDP- Nachrichten sind Pakete, die einzeln gesendet und bei der Ankunft auf ihre Integrität überprüft werden. Pakete haben Grenzen definiert, während der Datenstrom keine hat.

Fehlererkennung

UDP arbeitet nach besten Kräften. Das Protokoll unterstützt die Fehlererkennung über die Prüfsumme. Wenn jedoch ein Fehler erkannt wird, wird das Paket verworfen. Eine erneute Übertragung des Pakets zur Wiederherstellung nach diesem Fehler wird nicht versucht. Dies liegt daran, dass UDP normalerweise für zeitkritische Anwendungen wie Spiele oder Sprachübertragung geeignet ist. Die Wiederherstellung nach dem Fehler wäre sinnlos, da das erneut übertragene Paket zum Zeitpunkt des Empfangs nicht mehr von Nutzen ist.

TCP verwendet sowohl die Fehlererkennung als auch die Fehlerbehebung. Fehler werden über die Prüfsumme erkannt und wenn ein Paket fehlerhaft ist, wird es vom Empfänger nicht bestätigt, was eine erneute Übertragung durch den Absender auslöst. Dieser Betriebsmechanismus wird als positive Bestätigung mit erneuter Übertragung (PAR) bezeichnet.

Wie TCP und UDP funktionieren

Eine TCP-Verbindung wird über einen Drei-Wege-Handshake hergestellt, bei dem eine Verbindung initiiert und bestätigt wird. Sobald die Verbindung hergestellt ist, kann die Datenübertragung beginnen. Nach der Übertragung wird die Verbindung durch Schließen aller eingerichteten virtuellen Verbindungen beendet.

UDP verwendet ein einfaches Übertragungsmodell ohne implizite Handshake-Dialoge, um Zuverlässigkeit, Bestellung oder Datenintegrität zu gewährleisten. Daher bietet UDP einen unzuverlässigen Dienst, und Datagramme können in unregelmäßiger Reihenfolge eintreffen, doppelt erscheinen oder ohne vorherige Ankündigung verloren gehen. UDP geht davon aus, dass eine Fehlerprüfung und -korrektur entweder nicht erforderlich ist oder in der Anwendung durchgeführt wird, wodurch der Aufwand für eine solche Verarbeitung auf Netzwerkschnittstellenebene vermieden wird. Im Gegensatz zu TCP ist UDP mit Paketsendungen (Senden an alle im lokalen Netzwerk) und Multicasting (Senden an alle Teilnehmer) kompatibel.

Verschiedene Anwendungen von TCP und UDP

Surfen im Internet, E-Mail und Dateiübertragung sind gängige Anwendungen, die TCP verwenden. TCP wird verwendet, um die Segmentgröße, die Datenaustauschrate, die Flusskontrolle und die Netzwerküberlastung zu steuern. TCP wird bevorzugt, wenn auf Netzwerkschnittstellenebene Fehlerkorrekturfunktionen erforderlich sind. UDP wird hauptsächlich von zeitkritischen Anwendungen sowie von Servern verwendet, die kleine Anfragen von einer großen Anzahl von Clients beantworten. UDP ist kompatibel mit Paket-Broadcast - Senden an alle in einem Netzwerk und Multicasting - Senden an alle Teilnehmer. UDP wird häufig in Domain Name System, Voice over IP, Trivial File Transfer Protocol und Online-Spielen verwendet.

TCP vs. UDP für Spieleserver

Bei MMO-Spielen (Massively Multiplayer Online) müssen Entwickler häufig eine architektonische Wahl zwischen der Verwendung von dauerhaften UDP- oder TCP-Verbindungen treffen. Die Vorteile von TCP sind dauerhafte Verbindungen, Zuverlässigkeit und die Möglichkeit, Pakete beliebiger Größe zu verwenden. Das größte Problem mit TCP in diesem Szenario ist der Überlastungssteuerungsalgorithmus, der den Paketverlust als Zeichen für Bandbreitenbeschränkungen behandelt und das Senden von Paketen automatisch drosselt. In 3G- oder Wi-Fi-Netzwerken kann dies zu einer erheblichen Latenz führen.

Der erfahrene Entwickler Christoffer Lernö hat die Vor- und Nachteile abgewogen und empfiehlt die folgenden Kriterien, um zu entscheiden, ob Sie TCP oder UDP für Ihr Spiel verwenden möchten:

  • Verwenden Sie HTTP über TCP, um gelegentliche, vom Client initiierte zustandslose Abfragen durchzuführen, wenn eine gelegentliche Verzögerung in Ordnung ist.
  • Verwenden Sie persistente einfache TCP-Sockets, wenn sowohl Client als auch Server unabhängig voneinander Pakete senden, eine gelegentliche Verzögerung jedoch in Ordnung ist (z. B. Online Poker, viele MMOs).
  • Verwenden Sie UDP, wenn Client und Server möglicherweise unabhängig voneinander Pakete senden und eine gelegentliche Verzögerung nicht in Ordnung ist (z. B. die meisten Multiplayer-Actionspiele, einige MMOs).

Ähnlicher Artikel