¿Por qué el protocolo de enlace de tres vías de TCP es cuatro veces?

¿Por qué el protocolo de enlace de tres vías de TCP es cuatro veces?

Operación y Mantenimiento YouthO & M Youth

Introducción a TCP

TCP proporciona un servicio de flujo de bytes confiable y orientado a la conexión. Entre ellos, orientado a la conexión significa que dos aplicaciones que usan TCP (generalmente un cliente y un servidor) deben establecer una conexión TCP antes de intercambiar datos entre sí. En una conexión TCP, solo dos partes se comunican entre sí; y el servicio de flujo de bytes significa que dos aplicaciones intercambian un flujo de bytes compuesto por bytes de 8 bits a través de un enlace TCP, y TCP no inserta un identificador de registro en el flujo de bytes.
¿Por qué el protocolo de enlace de tres vías de TCP es cuatro veces?

Tres apretón de manos

TCP establece una relación de conexión a través de un protocolo de enlace de tres vías y luego realiza el intercambio de datos después de que se establece la relación de conexión.

¿Cómo funciona el apretón de manos de tres vías?

  • El primer apretón de manos: el cliente envía un mensaje de solicitud al servidor, SYN = 1, ACK = 0, se genera aleatoriamente un valor seq = x y el cliente entra en el estado SYN_SENT, esperando que el servidor confirme.
  • El segundo apretón de manos: después de que el servidor recibe el mensaje de solicitud, si acepta establecer una conexión, envía un mensaje de confirmación de conexión al cliente, SYN = 1, ACK = 1, ack = x + 1, y genera aleatoriamente un valor seq = y, el servidor entra en el estado SYN_RCVD.

  • El tercer apretón de manos: después de que el cliente recibe la confirmación, comprueba si ack es x + 1 y ACK es 1, y si es correcto, envía un mensaje de reconocimiento al servidor, ACK = 1, ack = y + 1, seq = x + 1, el servidor comprueba si ack es x + 1 y ACK es 1. Si es correcto, la conexión se estableció correctamente, el cliente y el servidor ingresan al estado ESTABLECIDO, completan el protocolo de enlace de tres vías y luego comienzan a transmitir datos entre Cliente y servidor.

¿Por qué el protocolo de enlace de tres vías de TCP es cuatro veces?

¿Por qué necesitas estrechar la mano tres veces? ¿No puedes hacerlo dos veces?

Imagine que A envía una solicitud para conectarse por primera vez, pero está atascado en un cierto nodo de la red, y A retransmite después de un tiempo de espera, y luego todo es normal esta vez, y A y B están transmitiendo datos felizmente. Una vez que se libera la conexión, la solicitud de conexión perdida llega repentinamente a B. Si se trata de un protocolo de enlace bidireccional, B envía un acuse de recibo y ha establecido una conexión. De hecho, a A no le importa esta confirmación, porque no quiero enviar datos en absoluto. Pero B pensó tontamente que había datos por venir, y esperó tan duro, que resultó en un desperdicio de recursos. El tercer protocolo de enlace es evitar que las solicitudes de conexión no válidas lleguen al servidor y permitir que el servidor abra la conexión por error.

Comprender la postura correcta para el apretón de manos de tres vías.

(1) En el primer apretón de manos, después de que A envía un mensaje a B, B recibe el mensaje. B puede confirmar la capacidad de envío de A y la capacidad de recepción de B.
(2) En el segundo apretón de manos, B envía un mensaje a A y A recibe el mensaje. A puede confirmar la capacidad de envío y recepción de A, y A también puede confirmar la capacidad de recepción y envío de B.
(3) En el tercer apretón de manos, A envía un mensaje a B y B recibe el mensaje. B puede confirmar la capacidad de recepción de A y la capacidad de envío de B.

Una explicación más realista es: A llama a B para
estrechar la mano por primera vez: Hola, soy A, puedes oírme
segundo apretón de manos: Sí, soy B, ¿puedes oírme?
El tercer apretón de manos: Yo Escuché eso, podemos empezar a chatear. El
apretón de manos es en realidad para verificar si las capacidades de envío y recepción de ambas partes son normales, ¿qué piensas?

Saludar cuatro veces

 TCP通过四次挥手进行连接关闭。

¿Cómo saludar cuatro veces?

  • Wave por primera vez: el cliente envía un FIN = 1, seq = u para cerrar la transferencia de datos del cliente al servidor, y el cliente entra en el estado FIN_WAIT_1.

  • La segunda ola: después de recibir el FIN, el servidor envía un mensaje de reconocimiento al cliente, ACK = 1, seq = v, ack = u + 1 (igual que SYN, un FIN ocupa un número de secuencia), y el servidor ingresa el Estado CLOSE_WAIT. En este momento, el enlace TCP se encuentra en un estado medio cerrado, es decir, el cliente no tiene datos para enviar, pero si el servidor envía datos, el cliente aún tiene que recibirlos.

  • La tercera ola: el servidor envía un FIN para cerrar la transferencia de datos del servidor al cliente, y el servidor entra en el estado LAST_ACK.

  • La cuarta ola: Después de que el Cliente recibe el FIN, el Cliente 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, y espera el 2.

  • Ingrese al estado CERRADO después de MSL (tiempo máximo de supervivencia del mensaje). El servidor entra en el estado CERRADO después de recibir el ACK del cliente y completa cuatro oleadas

¿Por qué el protocolo de enlace de tres vías de TCP es cuatro veces?

¿Por qué saludar cuatro veces en lugar de dos, tres veces?

(1) Debido a la comunicación de dúplex completo de TCP, ambas partes pueden actuar como remitentes de datos. Si A quiere cerrar la conexión, debe esperar a que se envíen los datos antes de enviar FIN a B. (En este momento, A está en un estado medio cerrado)

(2) B envía una confirmación ACK, y si B quiere enviar datos en este momento, envíelos (por ejemplo, realice algún procesamiento previo a la publicación)

(3) Después de que B envía los datos, envía FIN a A. (En este momento, B está en un estado semicerrado)

(4) A envía ACK y entra en el estado TIME-WAIT

(5) Si el mensaje de B no se recibe después de 2MSL, se determina que B ha recibido el ACK. (En este momento, A y B están completamente cerrados)

¿Por qué esperar a 2MSL?

El cliente envía la respuesta ACK final, pero el ACK puede perderse. Si el servidor no recibe el ACK, continuará enviando repetidamente el segmento FIN. Por lo tanto, el Cliente no se puede cerrar inmediatamente, debe confirmar que el Servidor ha recibido el ACK. El Cliente entrará en el estado TIME_WAIT después de enviar el ACK. El cliente establecerá un temporizador para esperar 2MSL. Si el FIN se recibe nuevamente dentro de este tiempo, el Cliente reenviará el ACK y esperará 2MSL nuevamente. MSL se refiere al tiempo máximo de supervivencia de un segmento en la red y 2MSL es el tiempo máximo requerido para una transmisión y una respuesta. Si el Cliente no recibe el FIN nuevamente hasta 2MSL, el Cliente concluye que el ACK se ha recibido correctamente y finaliza la conexión TCP.

Comprender la postura correcta para cuatro ondas.

  • Saludo por primera vez: A le dijo a B que no tengo datos para enviar y que estoy a punto de cerrar la conexión. ¿Quieres enviar datos?

  • Ola la segunda vez: B envía una respuesta de confirmación, si hay datos, envía los últimos datos

  • Ondas por tercera vez: B le dice a A, también quiero cerrar la conexión

  • Cuarta ola: A le dice a B que puede cerrarla, y yo también la cerré aquí.

Supongo que te gusta

Origin blog.51cto.com/15082392/2656397
Recomendado
Clasificación