Frage

Ich bin immer verwirrt zwischen TCP wobei Verbindung orientiert und UDP ist verbindungslos, so wenden Sie sich bitte jemand dies klären.

  • Jede Kommunikation zwischen zwei Computern, ob seine TCP oder UDP über Pakete ist. Es gibt keine harten Draht-Verbindung zwischen zwei Peers, ob seine TCP oder UDP. Dann wird, warum TCP sagte verbindungsorientiert sein, nur weil es die Pakete sendet, wenn keine Bestätigung empfangen wird oder es bettet Sequenznummer innerhalb der Pakete?

  • Was ist die eigentliche Bedeutung der Verbindung? Ist der Router auf dem Weg zwischen zwei kommunizierenden Peers seit einiger Zeit gebucht Pakete für diese bestimmte Verbindung zu akzeptieren?

EDIT

  • Wenn Sie sagen, dass Sie Verbindung zwischen zwei Punkten festgelegt?

Danke

War es hilfreich?

Lösung

Eine Verbindung ist einfach ein virtueller Pfad zwischen zwei Endpunkten. Mit TCP, öffnen Sie die Verbindung und starten Daten durch das Senden. Es ist garantiert am anderen Ende um (vorausgesetzt, das Netzwerk nicht ausfällt) zu gelangen. Dann schließen Sie die Verbindung nach unten.

Für die Dauer der Verbindung, sprechen die beiden Enden miteinander, Bestätigung des Eingangs der Pakete, um sicherzustellen, gibt es keinen Verlust oder Duplizierung.

Mit UDP, dann ist es etwas anders. Sie im Grunde nur ein Paket werfen dort aus mit einer Zieladresse und es kann oder auch nicht ankommen -. Das ist die U in UDP (unzuverlässigen)

Sie sollten nicht zu denken, um die Verbindung von TCP Ergebnissen in allen Paketen eingeschläfert werden, um den gleichen physikalischen Weg nehmen. Sie werden um Problembereiche weitergeleitet werden, falls erforderlich.

Wie für Ihre Aktualisierung, die Verbindung hergestellt wird, nachdem die folgende passiert:

  • a SYN Paket vom Initiator gesendet wurde.
  • hat die Antwort schickt SYN-ACK Paket zurück.
  • hat der Initiator eine weitere ACK Paket zurückgeschickt.

Dies ist das Sitzungsaufbauprotokoll für TCP. Die Pakete selbst sind normale Pakete mit dem SYN und / oder ACK Flags gesetzt im Header.

Das wegweisende Buch über TCP (und andere Protokolle) ist Stevens , holen Sie sich eine Kopie dieses, wenn Sie einen toten Baum Version wollen - ich habe dies seit Jahren hatte. Oder natürlich ist da noch die Wikipedia Sachen. Beide sind ziemlich schwer gehen für den gelegentlichen enquirer, aber es lohnt sich, wenn Sie überhaupt daran interessiert sind, immer tiefer -. Meine eigene Vorliebe für das Buch sein würde, es rangiert dort mit Knuth auf meinem Bücherregal

Andere Tipps

Ja, TCP bettet Sequenznummern und tut eine ganze Menge anderer Verarbeitung zu „simulieren“, um eine dedizierte Punkt-zu-Punkt-Verbindung über ein paketorientierten, verbindungslosen Netzwerk.

UDP nicht; jedes Datagramm ist völlig unabhängig von anderen Datagrammen geliefert.

Ich werde zuerst die zweite Frage beantworten. Das, was Sie schrieb ( „Einrichten eines Pfades“), die in einigen Netzwerkarchitekturen geschieht (GSM Sprachanrufe, zum Beispiel), aber nicht im Internet heißt Umschaltschaltung . Bei der Leitungsvermittlung ist die Netzwerkinfrastruktur sich bewusst, eine Kommunikation zwischen den beiden Endpunkten geschieht. Die TCP / IP-Stack ist jedoch so konzipiert, dass paketvermitteltes . Das bedeutet, jedes Paket ein separates Stück von Information ist, die mit dem anderen Endpunkt geliefert sind, und ist unabhängig von jedem anderen Paket (wie eine Nachricht veröffentlichen).

Als Folge wird die untere Ebene Protokolle im IP-Stack können nicht garantieren, dass:

  • Pakete werden am Ziel empfangen
  • Pakete werden in einer bestimmten Reihenfolge empfangen
  • Pakete werden am Ziel empfangen nur einmal

UDP insbesondere nicht versucht, diese Probleme zu lösen. Auf der anderen Seite hat die TCP-Protokoll dieser Probleme loszuwerden. Es verwendet Bestätigungen und Paketsequenznummern, sie zu handhaben. In TCP ist ein einzelnes Paket zu anderen Paketen nicht unabhängig. Als Ergebnis sollten beide Parteien eine simuliert Kommunikationsweg verhandeln auf der staatenlos IP gebaut. Diese Verhandlung wird eine Verbindung genannt. Es ist im Grunde eine Beziehung zwischen den Paketen in einer Kette aufzubauen.

Router haben keine Kenntnis über die Verbindung. Die Verbindung ist ein TCP logisches Konzept, das die Zuverlässigkeit der Paketlieferung hinzufügt, die UDP fehlt. Allerdings Router nur daran interessiert sind, IP, TCP, UDP was auch immer sind Schichten auf IP. Router IP-Pakete ohne Rücksicht auf die hohen Protokolle, die sie enthalten.

Die zwei Definitionen von Wikipedia scheinen mir klar

  

In der Telekommunikation verbindungslos   beschreibt die Kommunikation zwischen zwei   Netzwerk-Endpunkte in dem eine Nachricht   kann von einem Endpunkt gesendet werden,   eine andere ohne vorherige Absprache. Das   Vorrichtung an einem Ende der Kommunikations   überträgt Daten an die anderen, ohne   zunächst sicherzustellen, dass der Empfänger   verfügbar und bereit, die erhalten   Daten. Das Gerät eine Nachricht zu senden   einfach sendet sie an die adressierte   beabsichtigter Empfänger.

     

...

     

Ein verbindungsorientiertes Networking   Protokoll ist eine, die einen Strom liefert   von Daten in der gleichen Reihenfolge, wie es war   gesendet wird, nachdem zuerst eine Festlegung   Kommunikationssitzung.

Ich glaube nicht, dass ich auf diesen Definitionen verbessern kann, aber lassen Sie mich es von Socket-Programmierung Perspektive zu erklären versuchen, das Verständnis, die a href = „http://en.wikipedia.org/wiki/Internet_socket“ rel <=“ nofollow noreferrer "> Buchse ist die Programmierschnittstelle für TCP / UDP . Insbesondere wenn Sie Server-Sockets programmieren, etwa in Java, würden Sie feststellen, wie diese verbindungsorientierte und verbindungslose Art von TCP und UDP jeweils die Modellprogrammierung beeinflussen.

in einer TCP-basierten Client-Server-Anwendung, bevor eine Datenkommunikation durchgeführt wird, eine Verbindung zwischen einem Client-Socket mit einem Server-Socket, entsprechend diesen Client-Socket, muss festgestellt werden. Auf dem Server, müßten Sie einen ServerSocket erstellen und dann accept() eine Socket auf einen Client-Verbindung entsprechend erhalten nennen. Eine solche Buchse sind erstellt bei jeder Verbindung von einem bestimmten entfernten Client zu kommunizieren (die durch Instanziieren der Socket Klasse initiiert wird). Sie können verweisen diesem Codebeispiel zum Detail .

Auf der anderen Seite, wenn Sie UPD programmieren, Ihr Server-Socket ist im Grunde ein DatagramSocket Objekt, das auf einem Port lauscht und empfängt alle Datagramme als auch an ihn gesendet, wie die Lage ist, Datengramme einen bestimmte Kunden in der Buchse zurück zu senden. Das heißt, ein Server-Socket alle Clients dienen, weil es keine End-to-End-Verbindung zwischen einem beliebigen Client-Verbindung und dem Server ist. (Beachten Sie, dass es auch kein „serverSocket#accept()“ Schritt erforderlich.) Mit anderen Worten, jeder Client und Server können nur Datagramme senden um ohne kümmern zu müssen, ob der anderen Endpunkt bereit ist, die Datagramme oder nicht zu empfangen. Sie können verweisen diesem Codebeispiel zum Detail .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top