Was ist der Unterschied zwischen UDP und TCP?


46

Mein Router verfügt über zwei Protokolle (und eine Option "Beide"), die ich beim Einrichten der Portweiterleitung auswählen kann: UDP und TCP. Was ist der Unterschied zwischen diesen beiden Protokollen und wann würden Sie bei der Portweiterleitung eines über das andere auswählen?

Antworten:


51

TCP wird durch Bestätigungen und Wiederholungsversuche gesichert, um sicherzustellen, dass Ihre Daten dort ankommen, wo sie hingelangen. UDP ist verbindungslos und "fire and forget". UDP wird hauptsächlich für Streaming-Anwendungen verwendet. Wenn Sie Daten verlieren, müssen Sie nicht erneut versuchen, diese zu senden.

Welches Sie verwenden, hängt von der Anwendung ab. Ein Webserver verwendet beispielsweise TCP.


3
Das ist sinnvoll. Wenn Sie also ein Video streamen, ist es nicht sinnvoll, ein fehlendes Bild später erneut zu senden, da Sie diesen Punkt bereits überschritten haben. Vielen Dank
Guy

15
+1. Um nur hinzuzufügen, sollte jeder, der ein tieferes Verständnis sucht, eines von W. Richard Stevens vielen ausgezeichneten Büchern zu diesem Thema lesen. "TCP / IP Illustrated, v1" und "UNIX Network Programming" dienen als hervorragende Tutorials und Referenzen.
Murali Suriar

73

Eine gute Zusammenfassung finden Sie hier:

Was ist der Unterschied zwischen den Internetprotokollen UDP und TCP?

Sowohl TCP als auch UDP arbeiten im TCP / IP-Modell der Transportschicht, werden jedoch sehr unterschiedlich verwendet.

Die wichtigsten Unterschiede sind:

  • Zuverlässigkeit :
    TCP: verbindungsorientiertes
    UDP: verbindungslos
  • Bestellt :
    TCP: Reihenfolge des Nachrichtenempfangs ist garantiert
    UDP: Reihenfolge ist nicht garantiert
  • Protokollgewicht :
    TCP: Schwergewicht, wegen des Verbindungs- / Bestellungsaufwands
    UDP: Leichtgewicht, sehr wenig Aufwand
  • Pakete :
    TCP: Streaming, Daten werden als "Stream" gelesen, wobei nicht unterschieden wird, wo ein Paket endet und ein anderes beginnt. Es können mehrere Pakete pro Leseaufruf vorhanden sein.
    UDP: Datagramme, ein Paket pro Leseaufruf.

Rahmenstruktur

Wenn Daten über das Netzwerk gesendet werden, müssen sie in sogenannte "Frames" eingekapselt werden. Abhängig vom verwendeten Protokoll und der verwendeten Topologie gibt es verschiedene Kapselungsmethoden. Die folgenden Bilder zeigen, wie sich TCP- und UDP-Frame-Strukturen unterscheiden.

Dies ist die TCP-Frame-Struktur:

TCP-Frame

Und dies ist die UDP-Frame-Struktur, viel einfacher:

UDP-Frame

Typische Protokolle, die TCP verwenden, sind HTTP, FTP und SMTP. Beispiele für UDP-Protokolle sind DNS und DHCP.


@splattne - Reihenfolge der Nachricht Empfang ist Garantie, nicht Übertragung
Alnitak

@Alnitak: natürlich hast du recht. Ich meinte, der Empfang ist im Sendeauftrag garantiert. Ich werde aktualisieren, um das klar zu machen.
Splattne

43

Und die Erklärung auf CEO-Ebene:

UDP ist, wenn Sie Ihr Papier in die allgemeine Richtung des Papierkorbs werfen.

TCP ist, wenn es fehlt, werfen Sie immer wieder exakte Kopien desselben Papiers, bis es in den Papierkorb fällt. Es würde Papierverschwendung geben, selbst wenn TCP-Pakete erneut gesendet würden, würde dies zu einer Verschwendung von Netzwerk- oder Systemressourcen führen.


1
Das ist eine sehr gute Erklärung für "CEO Level" - ich mag es!
Keithius

Ich bin kein CEO, aber warum hat mir das noch niemand gesagt? : p
Nicolas Dorier

Das ist brilliant!
Shylent

7

TCP und UDP sind beide Protokolle, die auf IP ausgeführt werden. TCP hat die Zustellung garantiert und UDP nicht. Sie würden den einen oder anderen Port für die Weiterleitung auswählen, je nachdem, welchen Dienst Sie weiterleiten möchten. HTTP ist beispielsweise TCP. Wenn Sie nicht wissen, welches Protokoll der Dienst ist, den Sie weiterleiten möchten, handelt es sich mit ziemlicher Sicherheit um TCP.


3

Um einen anderen Teil Ihrer Frage zu beantworten, müssen Sie weiterleiten, was Ihre Anwendung verwendet. Um HTTP-Verkehr weiterzuleiten, wählen Sie TCP. Um TFTP-Verkehr weiterzuleiten, wählen Sie UDP. p2p-programme verwenden meistens sowohl tcp als auch udp, leiten sie also beide weiter.

Es hängt alles von dem Protokoll und dem Programm ab, das Sie verwenden.


du hast nicht ganz recht dns benutzt auch tcp / 53, nicht so oft aber immer noch [zB. für Zonentransfer].
pQd

Ja. Es ist auch völlig gültig, regelmäßige DNS-Abfragen über TCP zu senden. Ich habe das Beispiel in TFTP geändert, das ausschließlich UDP verwendet.
Hayalci

2

Neben den bisher genannten Unterschieden bietet auch TCP

Ablaufsteuerung. Mithilfe eines Fenstermechanismus begrenzt der Empfänger, wie viele Bytes er vom Absender empfangen möchte, bevor der Absender auf die Erlaubnis warten muss, weitere Daten zu senden. Die Größe des Fensters kann vom Empfänger während des Gesprächs geändert werden. Auf diese Weise kann ein Empfänger die von einem Absender kommende Datenrate "drosseln": UDP lässt dies nicht zu, und ein Empfänger kann nur Daten wegwerfen, die er bei Ankunft nicht puffern oder verarbeiten kann.

einige weitere technische Einrichtungen wie nicht zusammenhängende Bestätigung (verwendet selektive Bestätigungen, um es dem Absender zu ermöglichen, nur einen fehlenden Rahmen anstatt des fehlenden Rahmens und nachfolgender, die der Empfänger bereits hat, aber nicht auf die übliche Weise bestätigen konnte, erneut zu senden), Überlastungsbehandlung und adaptive Neuübertragung (Einstellen des Timers, der entscheidet, wann ein übertragener Frame erneut gesendet wird, wenn keine Bestätigung empfangen wird). Diese sind für UDP nicht relevant, helfen TCP jedoch dabei, zusätzliche Dienste über UDP bereitzustellen, ohne die Netzwerklast bei gleichem Nutzlastvolumen erheblich zu erhöhen.


2

TCP bemüht sich, sicherzustellen, dass die Daten beim Empfänger eingehen. UDP nicht.


Falsch. Das IP-Protokoll ist nicht zuverlässig und es kann zu Datenverlust kommen. TCP bemüht sich, sicherzustellen, dass gesendete Daten (die in kleine Teile aufgeteilt und über IP-Pakete gesendet werden) an den Empfänger gelangen (indem gegebenenfalls kleine Teile erneut gesendet werden).
Anonym

@ Anonymous - Du hast im Grunde das, was ich oben gesagt habe, angepasst. Wie irre ich mich
J. Polfer,

Ich denke, Sie werden beide feststellen, dass IP das zugrunde liegende Framework (Stack) und das grundlegende Kommunikationsprotokoll ist, das sowohl UDP als auch TCP verwenden. Soweit ich weiß, können Sie mit JUST IP keine nützlichen Daten über das Internet übertragen. Selbst einfache Pings usw. verwenden ein Protokoll, das auf IP aufbaut (das andere Hauptprotokoll, ICMP).
Lee B

1

Es macht nichts aus, alle Antworten zu erklären, eine gegen die andere. Zum Einrichten einer Portweiterleitung sind die Regeln ziemlich einfach: Sie müssen TCP auswählen, es sei denn, die Dokumentation für das verwendete Protokoll / die Anwendung verwendet UDP. Normalerweise beziehen sich diejenigen, die UDP verwenden, auf Streaming oder sehr einfache Dinge, die einfache Protokolle / Geschwindigkeit gegenüber Zuverlässigkeit bevorzugen (insbesondere DNS und NTP). Beachten Sie, dass es neben TCP und UDP auch andere Protokolle gibt - ICMP, Tunneling-Protokolle usw.


1

Je bekannter ein Protokoll ist, desto mehr Router auf dem Pfad greifen in das Protokoll ein. Senden Sie TCP-Pakete, und es besteht eine große Wahrscheinlichkeit, dass die empfangenen Pakete stark beschädigt sind. UDP ist normalerweise nicht so entstellt, und die anderen 254 IP-Paylod-Protokolle sind normalerweise völlig unberührt.


0

User Datagram Protocol (UDP)

Es ist Teil der Basisprotokolle der Internet Protocol Suite. Programme auf vernetzten Computern können Kurznachrichten senden, die manchmal als Datagramme bezeichnet werden. UDP garantiert keine Zuverlässigkeit (es kommt vor, dass Datagramm nicht in der richtigen Reihenfolge ankommt, dupliziert wird oder ohne Vorankündigung fehlt). Die Tatsache, dass nicht überprüft wird, ob alle Pakete tatsächlich zugestellt wurden, macht UDP für Anwendungen, die keine garantierte Zustellung benötigen, schneller und effizienter. UDP findet seine Verwendung in solchen Situationen:

Zeitkritische Anwendungen. Die Probleme aufgrund von verzögerten Paketen werden vermieden

Dies ist auch nützlich für Server, die kleine Anfragen von einer großen Anzahl von Clients beantworten. UDP unterstützt Packet Broadcast (Übertragung an alle Teilnehmer im lokalen Netzwerk) und Multicasting (Übertragung an alle Teilnehmer).

Übertragungssteuerungsprotokoll (TCP)

Aufgrund der Bedeutung dieses Protokolls in der Internet Protocol Suite wird es häufig als TCP / IP bezeichnet. TCP arbeitet auf einer höheren Ebene und betrifft nur die beiden Endsysteme (z. B. zwischen Webbrowser und Webserver). TCP ermöglicht die zuverlässige, sequenzielle Übermittlung eines Datenstroms von einem Programm auf einem Computer an ein anderes Programm auf einem anderen Computer. Häufige Verwendungen der Unterstützung für TCP-Umgruppierung von E-Mail-Nachrichten sowie von Dateiübertragungs- und Webanwendungen. TCP steuert unter anderem die Nachrichtengröße, die Rate, mit der Nachrichten ausgetauscht werden, und die Überlastung des Netzwerkverkehrs. Bei IP werden Übertragungen auf niedrigerer Ebene von Computer zu Computer als Nachricht behandelt, die über das Internet übertragen wird.


0

Nun, beide sind Netzwerkprotokolle, die auf etwas aufbauen, das als Internet Protocol oder IP bezeichnet wird. Das Internet-Protokoll ist das Hauptprotokoll des Internets und ermöglicht es uns beispielsweise, im Internet zu surfen. Aus diesem Grund werden diese Protokolle häufig als TCP / IP oder UDP / IP geschrieben. Sie sind eigentlich Kernprotokolle des Internets.

In beiden Fällen werden Ihre Daten in Blöcke aufgeteilt, die als Pakete bezeichnet werden. TCP stellt sicher, dass diese Pakete in der richtigen Reihenfolge und fehlerfrei an ihrem Ziel ankommen.

UDP hingegen stellt nicht sicher, dass überhaupt ein Datenpaket ankommt. Es wird nur sichergestellt, dass es fehlerfrei ist, wenn es eintrifft.

In der Regel werden andere Protokolle über TCP und UDP ausgeführt und werden als Anwendungsprotokolle bezeichnet, da sie innerhalb einer Anwendung und nicht innerhalb des Betriebssystems ausgeführt werden. Ihr Webbrowser verwendet das HTTP-Protokoll, das das TCP-Protokoll verwendet.

Domainnamen-Lookups oder DNS-Abfragen verwenden häufig UDP, können aber auch TCP verwenden. Einige Streaming-Dienste verwenden UDP unter anderen Anwendungsprotokollen.

Ich hoffe, das beantwortet Ihre Frage in einfacherem Englisch.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.