wake-up-neo.com

TCP vs UDP - Was ist eine TCP Verbindung?

Was genau ist eine TCP Verbindung? Ich verstehe, dass es keine physische Verbindung vom Client zum Server gibt. Ist diese Verbindung nur der Socket des Clients, der mit dem neuen Socket verknüpft ist, den der Server nach dem erstellt hat? Drei-Wege-Handshake? Nachdem die "Verbindung" hergestellt wurde, wissen die Sockets an beiden Enden der Verbindung, wohin ihre Pakete gesendet werden sollen.

Wie unterscheidet sich dies von der Art und Weise, wie UDP anders funktioniert als der anfängliche Handshake mit TCP? Hat jeder Server-Socket nur einen Client, der Pakete an diesen bestimmten Socket sendet?

Was sind einige mögliche Vorteile einer dedizierten Verbindung zwischen Hosts? Mein Verständnis von TCP und UDP ist immer noch sehr grundlegend, sodass breite Verallgemeinerungen ausreichen sollten.

52
Cheese

Lassen Sie uns dies in Teile aufteilen. Zunächst basiert Netzwerk auf IP, einem Protokoll, das jedem Netzwerkknoten eine Adresse zuweist und das das Senden kleiner Datenmengen (normalerweise bis zu 64 KB, normalerweise jedoch nur 1500 KB) ermöglicht ) von einem Knoten zum anderen.

Das allein ist noch nicht viel wert, da wir nicht überprüfen können, ob die Daten tatsächlich und in der richtigen Reihenfolge eingegangen sind. Wenn wir möchten, dass ein abstrakter Mechanismus willkürlich Datenmengen überträgt und sicherstellt, dass sie ankommen, benötigen wir ein anderes Protokoll über dem Netzwerk, das diese "Übertragung" abwickelt. Und das ist der Zweck von TCP.

Parallel zu TCP gibt es jedoch ein anderes "Übertragungs" -Protokoll, das überhaupt keine Überprüfung durchführt und keine Zuverlässigkeit aufweist, UDP. UDP ist nur ein dünner Wrapper um rohe IP-Pakete, der ein wenig Metadaten hinzufügt (wie eine Port ​​Zahl).

UDP ist jedoch immer noch nützlich, da in vielen Situationen die Datenintegrität bereits an ein noch höheres Protokoll übergeben wird und daher kein komplexes Übertragungsprotokoll erforderlich ist. Dies wird beispielsweise in virtuellen Netzwerkdiensten verwendet, in denen normalerweise eine andere Instanz von TCP/IP ausgeführt wird over ein UDP-Kanal. (Die Verwendung eines zuverlässigen Protokolls wie TCP für den Kanal kann in diesem Fall katastrophale Folgen haben, da Kaskaden erneut gesendet werden.)

Der Begriff "TCP-Verbindung" bezieht sich also auf die Anwendung des TCP-Protokolls. Das Protokoll ist natürlich zustandsbehaftet und läuft typischerweise in einer SYN-ACK-Daten-FIN-Sequenz oder SYN/RST im Fall einer zurückgewiesenen Übertragung ab; Beide Peers behalten den Status der Verbindung bei (Handshake, hergestellt, geschlossen, geschlossen). TCP führt auch die Begriffe "Server" und "Client" ein, wobei der Server der Peer ist, der listen() ist für eine eingehende Verbindung.

44
Kerrek SB

Der Hauptunterschied zwischen TCP und UDP-Sockets besteht darin, dass UDP keine Verbindung hat und keine Bestätigung verwendet, dass das andere Ende die Daten empfangen hat.

Das Transmission Control Protocol (TCP) ist eines der Kernprotokolle der Internet Protocol Suite. TCP ist eine der beiden ursprünglichen Komponenten der Suite und ergänzt das Internet Protocol (IP). Daher wird die gesamte Suite im Allgemeinen als TCP/IP bezeichnet. TCP ermöglicht die zuverlässige, geordnete Übermittlung eines Bytestroms von einem Programm auf einem Computer an ein anderes Programm auf einem anderen Computer. TCP ist das Protokoll, auf das sich wichtige Internetanwendungen wie das World Wide Web, E-Mail, die Remoteverwaltung und die Dateiübertragung stützen. Andere Anwendungen, für die kein zuverlässiger Datenstromdienst erforderlich ist, verwenden möglicherweise das User Datagram Protocol (UDP), das einen Datagrammdienst bereitstellt, bei dem die Latenz gegenüber der Zuverlässigkeit verringert wird.1

3
Hasteur