1. Comprender los paquetes TCP
Formato de paquete TCP_Qué contenido contiene un paquete TCP:
El número de puerto de origen y el número de puerto de destino en el encabezado TCP son los mismos que la IP de origen y la IP de destino en el datagrama IP para determinar de manera única una conexión TCP.
TCP debe establecer una conexión entre sí antes de enviar datos.La conexión aquí significa: ambas partes necesitan guardar la información de cada uno (por ejemplo: IP, Puerto...)
Explicación de los principales campos del mensaje | ||
Secuencia de números | número de serie | Representa el flujo de bytes de datos enviados, asegurando que la transmisión TCP esté en orden y numerando cada byte. El número de secuencia inicial es aleatorio. |
Confirmar número | Confirmar número de serie | El remitente espera recibir el siguiente número de serie, y el número de serie del byte de datos después de la recepción exitosa se incrementa en 1. Sólo válido cuando ACK=1. |
Reconocimiento | ACK | Indicador de número de secuencia de confirmación ACK=1 indica que el número de confirmación es válido ACK=0 indica que el mensaje no contiene información sobre el número de secuencia de confirmación |
sincrónico | SYN | Bandera de número de secuencia de solicitud de conexión, utilizada para establecer una conexión SYN=1 indica una solicitud de conexión |
finalizar | ALETA | Bandera de finalización, utilizada para liberar la conexión, si es 1, significa cerrar el flujo de datos local |
empujar | PSH | enviar |
reiniciar | PRIMERA | reiniciar |
urgente | URG | urgente |
ESCUCHAR | Espere las solicitudes de conexión de cualquier puerto y TCP remoto. | |
FIN_WAIT_1 | Espere una solicitud de terminación de conexión del TCP remoto o un reconocimiento de una solicitud de terminación de conexión enviada anteriormente. | |
FIN_ESPERA_2 | Espere la solicitud de finalización de la conexión del TCP remoto. |
|
CLOSE_WAIT | Esperando una solicitud de terminación de conexión de un usuario local | |
CLAUSURA | Espere la confirmación de la solicitud de finalización de la conexión del TCP remoto | |
LAST_ACK | Esperando el reconocimiento de la solicitud de terminación de conexión enviada previamente al TCP remoto (incluyendo el reconocimiento de su solicitud de terminación de conexión de bytes) | |
TIEMPO DE ESPERA | Espere a que transcurra el tiempo suficiente para asegurarse de que el TCP remoto reciba el reconocimiento de su solicitud de finalización de la conexión. | |
CERRADO | Ya no está conectado. |
Análisis del proceso de protocolo de enlace de dos vías TCP
tres apretón de manos | cliente | enviar mensaje | Servidor |
primer apretón de manos | El cliente envía la información de la solicitud al servidor
|
SYN=1 sec=x |
El servidor recibe la información enviada por el cliente.
|
segundo apretón de manos | El cliente recibe información del servidor. 1. El cliente sabe que está enviando y recibiendo con normalidad el cliente lo sabe todo |
ACK=1 reconocimiento=x+1 SYN=1 secuencia=y |
El servidor envía información al cliente |
tercer apretón de manos | cliente a servidor | seq=x+1 ACK=1 ACK=y+1 |
El servidor recibe la información enviada por el cliente. 1. El servidor sabe que el cliente envía y recibe normalmente |
Del proceso de análisis anterior, se puede ver que dos apretones de manos no pueden llegar a la conclusión de que ambas partes saben que sus propias capacidades de recepción y envío y las de la otra parte son normales. A partir de esto, sabemos que el propósito del protocolo de enlace de tres vías es permitir que tanto el cliente como el servidor sepan que ellos y la otra parte tienen capacidades normales de recepción y envío. Por lo tanto, el protocolo de enlace de tres vías no puede ser menos y se desperdician más recursos de red. |
Tres, análisis TCP de cuatro ondas
saludó cuatro veces | cliente | enviar mensaje | Servidor |
primera ola | El cliente envía la solicitud FIN-WAIT-1 estado 1 |
FIN=1 seg=u |
|
Segunda ola | ACK=1 acuse=u+1 secuencia=v |
服务端收到请求 服务端发送请求 CLOSE-WAIT状态 2 |
|
第三次挥手 | 客户端收到服务器确认结果后进入FIN-WAIT-2状态 客户端发送 3 |
FIN=1 ACK=1 ack=u+1 seq=w |
服务端发送信息 LAST-ACK状态 4 |
第四次挥手 | 客户端收到回复 客户端发送 TIME-WAIT状态 客户端经过2个最长报文段寿命后,客户端CLOSE 5 |
ACK=1 ack=w+1 seq=u+1 |
服务端确认 服务端立刻进入CLOSE状态 6 |
四次挥手需要考虑服务端是否有正在发送的数据 所以客户端发起结束请求,服务端不能立即响应结束。 简单理解: 客户端发起结束请求 服务端收到请求,同时告诉客户端自己收到请求 服务端确认没有正在发送的数据,告诉客户端 客户端收到服务端的确认后结束,服务端结束 |
La primera ola: el cliente envía la liberación FIN=1, su propio número de serie seq=u, y entra en el estado FIN-WAIT-1 La segunda ola: después de recibir el mensaje del cliente, el servidor envía un indicador de confirmación ACK=1
y el número de confirmación del cliente ack=u+1, propio número de serie seq=v, ingresa al estado CLOSE-WAIT
Tercera ola: Después de que el cliente recibe el resultado de confirmación del servidor, ingresa al estado FIN-WAIT-2. En este momento, el servidor envía la señal de liberación FIN=1, la bandera de confirmación ACK=1, el número de secuencia de confirmación ack=u+1, su propio número de secuencia seq=w, el servidor ingresa en LAST-ACK (estado de confirmación final ) ondeado por cuarta vez: el cliente recibe la
respuesta Después de eso, envía la confirmación ACK=1, ack=w+1, own seq=u+1, y el cliente ingresa TIME-WAIT (tiempo de espera). Después de que el cliente haya pasado las 2 vidas más largas del segmento de mensaje, el cliente se CERRA; después de que el servidor recibe la confirmación, ingresa inmediatamente al estado CERRADO.
4. Precisamente debido al protocolo de enlace de tres vías y el protocolo de enlace de cuatro vías del protocolo TCP, TCP es una conexión segura, que es diferente del protocolo UDP.
Cinco, la relación entre HTTP y TCP
TCP es un protocolo de capa de transporte, mientras que HTTP es un protocolo de capa de aplicación.
HTTP se basa en la conexión TCP, por lo que algunas personas dicen que el protocolo de enlace de tres vías es HTTP y algunos dicen que es TCP, que es exactamente TCP.
TCP simplemente establece una conexión, no involucra ningún dato real que necesitemos solicitar y simplemente se transmite.
HTTP se utiliza para enviar y recibir datos.
6. Bienvenido a intercambiar y corregir, sígueme y aprendamos juntos.
Link de referencia
Breve descripción del protocolo de enlace de tres vías TCP y onda de cuatro vías