[Red informática] -TCP-Mecanismo de mantenimiento de vida

introducción

Mecanismo de mantenimiento de vidaEs una forma de detectar a la otra parte sin afectar el contenido del flujo de datos. Se implementa mediante un temporizador de mantenimiento . Cuando se activa el temporizador, un extremo de la conexión enviará un mensaje de sonda de mantenimiento de conexión (denominado mantenimiento de conexión) y el otro extremo enviará un ACK como respuesta al recibir el mensaje.

El mecanismo keepalive no forma parte de la especificación TCP. El requisito de host RFC 1122 da tres razones para ello:

  1. Cuando ocurre un breve error de red, el mecanismo de mantener vivo desconectará una buena conexión (el extremo que recibe el mensaje de mantenimiento de vida puede no responder debido a una falla temporal y la falla puede recuperarse pronto, pero el otro extremo no lo sabe). solo sabía que el mensaje de mantener vivo que envió no recibió respuesta, por lo que creyó erróneamente que la otra parte ya no estaba funcionando, por lo que se desconectó)
  2. El mecanismo de mantenimiento de actividad ocupará ancho de banda innecesario (porque no afecta el flujo de datos y requiere una sobrecarga de paquetes adicional)
  3. Gastar más dinero en Internet con tráfico medido (también debido a los paquetes adicionales utilizados)

La función de mantener vivo generalmente se proporciona para aplicaciones de servidor. La aplicación de servidor espera saber si el host del cliente falla o se va, para decidir si vincula recursos al cliente. Después de todo, como proveedor de servicios, si la otra parte ya no funciona, naturalmente Es necesario poner fin al comportamiento de prestación de servicios para ahorrar sus propios recursos operativos.

El uso de la función TCP keepalive para detectar hosts salientes ayuda al servidor a tener conversaciones de relativamente corto plazo con clientes no interactivos, como servidores web, POP, etc.; es posible que los servidores que implementan servicios interactivos de más largo plazo no quieran usarlo. Funciones de mantenimiento de conexión, como ssh y sistemas de inicio de sesión remoto, como el escritorio remoto de Windows

describir

La función de mantener vivo está desactivada de forma predeterminada. Cualquier extremo de la conexión TCP puede solicitar activar esta función. Se puede configurar en un extremo de la conexión, en ambos extremos o en ninguno de los extremos.

Si está dentro de un período de tiempo (llamado tiempo keepalive , tiempo keepalive keepalive\ tiempok ee p a l i v e time  ) La conexión está en unestado inactivo . El extremo que activa la función keep-alive enviará un mensaje de detección de keep-alive a la otra parte . Si el remitente no recibe un mensaje de respuesta, entoncesel intervalo de keepalive(intervalo de keepalive keepalive\ intervalok ee p a l i v e in t er v a l  ), ​​continuará enviando mensajes de sonda keepalive hasta que el número de mensajes de sonda enviados alcanceel número de sondas keepalive(keepalive probe keepalive\ probek ee p a l i v e pro b e )  (porque una sola falta de respuesta no es suficiente para determinar si la conexión ha dejado de funcionar), entonces se confirmará que el otro host es inalcanzable y la conexión se interrumpirá.

Las tres variables mencionadas anteriormente corresponden a las variables sysctl en el sistema Linux net.ipv4.tcp_keepalive_time, y el valor predeterminado es net.ipv4.tcp_keepalive_intvl7200 segundos , 75 segundos y 9 detecciones .net.ipv4.tcp_keepalive_probes

El mensaje de detección de mantenimiento de actividad es un segmento de mensaje vacío (o contiene solo 1 byte) y su número de secuencia es igual al número de secuencia máximo del mensaje ACK enviado por el otro host menos 1 . Los datos de este número de secuencia se han recibido correctamente, por lo que no afectarán los segmentos del mensaje que han llegado, pero la respuesta devuelta por el mensaje de la sonda puede determinar si la conexión todavía está funcionando. Ni la sonda ni su mensaje de respuesta contienen ninguna información nueva
. Datos válidos y no serán retransmitidos cuando se pierdan

En el flujo de trabajo de la función de mantener activo, la parte que activa esta función encontrará que la otra parte se encuentra en uno de los cuatro estados siguientes:

  1. El anfitrión de la otra parte todavía está funcionando y se puede contactar con él. Si el TCP de la otra parte responde normalmente al mensaje de detección de mantenimiento de actividad, el extremo solicitante restablecerá el temporizador de mantenimiento de actividad; si una aplicación transmite datos a través del enlace antes de que se agote el tiempo del temporizador (finalizando el estado inactivo), el temporizador se desactivará. restablecer nuevamente Establecer como valor de tiempo de mantenimiento de actividad
  2. El anfitrión de la otra parte falló. En este momento, el TCP de la otra parte no responderá y continuará enviando mensajes de sondeo después del intervalo de tiempo de mantenimiento de actividad, hasta que se envíe un total de un número específico de sondeos de mantenimiento de actividad y no se reciba respuesta a ningún mensaje de sondeo. , el extremo solicitante pensará que la otra parte está cerrada y se desconectará
  3. La otra parte falló y se reinició. En este momento, la conexión en el lado solicitante equivale a una conexión medio abierta. En este momento, el extremo solicitante recibirá una respuesta a su mensaje de detección, pero esta respuesta es un segmento de reinicio y el extremo solicitante se desconectará.
  4. El host de la otra parte todavía está funcionando, pero no puede llegar al extremo solicitante por algún motivo, como por ejemplo que la red no puede transmitir. Esta situación es similar al estado 2. TCP no puede distinguir entre los dos estados.

En el primer caso, la capa de aplicación solicitante no será consciente de la detección de mantener vivo (a menos que la capa de aplicación solicitante active la función de mantener vivo). Todas las operaciones se completan en la capa TCP y son transparentes para la capa de aplicación; el segundo y tercero, en 4 casos, la capa de aplicación solicitante recibirá un informe de error de su capa TCP, como "tiempo de espera de conexión", "conexión restablecida por la otra parte", etc.

Supongo que te gusta

Origin blog.csdn.net/Pacifica_/article/details/123960850
Recomendado
Clasificación