¿Cómo es HTTP mantener vivo diferente del tiempo de espera de conexión?

Son cosas diferentes e interactúan entre sí.

De manera predeterminada, en HTTP 1.0, se suponía que se realizaba una conexión tan pronto como el cliente había pedido algo y el servidor había terminado de enviarlo; el servidor cerró la conexión de inmediato. Después de un tiempo, se agregó el encabezado keep-alive (” Connection: keep-alive “): permite que un cliente solicite al servidor que no cierre inmediatamente la conexión, lo que le permite al cliente reutilizarla para otras solicitudes. A partir de HTTP 1.1, se supone que las conexiones se mantienen activas a menos que el cliente solicite el comportamiento anterior (” Connection: close “).

Sin embargo, incluso una conexión para mantener la vida no durará para siempre, eso podría conducir a una inmensa cantidad de conexiones abiertas. La mayoría de los servidores web eliminan las conexiones inactivas con bastante rapidez, como 10-20 segundos. Eso es más que suficiente para que la mayoría de los clientes carguen todo, e incluso si tienen que reconectarse, eso todavía ahorra mucho en comparación con la reconexión para cada solicitud. Los clientes también desconectan las conexiones inactivas de mantenimiento después de un tiempo (generalmente uno o dos minutos), para salvarse a sí mismos y a los servidores de un desperdicio inútil.

En resumen, mantener vivo significa que las conexiones se mantendrán después de que finalice la primera solicitud, mientras que el tiempo de espera es cuánto tiempo se mantiene una conexión de mantenimiento sin usar.

Hola a todos,

Se define un encabezado Keep-Alive para HTTP. Este encabezado de extremo a extremo informa a los hosts sobre las políticas de administración de la conexión. Los parámetros se definen para el tiempo de espera de conexión inactiva y el recuento máximo de solicitudes.

La conexión persistente HTTP, también llamada HTTP keep-alive, o reutilización de conexión HTTP, es la idea de usar una única conexión TCP para enviar y recibir múltiples solicitudes / respuestas HTTP, en lugar de abrir una nueva conexión para cada par de solicitud / respuesta.

Este encabezado es enviado por cualquiera de los hosts que participan en una conexión persistente. Los valores pueden establecerse según la política implementada por servidores, clientes e intermediarios. Los valores también se pueden establecer en función del conocimiento que un host tiene sobre los intermediarios de capa inferior en la ruta de la solicitud, como un middlebox TCP. Tales cajas intermedias, en particular los traductores de direcciones de red (NAT), con frecuencia descartan asignaciones para conexiones inactivas, lo que hace que la conexión falle después de una cierta duración de inactividad.

El valor de los parámetros Keep-Alive puede cambiar en cada solicitud o respuesta enviada en una conexión. La ausencia del encabezado o de cualquier parámetro implica que todavía se aplica cualquier valor proporcionado previamente.

Como encabezado de extremo a extremo, este encabezado solo se aplica a una única conexión de nivel de transporte. Si se agrega un encabezado Keep-Alive a una solicitud o respuesta, el encabezado Connection DEBE incluir la etiqueta Keep-Alive. Esto garantiza que los intermediarios compatibles que no reconocen este encabezado lo eliminen antes de reenviar una solicitud.

Un host establece el valor del parámetro de tiempo de espera en el tiempo que el host permitirá que una conexión inactiva permanezca abierta antes de cerrarse. Una conexión está inactiva si un host no envía ni recibe datos.

El valor del parámetro de tiempo de espera es un único entero en segundos.

Un host PUEDE mantener una conexión inactiva abierta durante más tiempo que el indicado, pero DEBE intentar mantener una conexión durante al menos el tiempo indicado.

El cliente no puede especificar el tiempo de espera, es la configuración del servidor la que determina el valor de tiempo de espera máximo. El encabezado Keep-Alive adicional puede informar al cliente cuánto tiempo el servidor está dispuesto a mantener la conexión abierta (tiempo de espera = valor N) y cuántas solicitudes puede hacer a través de la misma conexión (max = M) antes de que el servidor obligue a cerrar de la conexión.