Red de conocimientos turísticos - Conocimientos sobre calendario chino - Artículos sobre el protocolo de enlace de tres y cuatro vías de TCP

Artículos sobre el protocolo de enlace de tres y cuatro vías de TCP

El protocolo de enlace de tres y cuatro vías de TCP es esencialmente la conexión y desconexión de la comunicación TCP.

Apretón de manos de tres vías: para rastrear y negociar la cantidad de datos enviados cada vez, garantizar la sincronización de los segmentos de datos de envío y recepción, confirmar los datos enviados de acuerdo con la cantidad de datos recibidos, cuándo cancelar el contacto una vez completada la recepción y establecer una conexión virtual.

Cuatro ondas: finalice la conexión TCP, es decir, desconecte una conexión TCP. El cliente y el servidor deben enviar un total de cuatro paquetes de datos para confirmar si la conexión está desconectada.

Diagrama de secuencia del protocolo de enlace de tres vías y de cuatro vías de TCP

El protocolo TCP se encuentra en la capa de transporte y su función es proporcionar servicios de flujo de bytes confiables. transmitir datos al destino. El protocolo TCP utiliza una estrategia de protocolo de enlace de tres vías.

El principio del protocolo de enlace de tres vías:

El primer protocolo de enlace: el cliente envía un paquete de datos con el indicador SYN (sincronización) al servidor

El segundo apretón de manos: después de que el servidor recibe los datos con éxito, devuelve un paquete de datos con el indicador SYN/ACK y envía un mensaje de confirmación para indicar que lo recibí;

El tercer apretón de manos: el El cliente devuelve un paquete de datos con el indicador ACK, lo que indica que entiendo y que el protocolo de enlace ha finalizado.

Entre ellos: el indicador SYN se establece en 1, lo que indica que se establece una conexión TCP; el indicador ACK representa el campo de verificación.

El protocolo de enlace de tres vías se puede entender a través del siguiente interesante diagrama:

Explicación detallada del proceso de protocolo de enlace de tres vías:

1. El cliente envía un mensaje de solicitud para establecer una conexión TCP, que contiene el número de secuencia secuencial, que el remitente genera aleatoriamente y establece el campo SYN en el mensaje en 1, lo que indica que es necesario establecer una conexión TCP. (SYN = 1, seq = x, x es un valor generado aleatoriamente);

2. El servidor responde al mensaje de solicitud de conexión TCP enviado por el cliente, que contiene el número de secuencia de secuencia, que está determinado al final de la respuesta, genere aleatoriamente y establezca SYN en 1. Al mismo tiempo, se generará el campo ACK. El valor del campo ACK es el número de secuencia enviado por el cliente. El cliente conocerá al cliente después de recibir la información. Ha sido posible establecer una conexión TCP sin tener que esperar a que el cliente reciba el mensaje, de modo que el cliente sabrá que ha recibido el mensaje. De esta forma, cuando el cliente recibe la información, sabe que su solicitud de establecimiento de TCP ha sido verificada. (SYN = 1, ACK = x + 1, seq = y, y es un valor generado aleatoriamente) El reconocimiento más 1 aquí puede entenderse como una confirmación de quién ha establecido la conexión;

3. El cliente recibe Después de la solicitud de verificación de establecimiento de TCP enviada por el servidor, aumentará su número de secuencia en 1, responderá con una solicitud de verificación ACK nuevamente y responderá en la secuencia enviada por el servidor más 1. (SYN=1, ACK=y+1, secuencia=x+1).

Debido a que las conexiones TCP son full-duplex, cada dirección debe cerrarse por separado. El principio es que una vez que una parte ha completado el envío de datos, puede enviar un FIN para terminar la conexión en esa dirección. Recibir un FIN simplemente significa que no hay flujo de datos en esa dirección y la conexión TCP aún puede enviar datos después de recibir el FIN. La parte que cierre primero realizará un cierre activo, mientras que la otra parte realizará un cierre pasivo.

Principio de cuatro ondas:

Primera ola: el cliente envía un FIN para cerrar la transmisión de datos del cliente al servidor y el cliente ingresa al estado FIN_WAIT_1

Segunda ola: después de recibir el FIN, el servidor envía un ACK al cliente, confirmando que el número de secuencia recibido es el número de secuencia + 1 (lo mismo que SYN, un FIN ocupa un número de secuencia) y un TCP La conexión recibe Los datos aún se pueden enviar después de un FIN.

FIN ocupa un número de secuencia), el servidor ingresa al estado CLOSE_WAIT;

La tercera ola: el servidor envía FIN, que se utiliza para cerrar la transmisión de datos del servidor al cliente, y el servidor ingresa al estado LAST_ACK;

La tercera ola: cuatro olas: después de que el cliente recibe el FIN, el cliente ingresa al estado TIME_WAIT y luego envía un ACK al servidor para confirmar que el número de secuencia recibido es el número de secuencia. + 1. El servidor ingresa al estado CERRADO para completar cuatro oleadas.

Entre ellos: el bit del indicador FIN se establece en 1, lo que indica que la conexión TCP está desconectada.

Puedes entender la onda de cuatro ondas a través de la siguiente interesante ilustración:

Descripción detallada del proceso de la onda de cuatro ondas:

1. El cliente envía una solicitud para desconectarse El mensaje de conexión TCP contiene el número de secuencia secuencial, que el remitente genera aleatoriamente. Al mismo tiempo, el campo FIN en el mensaje se establece en 1, lo que significa que la conexión TCP debe desconectarse. (FIN = 1, seq = x, x es generado aleatoriamente por el cliente);

2. El servidor responderá al mensaje de solicitud de desconexión TCP enviado por el cliente, que contiene una secuencia generada aleatoriamente por la respuesta. end, y generará un campo ACK. El valor del campo ACK es agregado por el cliente al número de secuencia secuencial enviado por 1 para responder, de modo que cuando el cliente reciba esta información, sepa que su solicitud de desconexión TCP ha sido. procesado. (FIN=1, ACK=x+1, seq=y, y es generado aleatoriamente por el servidor);

3. Cuando el servidor responde a la solicitud de desconexión TCP del cliente, no realizará una respuesta inmediata. Desconexión de la conexión TCP, el servidor primero confirmará si todos los datos transmitidos a A se han transmitido antes de desconectarse. Una vez que se confirma la transmisión de datos, el campo FIN del mensaje de respuesta se establecerá en 1 y se generará un número de secuencia aleatoria. . 1 y genera un número de secuencia aleatorio. (FIN = 1, ACK = x + 1, seq = z, z es generado aleatoriamente por el servidor);

4. Después de recibir la solicitud de desconexión TCP del servidor, el cliente responderá a la solicitud de desconexión del servidor. La solicitud de conexión incluye un campo de secuencia generado aleatoriamente y un campo ACK. El campo ACK agregará 1 a la secuencia de la solicitud de desconexión TCP del servidor, completando así la respuesta de verificación de la solicitud de servicio. (FIN=1, ACK=z+1, seq=h, h es generado aleatoriamente por el cliente)

En este punto, finaliza el proceso de desconexión TCP de 4 ondas.

Esperar: Esperar solicitudes de conexión desde cualquier puerto y TCP remoto.

SYN_SENT: espera una solicitud de conexión coincidente después de enviar una solicitud de conexión.

SYN_RECEIVED: después de enviar una solicitud de conexión y recibir una solicitud de conexión coincidente, espere la confirmación de la solicitud de conexión.

ESTABLECIDA: Indica que la conexión está abierta y puede entregar datos entrantes al usuario. La fase de transferencia de datos de la conexión es normal.

FIN_WAIT_1: espere una solicitud de terminación de conexión desde el TCP remoto o espere un reconocimiento de una solicitud de terminación de conexión enviada anteriormente.

FIN_WAIT_2: Espera una solicitud de finalización de conexión desde el TCP remoto.

CLOSE_WAIT: Espera la solicitud de finalización de la conexión del usuario local.

CIERRE: Esperando reconocimiento de una solicitud de terminación de conexión desde el TCP remoto.

LAST_ACK: Esperar el reconocimiento de la solicitud de terminación de la conexión enviada previamente al TCP remoto (incluido el reconocimiento de la solicitud de terminación de la conexión por sus bytes)

TIME_WAIT: Esperar el tiempo suficiente para Asegúrese de que el TCP remoto reciba el acuse de recibo de su solicitud de terminación de conexión.

TIME_WAIT existe por dos razones:

?1. Terminar de manera confiable las conexiones TCP full-duplex

?2. red.

CERRADO: No en el estado conectado (este es un estado hipotético para facilitar la descripción y en realidad no existe).