stringtranslate.com

Mantenerse vivo

Un keepalive ( KA ) es un mensaje que envía un dispositivo a otro para comprobar que el enlace entre ambos está funcionando o para evitar que el enlace se interrumpa.

Descripción

Una vez que se ha establecido una conexión TCP, se define que esa conexión es válida hasta que un lado la cierra. Una vez que la conexión ha entrado en el estado conectado, permanecerá conectada indefinidamente. Pero, en realidad, la conexión no durará indefinidamente. Muchos sistemas de firewall o NAT cerrarán una conexión si no ha habido actividad en un período de tiempo. La señal Keep Alive se puede utilizar para engañar a los hosts intermedios para que no cierren la conexión debido a la inactividad. También es posible que un host ya no esté escuchando (por ejemplo, una aplicación o un fallo del sistema). En este caso, la conexión se cierra, pero nunca FINse envió ningún mensaje. En este caso, se puede utilizar un paquete KeepAlive para interrogar a una conexión y comprobar si sigue intacta.

Una señal de keepalive se envía a menudo a intervalos predefinidos y desempeña un papel importante en Internet . Después de enviar una señal, si no se recibe respuesta, se supone que el enlace está inactivo y los datos futuros se enrutarán por otra ruta hasta que el enlace vuelva a funcionar. Una señal de keepalive también se puede utilizar para indicar a la infraestructura de Internet que se debe preservar la conexión. Sin una señal de keepalive, los enrutadores intermedios habilitados para NAT pueden interrumpir la conexión después de un tiempo de espera.

Dado que el único propósito es encontrar enlaces que no funcionan o indicar conexiones que deben conservarse, los mensajes keepalive tienden a ser breves y no ocupan mucho ancho de banda . Sin embargo, su formato preciso y las condiciones de uso dependen del protocolo de comunicación.

TCP activo

Los keepalives del Protocolo de Control de Transmisión (TCP) son una característica opcional y, si se incluyen, deben estar desactivados de manera predeterminada. [1] El paquete keepalive no contiene datos. En una red Ethernet , esto da como resultado tramas de tamaño mínimo (64 bytes [2] ). Hay tres parámetros [3] relacionados con el keepalive:

Cuando dos hosts están conectados a través de una red mediante TCP/IP, se pueden usar paquetes Keepalive de TCP para determinar si la conexión aún es válida y finalizarla si es necesario.

La mayoría de los hosts que admiten TCP también admiten TCP Keepalive. Cada host (o par) envía periódicamente un paquete TCP a su par que solicita una respuesta. Si se envía una cierta cantidad de keepalives y no se recibe ninguna respuesta (ACK), el host que envía finalizará la conexión desde su extremo. Si se finalizó una conexión debido a un tiempo de espera de TCP Keepalive y el otro host finalmente envía un paquete para la conexión anterior, el host que finalizó la conexión enviará un paquete con el indicador RST configurado para indicar al otro host que la conexión anterior ya no está activa. Esto obligará al otro host a finalizar su extremo de la conexión para que se pueda establecer una nueva conexión.

Por lo general, los mensajes Keepalive TCP se envían cada 45 o 60 segundos en una conexión TCP inactiva, y la conexión se interrumpe después de que se pierden 3 ACK secuenciales. Esto varía según el host, por ejemplo, de manera predeterminada, las PC con Windows envían el primer paquete Keepalive TCP después de 7200000 ms (2 horas), luego envían 5 mensajes Keepalive a intervalos de 1000 ms, interrumpiendo la conexión si no hay respuesta a ninguno de los paquetes Keepalive. Los hosts Linux envían el primer paquete Keepalive TCP después de 2 horas (predeterminado desde Linux 2.2), luego envían 9 sondas Keepalive (predeterminado desde Linux 2.2) a intervalos de 75 segundos (predeterminado desde Linux 2.4), interrumpiendo la conexión si no hay respuesta a ninguno de los paquetes Keepalive. [4]

Keepalive en capas superiores

Dado que la función keepalive de TCP es opcional, varios protocolos (por ejemplo, SMB [5] y TLS [6] ) implementan su propia función keepalive sobre TCP. También es común que los protocolos que mantienen una sesión a través de un protocolo sin conexión, por ejemplo, OpenVPN sobre UDP, [7] implementen su propia función keepalive.

Otros usos

HTTP keepalive

El Protocolo de Transferencia de Hipertexto utiliza la palabra clave "Keep-Alive" en el encabezado "Connection" para indicar que la conexión debe mantenerse abierta para futuros mensajes (este es el valor predeterminado en HTTP 1.1, pero en HTTP 1.0 el valor predeterminado era utilizar una nueva conexión para cada par solicitud/respuesta). [8] A pesar del nombre similar, esta función no está relacionada en absoluto.

Véase también

Referencias

  1. ^ Braden, Robert T. (octubre de 1989). Braden, R. (ed.). "Requisitos para hosts de Internet: capas de comunicación". IETF . doi : 10.17487/RFC1122 . Consultado el 8 de noviembre de 2013 .
  2. ^ Estándar IEEE para Ethernet . Estándar IEEE para Ethernet, 802.3-2015 – sección uno. 2016. p. 108. doi :10.1109/IEEESTD.2016.7428776. ISBN 978-1-5044-0078-7.
  3. ^ "Uso de TCP keepalive en Linux". tldp.org . Consultado el 29 de julio de 2016 .
  4. ^ "tcp(7) - Página del manual de Linux" . Consultado el 14 de agosto de 2024 .
  5. ^ "Estándar de protocolo para un servicio NetBIOS en un transporte TCP/UDP: conceptos y métodos". IETF . Marzo de 1987. doi :10.17487/RFC1001 . Consultado el 18 de junio de 2015 .
  6. ^ Williams, Michael; Tüxen, Michael; Seggelmann, Robin (febrero de 2012). "Extensión Heartbeat de seguridad de la capa de transporte (TLS) y seguridad de la capa de transporte de datagramas (DTLS)". IETF . doi :10.17487/RFC6520 . Consultado el 18 de junio de 2015 .
  7. ^ "Página del manual de OpenVPN" . Consultado el 18 de junio de 2015 .
  8. ^ "Discurso de Jim Driscoll sobre el mantenimiento del protocolo HTTP". Archivado desde el original el 13 de agosto de 2010.