Comprenda el protocolo de enlace de tres vías de TCP y los cuatro saludos de la mano en un artículo

Tabla de contenido

1. Tres apretón de manos

2. Salude cuatro veces

3. Análisis de 11 sustantivos estatales


El protocolo de enlace de tres vías de TCP y las cuatro manos agitadas son 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, para asegurar la sincronización del envío y recepción del segmento de datos, de acuerdo con la cantidad de datos recibidos, se confirma cuando se envían los datos y cuando se cancela el contacto después de que se completa la recepción, y se establece una conexión virtual.

Cuatro olas de manos: Termine la conexión TCP, lo que significa que cuando se desconecta una conexión TCP, el cliente y el servidor deben enviar un total de 4 paquetes para confirmar la desconexión.

Protocolo de enlace de tres vías TCP, diagrama de temporización de cuatro agujas

1. Tres apretón de manos

El protocolo TCP está ubicado en la capa de transporte y su función es proporcionar servicios de flujo de bytes confiables. Para entregar datos con precisión al destino, el protocolo TCP adopta una estrategia de reconocimiento de tres vías.

Principio de apretón de manos de tres vías:

El primer apretón de manos: 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 con éxito, envía un paquete de datos con la bandera SYN / ACK para confirmar la entrega, lo que indica que lo he recibido;

El tercer apretón de manos: el cliente envía un paquete de datos con una bandera ACK, lo que indica que lo sé, y el apretón de manos ha terminado.

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

El apretón de manos de tres vías se puede entender a través de las siguientes ilustraciones interesantes:

Descripció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. El mensaje contiene el número de secuencia secuencial, que el remitente genera aleatoriamente, y el campo SYN del mensaje se establece en 1, lo que indica que se debe 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 secuencial, que el final de la respuesta genera aleatoriamente, establece SYN en 1 y generará un campo ACK. El valor del campo ACK se envía al cliente En base al número de serie seq, agregue 1 a la respuesta, de modo que cuando el cliente reciba la información, sepa que su solicitud de establecimiento de TCP ha sido verificada. (SYN = 1, ACK = x + 1, seq = y, y es un valor generado aleatoriamente) Aquí, ack más 1 puede entenderse como la confirmación de con quién establecer una conexión;

3. Una vez que el cliente recibe la solicitud de verificación de establecimiento de TCP enviada por el servidor, agregará 1 a su propio número de secuencia y responderá a la solicitud de verificación ACK nuevamente, agregando 1 a la secuencia enviada por el servidor para responder. (SYN = 1, ACK = y + 1, seq = x + 1).

2. Salude cuatro veces

Dado que la conexión TCP es full-duplex, cada dirección debe cerrarse por separado. El principio es que cuando una parte completa su tarea de envío de datos, puede enviar un FIN para terminar la conexión en esta dirección. Recibir un FIN solo significa que no hay flujo de datos en esta dirección. Una conexión TCP aún puede enviar datos después de recibir un FIN. La primera persona en apagar realizará un apagado activo y la otra parte realizará un apagado pasivo.

Principio de cuatro ondas de manos:

La primera ola: el cliente envía un FIN para cerrar la transmisión de datos del cliente al servidor y el cliente entra en el 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 serie es el número de serie recibido + 1 (igual que SYN, un FIN ocupa un número de serie) y el servidor entra en el estado CLOSE_WAIT;

La tercera ola: el servidor envía un FIN para cerrar la transmisión de datos del servidor al cliente y el servidor entra en el estado LAST_ACK;

4ta ola: Después de que el cliente recibe el FIN, el cliente t ingresa al estado TIME_WAIT y luego envía un ACK al servidor, confirmando que el número de serie es el número de serie recibido +1, el servidor ingresa al estado CERRADO y completa cuatro oleadas.

Entre ellos: el número de banderas FIN se establece en 1, lo que indica que la conexión TCP está desconectada.

Puedes entender las cuatro ondas de manos a través de las siguientes divertidas ilustraciones:

Cuatro manos agitadas Descripción detallada del proceso:

1. El cliente envía un mensaje de solicitud de conexión TCP, que contiene el número de secuencia secuencial, que el remitente genera aleatoriamente, y también establece el campo FIN en el mensaje en 1, lo que indica 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 de TCP enviado por el cliente, que contiene el número de secuencia secuencial, que es generado aleatoriamente por el lado que responde, y generará un campo ACK. El valor del campo ACK es el número de secuencia secuencial enviado por el cliente. Agregue 1 a la respuesta, para que cuando el cliente reciba el mensaje, sepa que su solicitud de desconexión TCP ha sido verificada. (FIN = 1, ACK = x + 1, seq = y, y es generado aleatoriamente por el servidor);

3. Una vez que el servidor ha respondido a la solicitud de desconexión TCP del cliente, no desconectará inmediatamente la conexión TCP. El servidor primero se asegurará de que todos los datos transmitidos a A se hayan transmitido antes de la desconexión. Una vez que se confirma que la transmisión de datos se ha completado , El campo FIN del mensaje de respuesta se establecerá en 1 y se generará un número de secuencia secuencial aleatorio. (FIN = 1, ACK = x + 1, seq = z, z es generado aleatoriamente por el servidor);

4. Una vez que el cliente recibe la solicitud de desconexión de TCP del servidor, responderá a la solicitud de desconexión del servidor, incluido el campo seq generado aleatoriamente y el campo ACK. El campo ACK agregará 1 a la secuencia de la solicitud de desconexión TCP del servidor, por lo que Complete la respuesta de verificación solicitada por el servidor. (FIN = 1, ACK = z + 1, seq = h, y h es generado aleatoriamente por el cliente) Hasta
ahora, las 4 ondas de desconexión de TCP se han completado.

3. Análisis de 11 sustantivos estatales

LISTEN:等待从任何远端TCP 和端口的连接请求。

SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。

SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。

ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。

FIN_WAIT_1:等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。

FIN_WAIT_2:等待远端TCP 的连接终止请求。

CLOSE_WAIT:等待本地用户的连接终止请求。

CLOSING:等待远端TCP 的连接终止请求确认。

LAST_ACK:等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)

TIME_WAIT:等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。
TIME_WAIT 两个存在的理由:
          1.可靠的实现tcp全双工连接的终止;
          2.允许老的重复分节在网络中消逝。

CLOSED:不在连接状态(这是为方便描述假想的状态,实际不存在)

Enlace de referencia: protocolo de enlace de tres vías TCP y cuatro manos agitadas y 11 estados

Supongo que te gusta

Origin blog.csdn.net/m0_38106923/article/details/108292454
Recomendado
Clasificación