Clarificación de encabezado Keep-alive

Me pidieron que construyera un sitio, y uno de los co-desarrolladores me dijo que necesitaría incluir el encabezado keep-alive.

Bueno, leí mucho al respecto y todavía tengo preguntas.

msdn ->

La conexión abierta mejora el rendimiento cuando un cliente realiza múltiples solicitudes de contenido de páginas web, ya que el servidor puede devolver el contenido para cada solicitud más rápidamente. De lo contrario, el servidor debe abrir una nueva conexión para cada solicitud

Mirando a

enter image description here

  • Cuando The IIS (F) envía el encabezado keep alive ( o el usuario envía keep-alive ), ¿significa que ( E , C , B ) guarda una conexión que es solo para mi sesión?
  • ¿Dónde se guarda esta información ( “esta conexión pertenece a” Royi “ )?
  • ¿Significa que nadie más puede usar esa conexión?
  • Si es así, ¿significa que keep alive-header reduce el número de usuarios de conexión superpuestos?
  • si es así, ¿por cuánto tiempo se guarda la conexión para mí? (en otras palabras, si configuro keep alive – “keep” until when?)

ps para los interesados:

al hacer clic en esta página de muestra se volverá a mantener el encabezado vivo

    ¿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 IP de origen y puerto y IP de destino y puerto. Su sistema operativo, todos los dispositivos de sesión intermedia y el sistema operativo del servidor reconocerán la conexión por este.

    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 la conexión TCP subyacente abierta hasta que se cumplan ciertos criterios.

    Esto permite múltiples pares de solicitud-respuesta en una sola conexión TCP, eliminando parte del inicio de conexión relativamente lento de TCP.

    Cuando The IIS (F) envía el encabezado keep alive (o el usuario envía keep-alive), ¿significa que (E, C, B) guarda una conexión?

    No. Los enrutadores no necesitan recordar las sesiones. De hecho, muchos paquetes TCP que pertenecen a la misma sesión TCP no necesitan pasar todos por los mismos enrutadores, es decir, que TCP los administre. Los enrutadores solo eligen la mejor ruta de IP y reenvían paquetes. Keep-alive es solo para clientes, servidores y cualquier otro dispositivo intermedio con capacidad para sesiones.

    ¿Cuál 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 únicamente a esas dos partes.

    Si es así, ¿significa que keep alive-header reduce el número de usuarios de conexión superpuestos?

    Definir “conexiones superpuestas”. Consulte Conexión persistente HTTP para conocer algunas ventajas y desventajas, como por ejemplo:

    • Menor consumo de CPU y memoria (porque hay menos conexiones abiertas simultáneamente).
    • Habilita la canalización HTTP de solicitudes y respuestas.
    • Congestión de red reducida (menos conexiones TCP).
    • Latencia reducida en solicitudes posteriores (sin handshaking).

    si es así, ¿por cuánto tiempo se guarda la conexión para mí? (en otras palabras, si configuro keep alive – “keep” until when?)

    Una típica respuesta keep-alive 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 ambos 2616 y 2086 ):

    • Un host establece el valor del parámetro de timeout de timeout en el momento en que el host permitirá que una conexión inactiva permanezca abierta antes de que se cierre. Una conexión está inactiva si ningún host envía o recibe datos.

    • El parámetro max indica la cantidad máxima de solicitudes que hará un cliente, o que un servidor permitirá que se realice en la conexión persistente. Una vez que se ha enviado el número especificado de solicitudes y respuestas, el host que incluía el parámetro podría cerrar la conexión.

    Sin embargo, el servidor puede cerrar la conexión después de un tiempo o número de solicitudes arbitrarios (siempre que devuelva la respuesta a la solicitud actual). Cómo se implementa esto depende de su servidor HTTP.