Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Por qué el protocolo TCP requiere un protocolo de enlace de tres vías?

¿Por qué el protocolo TCP requiere un protocolo de enlace de tres vías?

Últimamente he estado leyendo el código fuente de la parte de redes del kernel de Linux. Después de leer, pensé en una pregunta muy básica y clásica: "¿Por qué el protocolo TCP requiere tres apretones de manos? Por la tarde, tuve algunas ideas propias y las grabé.

Sabemos que TCP El protocolo es un protocolo de transmisión full-duplex confiable y orientado a la conexión. Full-duplex significa que ambas partes pueden enviar y recibir datos al mismo tiempo, como si fuera una llamada telefónica. Para garantizar que la conexión se pueda establecer con éxito. se debe garantizar que ambas partes puedan al menos comunicarse de manera confiable una vez. Por conveniencia, suponga que las dos partes que participan en la comunicación se llaman A y B. Al establecer una conexión, tanto A como B deben pensar en eso. ellos y la otra parte pueden enviar y recibir datos al mismo tiempo antes de establecer la conexión. No puede enviar y recibir datos por sí solo.

Suponga que A inicia una conexión TCP y envía un paquete SYN a B. como se muestra en la siguiente figura

Se recibe en B. Antes del paquete SYN, la comprensión de A y B sobre sus capacidades ha cambiado, es decir, A puede reconocer que tiene la capacidad de enviar los datos. paquete, y supone que no tiene la capacidad, porque no sabe si puede recibir el paquete de datos, ni sabe si B puede recibir y enviar paquetes de datos, como se muestra en la siguiente figura

Después de que B recibe el paquete de datos SYN, B puede pensar que tiene la capacidad de recibir paquetes de datos y puede saber que el par A tiene la capacidad de enviar paquetes de datos (debido al paquete SYN recibido). >

Cuando B recibe el paquete SYN, enviará el paquete SYN ACK como se muestra en la siguiente figura. Antes de que A reciba el paquete de datos, B puede pensar que es capaz de enviar el paquete de datos. La percepción de A y B es:

Después de que A recibe el paquete SYN ACK, A puede pensar que es capaz de enviar el paquete de datos y B recibe con éxito su propio paquete SYN. También es capaz de recibir datos. Al mismo tiempo, este SYN ACK proviene de B, y también se sabe que B tiene la capacidad de enviar datos. En este momento, la percepción de A y B se vuelve: <. /p>

En este momento, el lado A ya puede pensar que tanto él como el par B tienen la capacidad de enviar y recibir, pero en este momento, B no puede confirmar que A tiene la capacidad de recibir sus propios paquetes de datos. normalmente, A necesita enviar el paquete ACK nuevamente para permitir que B confirme que puede recibir el paquete de datos normalmente y "iluminar" toda la "cognición" de B. De esta manera, la comunicación full-duplex puede continuar normalmente. como se muestra en la siguiente figura:

Cuando B recibe con éxito el paquete ACK enviado por A, tanto A como B pueden considerarse (es decir, el otro extremo) que tienen la capacidad de enviar y recibir datos, como como se muestra a continuación

De lo anterior se puede ver en el proceso que 3 apretones de manos son el número mínimo de "apretones de manos" requeridos para que ambas partes se den cuenta de que tanto ellos como la otra parte pueden llevar a cabo una actividad normal y completa. -comunicación dúplex. Entonces TCP eligió el protocolo de enlace de tres vías ~