2010-08-09 16 views
6

Warum werden Daten während des 3. Teils des TCP-3-Wege-Handshakes nicht übertragen? z.B.tcpip 3-Wege-Handshake

(A bis B) SYN

(B zu A) ACK + SYN

(A bis B) ACK .... warum Daten können nicht zusammen mit diesem ACK übertragen werden?

+0

Ich sehe nicht, warum es nicht könnte ... Das Protokoll gibt an, dass die Verbindung * nach aufgebaut * B empfängt die ACK, though. – Borealid

Antwort

5

Ich habe immer geglaubt, dass es die Sitzungserrichtungsphase getrennt von der Datenübertragungsphase halten sollte, so dass keine echte Daten übertragen werden, bis beide Enden der Sitzung die Sequenznummern und Sitzungsoptionen vereinbart haben, besonders seit Pakete, die ankommen, können von einer völlig anderen vorherigen Sitzung stammen, die zufälligerweise dieselben Endpunkte hat.

Allerdings bin ich bei weiterer Untersuchung nicht ganz sicher, dass die Übertragung von Daten mit den Handshake-Paketen nicht erlaubt ist. Der Abschnitt über die TCP-Verbindungsaufbau in meinem Internetworking mit TCP/IP Buch das folgende Snippet enthält:

Aufgrund des Protokolldesigns ist es möglich, Daten zusammen mit den ersten Sequenznummern in dem schicken Handshake-Segmente. In solchen Fällen muss die TCP-Software die Daten speichern, bis der Handshake abgeschlossen ist. Sobald eine Verbindung hergestellt wurde, kann die TCP-Software die gehaltenen Daten freigeben und sie schnell an ein wartendes Anwendungsprogramm übergeben.

Da es ist sicherlich möglich, ein TCP-Paket mit SYN (oder ACK) und Daten zu konstruieren, das gut erlaubt werden kann. Ich habe nie sah es in der Wildnis passieren, aber wieder habe ich noch nie gesehen, ein haarig-ohriger Zwerg Lemur in der Wildnis, obwohl ich sicher bin, dass sie existieren.

Es kann sein, dass es die Sockets-Software ist, die verhindert, dass Daten ausgehen, bevor die Sitzung vollständig eingerichtet wurde, aber TCP scheint sie als gültig zu betrachten. Es scheint, dass Sie Daten mit einem SYN-ACK Paket senden können (Phase 2 des Verbindungsaufbaus), da Sie die Sequenznummer und die Optionen des anderen Endes haben. Ebenso scheint das Senden von Daten mit dem Paket Phase 3 ACK möglich zu sein.

Der Grund, warum die TCP-Software an den Daten festhält, bis der Handshake vollständig abgeschlossen ist, liegt vermutlich an den oben genannten Gründen - nur wenn beide Enden die Sequenznummern vereinbart haben, können Sie sicher sein, dass die Daten nicht von a sind vorherige Sitzung.


Internetworking with TCP/IP Volume 1 Principles, Protocols and Architecture, 3rd edition, Douglas E. Comer, ISBN 0-13-216987-8.

+0

Sie fragen sich, ob solche Daten an den Filtern für Deep-Packet-Inspection vorbeikommen, die im ersten Handshake keine Daten erwarten! – caf

Verwandte Themen