¿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 y TCP keep alive
Respuesta
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.
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.
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
- 1. UIWebView y keep-alive?
- 2. NSURLConnection y keep-alive
- 3. Tomcat, HTTP Keep-Alive y Java's HttpsUrlConnection
- 4. Python urllib2 con keep alive
- 5. ¿Cómo enviar solicitudes consecutivas con HTTP keep-alive en node.js?
- 6. Cómo probar HTTP Keep alive en realidad está funcionando
- 7. Habilitar Keep-Alive (Velocidad de página)
- 8. Cómo deshabilitar Keep-Alive por Directorio
- 9. Node.js https.request with keep-alive header
- 10. ¿Cómo funciona Keep-alive con ThreadPoolExecutor?
- 11. es una solicitud HTTP/1.1 implícitamente keep-alive por defecto?
- 12. ¿Cómo puedo desactivar HTTP Keep-Alive en ASP.NET MVC?
- 13. "Conexión: Keep-Alive" en la respuesta del servidor
- 14. Posible habilitar Keep-alive con un balanceador de carga?
- 15. Uso de la función keep-alive en .htaccess
- 16. cómo manejar la conexión keep alive en android Service
- 17. Implementando mensajes keep-alive en Netty usando WriteTimeoutHandler
- 18. Cómo configurar el tiempo de espera HTTP Keep-Alive en un servidor nodejs
- 19. Problema al admitir sockets keep-alive en un servidor http de fabricación propia
- 20. Cómo el keep-alive de HTTP puede/juega un papel en la aplicación AJAX
- 21. SPDY es diferente de la multiplexación http a través de conexiones keep alive
- 22. Usar HTTP Keep-Alive para que el servidor se comunique con el cliente
- 23. ¿Por qué Connection: keep-alive aún se especifica en los encabezados http (¿no está obsoleto)?
- 24. ¿Cómo sé cuándo DEBE cerrar una conexión HTTP 1.1 Keep-Alive?
- 25. ¿mantiene http: keep-alive abierto los recursos de php o libera todos los recursos?
- 26. HTTP no tiene estado, entonces, ¿qué quiere decir con keep-alive?
- 27. ¿Cómo puedo desactivar keep-alive en las solicitudes de cliente del servicio web ASP.NET?
- 28. ¿Se puede usar gzip sobre SSL? Y Conexión: encabezados Keep-Alive
- 29. Mantener programáticamente HTTP Session Alive sin navegador
- 30. Keeping Alive Rtsp Connection