2012-02-17 13 views

Respuesta

15

HTTP Keep-Alive es una función 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.

36

Sé que esto es una cuestión de edad, pero aún así:

  • mantenimiento de conexiones HTTP es una característica que permite a los clientes HTTP (normalmente navegador) y el servidor (servidor web) para enviar varios pares de petición/respuesta sobre 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 a sus preguntas acerca de mantenimiento de conexiones HTTP:

How is HTTP Keep Alive implemented? 

En pocas palabras, el servidor HTTP no se cierra la conexión TCP después de cada respuesta, sino que espera algún tiempo si algún otro HTTP solicitud vendrá sobre él también. 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.

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.

-2

http keep-alive solo hace que tcp viva más tiempo para transferir la solicitud http múltiple. Después del tiempo de espera keep-alive, la conexión tcp se cerrará. tcp keep-alive es solo un mecanismo que mantiene la conexión tcp o comprueba que la conexión tcp no está cerrada

Cuestiones relacionadas