2010-08-09 28 views
6

¿Por qué no se transfieren los datos durante la 3ª parte del protocolo de enlace TCP de 3 vías? p.tcpip Handshake de 3 vías

(A a B) SYN

(B a A) ACK + SYN

(A a B) ACK .... por qué los datos no puede ser transferida junto con este ACK?

+0

no veo por qué no podría ... El protocolo especifica que se establece la conexión * después * B recibe el ACK, sin embargo. – Borealid

Respuesta

5

Siempre he creído que era para mantener la fase de establecimiento de sesión separada de la fase de transferencia de datos de modo que no datos reales se transfiere hasta que ambos extremos de la sesión han puesto de acuerdo sobre los números de secuencia y las opciones de sesión, sobre todo porque los paquetes que llegan pueden ser de una sesión anterior totalmente diferente que simplemente tiene los mismos puntos finales.

Sin embargo, en una investigación posterior, no estoy del todo seguro de que la transmisión de datos con los paquetes de handshake no se permita. La sección de establecimiento de conexión TCP en mi Internetworking with TCP/IP libro contiene el siguiente fragmento:

Debido al diseño del protocolo, es posible enviar datos junto con los números de secuencia inicial en la segmentos de apretón de manos. En tales casos, el software TCP debe contener los datos hasta que se complete el intercambio. Una vez que se ha establecido una conexión, el software TCP puede liberar los datos retenidos y entregarlos rápidamente a un programa de aplicación en espera.

Puesto que es ciertamente posible construir un paquete TCP con SYN (o ACK) y de datos, esto puede ser permitido. He Nunca visto que suceda en la naturaleza, pero, una vez más, nunca he visto un lémur enano de orejas caídas en la naturaleza tampoco, aunque estoy seguro de que existen.

Puede ser que sea el software de sockets el que impide que los datos salgan antes de que la sesión se haya establecido por completo, pero TCP parece considerarlo válido. Parece que puede enviar datos con un paquete SYN-ACK (fase 2 del establecimiento de conexión) ya que tiene el número de secuencia y las opciones del otro extremo. Del mismo modo, parece posible enviar datos con el paquete de fase 3 ACK. El motivo por el cual el software TCP retiene los datos hasta que el saludo está completo es probablemente por la razón mencionada anteriormente: solo cuando ambos extremos hayan acordado los números de secuencia, puede estar seguro de que los datos no provienen de un archivo de texto. sesión anterior.


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

+0

Hace que se pregunte si tales datos pasarían por alto filtros de inspección profunda de paquetes que no están esperando datos en el saludo inicial. – caf

Cuestiones relacionadas