que keepalivetimeout keep close alive http tcp

keepalivetimeout - HTTP Keep Alive y TCP mantienen vivo



keep alive que es (3)

¿Cómo se implementa HTTP Keep Alive? ¿Utiliza internamente TCP Keep Alive? Si no, ¿cómo detecta el servidor si el cliente está vivo o muerto?


HTTP Keep-Alive es una característica del protocolo HTTP. El servidor web, implementando la característica Keep-Alive, tiene que verificar periódicamente la conexión / socket (para la solicitud HTTP entrante) durante el intervalo de tiempo desde que envió la última respuesta HTTP (en caso de que haya una solicitud HTTP correspondiente). Si no se recibe una solicitud HTTP en el momento del tiempo de activación (segundos) configurado, el servidor web cierra la conexión. No se podrán realizar más solicitudes HTTP después del ''cierre'' realizado por el servidor web. Por otro lado, TCP Keep-Alive es administrado por OS en la capa TCP. HTTP Keep-Alive y TCP Keep-Alive son cosas totalmente independientes.


Sé que esta es una vieja pregunta, pero aún así:

  • HTTP Keep-Alive es una característica que permite que el cliente HTTP (generalmente el navegador) y el servidor (servidor web) envíen múltiples pares de solicitud / respuesta a través de la misma conexión TCP. Esto disminuye la latencia para la segunda, tercera, ... solicitud HTTP, disminuye el tráfico de red y similar.

  • TCP keepalive es una bestia totalmente diferente. Mantiene la conexión TCP abierta mediante el envío de pequeños paquetes. Además, cuando se envía el paquete, sirve como un control para que se notifique al remitente tan pronto como se desconecte (tenga en cuenta que NO es así); hasta que intentemos comunicarnos a través de una conexión TCP no tenemos idea de si está correcto o no. )

Para responder sus preguntas sobre HTTP Keep-Alive:

How is HTTP Keep Alive implemented?

En pocas palabras, el servidor HTTP no cierra la conexión TCP después de cada respuesta, pero espera algo de tiempo si alguna otra solicitud HTTP también lo hará. Después de un tiempo de espera, lo cierra de todos modos.

Does it internally use TCP Keep Alive?

No, al menos no veo sentido en eso.

If not, how does the server detect if the client is dead or alive?

No lo hace, no es necesario. Si un cliente envía una solicitud, obtendrá la respuesta. Si el cliente no envía nada a través de una conexión TCP (tal vez porque la conexión está muerta), un tiempo de espera cerrará la conexión; el cliente, por supuesto, lo notará y enviará la solicitud a través de otra conexión TCP si es necesario.


http keep-alive solo está haciendo que tcp viva más tiempo para poder transferir solicitudes múltiples http. Después de que se agote el tiempo de espera, la conexión tcp se cerrará. tcp keep-alive es solo un mecanismo que mantiene la conexión tcp, o verifica que la conexión tcp no esté cerrada