Home >internet de las cosas industrial>internet de las cosas industrial
Explicación detallada del mecanismo de keep-alive de TCP

Explicación detallada del mecanismo de keep-alive de TCP

El protocolo TCP/IP es actualmente el protocolo más utilizado en las redes de comunicación informática, y también se ha integrado en todos los aspectos de la vida, ya sea el protocolo http/https utilizado para navegar por la web, el protocolo  utilizado por los dispositivos de Internet de las cosas y el protocolo ftp utilizado para descargar archivos. , El protocolo Modbus TCP utilizado en Ethernet industrial y muchos otros protocolos de capa de aplicación se basan en el protocolo TCP/IP. Al transmitir datos, el protocolo TCP/IP también proporciona las siguientes funciones:

1. Inicio lento : detección de congestión del entorno de red

2. Mecanismo de retransmisión: garantizar la integridad de los datos y la fiabilidad de la conexión

3. Ventana deslizante: control de flujo, reducción de la presión del entorno de red y evitando la pérdida de paquetes de datos

4. Keep-alive: Enlace de detección de anomalías

图片.png

Introducción al protocolo TCP

TCP (Protocolo de Control de Transmisión) es un protocolo de comunicación de capa de transporte basado en flujo de bytes, confiable y orientado a conexiones. Proporciona un servicio de flujo de bytes completo, orientado a la conexión y confiable, y es el protocolo más importante y complejo en el conjunto de protocolos TCP/IP

Principales características de TCP

Orientado a la conexión: Antes de la comunicación, debe estrechar la mano tres veces para establecer una conexión y ondear cuatro veces después de la comunicación para liberar la conexión.

ReliableConfiable: Garantizar la fiabilidad de la transmisión de datos mediante la resolución de mensajes fuera de orden/pérdida, retransmisión de tiempo de espera, control de congestión, ventana deslizante, suma de comprobación y otros métodos a través de números de secuencia.

Flujo de bytes: No hay límites de mensaje fijos, y los datos se transmiten en forma de flujo de bytes en TCP.

Dúplex completo: Ambos extremos de la comunicación pueden enviar datos entre sí en cualquier momento, ya sea el cliente o el servidor.


TCP asume que puede obtener servicios de datagramas simples, posiblemente poco confiables, de protocolos de nivel inferior. En principio, TCP debería ser capaz de operar en la parte superior de una variedad de sistemas de comunicaciones, desde conexiones cableadas hasta redes conmutadas por paquetes o conmutadas por circuitos.

TCP Keep-alive escenarios de aplicación

En general, los tipos de conexión entre los clientes TCP y los servidores se pueden dividir en:

1. Enlace corto: Después de que el cliente se conecta al servidor, comienza a interactuar con el servidor, solicitar recursos, informar datos, etc. Una vez completada la interacción, se desconecta del servidor, como el protocolo HTTP, etc.

2. Conexión larga: Después de que el cliente se conecte al servidor, los datos pueden no ser transferidos inmediatamente, pero el estado de la conexión siempre se mantendrá, y ambas partes generalmente no se desconectarán activamente, como el protocolo MQTT, etc.

Cabe señalar que ni la conexión larga ni la conexión corta se especifican por el propio protocolo TCP. TCP solo proporciona a la capa de aplicación métodos y gestión de recursos para establecer y desconectar conexiones.

 

Se puede imaginar que cuando el cliente y el servidor están en un estado de conexión largo, si el servidor pierde energía repentinamente, el servidor no podrá notificar al cliente de la situación anormal, y el cliente no podrá detectar la anomalía del servidor. Solo cuando el cliente envía datos al servidor, el cliente puede conocer la excepción del servidor debido al mecanismo de tiempo de espera. Y los datos se descartan naturalmente. Además, si no se puede liberar la conexión anormal, también conducirá al consumo y desperdicio de recursos del sistema. Por lo tanto, bajo una conexión larga, puede habilitar el mecanismo Keep-alive de TCP para evitar conexiones anormales causadas por cortes de energía inesperados, bloqueos, reinicios o desconexión irracional de la red de enrutamiento intermedia.

TCP Mecanismo de Keep-alive

Parámetros relacionados

SO_KEEPALIVE : Si se puede mantener vivo

TCP_KEEPIDLE : Empieza a mantener vidas después de este período

TCP_KEEPINTVL : Intervalo entre keepalives

TCP_KEEPCNT : Número de keepalives antes de la muerte


SO_KEEPALIVE: Keep-alive puede ser bidireccional, es decir, el cliente puede enviarlo activamente al servidor, o el servidor puede enviarlo activamente al cliente. Después de que SO_KEEPALIVE está habilitado, el mecanismo de mantenimiento de la vida está habilitado.


TCP_KEEPIDLE: Cuando el cliente y el servidor no intercambian datos por el tiempo inactivo de TCP_KEEPIDLE, TCP enviará un paquete de detección a la otra parte.

 

TCP_KEEPINTVL: Si el último paquete de detección no recibió una respuesta, TCP_KEEPINTVL se utilizará como el siguiente intervalo de paquete de detección.

 

TCP_KEEPCNT: Cuando no se recibe respuesta después de enviar el número TCP_KEEPCNT de paquetes de sondeo consecutivos, el ordenador local liberará los recursos de conexión actuales y notificará a la capa de aplicación que la conexión está desconectada.

TCP Keep-alive instancia

Paquete de detección normal

图片.png

Proceso offline

图片.png

A continuación, pruebe la desconexión de KeepAlive: Después de establecer una conexión TCP normal, desenchufe el cable de red: capture el paquete de nuevo como se muestra en la figura a continuación:

图片.png