¿Dónde se guarda esta información ("esta conexión es entre la computadora A
y el servidor F
")?
Una conexión TCP es reconocida por la IP de origen y el puerto y la IP y el puerto de destino. Su sistema operativo, todos los dispositivos intermedios de sesión y el sistema operativo del servidor reconocerán la conexión mediante esto.
HTTP funciona con solicitud-respuesta: el cliente se conecta al servidor, realiza una solicitud y obtiene una respuesta. Sin Keep-Alive, la conexión a un servidor HTTP se cierra después de cada respuesta. Con HTTP Keep-Alive, mantiene abierta la conexión TCP subyacente hasta que se cumplen ciertos criterios.
Esto permite múltiples pares de solicitud-respuesta a través de una sola conexión TCP, eliminando algunos de los inicios de conexión relativamente lentos de TCP.
Cuando el IIS (F) envía el encabezado de mantener vivo (o el usuario envía el mensaje de mantener vivo), ¿significa que (E, C, B) guarda una conexión?
No. Los enrutadores no necesitan recordar sesiones. De hecho, no es necesario que varios paquetes TCP que pertenecen a la misma sesión TCP pasen por los mismos enrutadores, es decir, que TCP debe administrarlos. Los enrutadores simplemente eligen la mejor ruta IP y envían paquetes. Keep-alive es solo para el cliente, el servidor y cualquier otro dispositivo intermedio de sesión.
que es solo para mi sesión?
¿Significa que nadie más puede usar esa conexión?
Esa es la intención de las conexiones TCP : es una conexión de extremo a extremo destinada solo a esas dos partes.
Si es así, ¿significa que mantener vivo el encabezado reduce el número de usuarios de conexión superpuestos?
Defina "conexiones superpuestas". Consulte Conexión persistente HTTP para conocer algunas ventajas y desventajas, como:
- Menor uso de CPU y memoria (porque hay menos conexiones abiertas simultáneamente).
- Habilita la canalización HTTP de solicitudes y respuestas.
- Reducción de la congestión de la red (menos conexiones TCP).
- Latencia reducida en solicitudes posteriores (sin protocolo de enlace).
si es así, ¿durante cuánto tiempo se me guarda la conexión? (en otras palabras, si configuro mantener vivo - "mantener" hasta cuando?)
Una respuesta típica de mantener vivo se ve así:
Keep-Alive: timeout=15, max=100
Consulte el encabezado Keep-Alive del Protocolo de transferencia de hipertexto (HTTP), por ejemplo (un borrador para HTTP / 2 donde el encabezado Keep-Alive se explica con más detalle que 2616 y 2086 ):
Un host establece el valor del timeout
parámetro en el tiempo que el host permitirá que una conexión inactiva permanezca abierta antes de que se cierre. Una conexión está inactiva si un host no envía ni recibe datos.
El max
parámetro indica el número máximo de solicitudes que hará un cliente, o que un servidor permitirá que se realicen en la conexión persistente. Una vez que se haya enviado el número especificado de solicitudes y respuestas, el host que incluyó el parámetro podría cerrar la conexión.
Sin embargo, el servidor es libre de cerrar la conexión después de un tiempo arbitrario o un número de solicitudes (siempre y cuando devuelva la respuesta a la solicitud actual). Cómo se implementa esto depende de su servidor HTTP.