Onde essa informação é mantida ("esta conexão é entre o computador A
e o servidor F
")?
Uma conexão TCP é reconhecida pelo IP e porta de origem e IP e porta de destino. Seu sistema operacional, todos os dispositivos com reconhecimento de sessão intermediária e o sistema operacional do servidor reconhecerão a conexão por meio disso.
O HTTP trabalha com solicitação-resposta: o cliente se conecta ao servidor, realiza uma solicitação e obtém uma resposta. Sem o keep-alive, a conexão com um servidor HTTP é fechada após cada resposta. Com HTTP keep-alive, você mantém a conexão TCP subjacente aberta até que certos critérios sejam atendidos.
Isso permite vários pares de solicitação-resposta em uma única conexão TCP, eliminando parte da inicialização relativamente lenta da conexão do TCP.
Quando o IIS (F) envia o cabeçalho keep alive (ou o usuário envia keep-alive), isso significa que (E, C, B) salva uma conexão
Não. Os roteadores não precisam se lembrar das sessões. Na verdade, vários pacotes TCP pertencentes à mesma sessão TCP não precisam passar pelos mesmos roteadores - ou seja, para o TCP gerenciar. Os roteadores apenas escolhem o melhor caminho IP e encaminham os pacotes. Keep-alive é apenas para cliente, servidor e quaisquer outros dispositivos intermediários com reconhecimento de sessão.
que é só para minha sessão?
Isso significa que ninguém mais pode usar essa conexão
Essa é a intenção das conexões TCP : é uma conexão ponta a ponta destinada apenas a essas duas partes.
Em caso afirmativo - isso significa que o cabeçalho keep alive - reduz o número de usuários de conexão sobreposta?
Defina "conexões sobrepostas". Consulte a conexão persistente HTTP para algumas vantagens e desvantagens, como:
- Menor uso de CPU e memória (porque menos conexões são abertas simultaneamente).
- Ativa o pipelining HTTP de solicitações e respostas.
- Congestionamento de rede reduzido (menos conexões TCP).
- Latência reduzida em solicitações subsequentes (sem handshaking).
em caso afirmativo, por quanto tempo a conexão é salva para mim? (em outras palavras, se eu definir keep alive- "manter" até quando?)
Uma resposta típica de keep-alive tem esta aparência:
Keep-Alive: timeout=15, max=100
Consulte Cabeçalho Keep-Alive do Protocolo de Transferência de Hipertexto (HTTP), por exemplo (um rascunho para HTTP / 2 em que o cabeçalho keep-alive é explicado com mais detalhes do que 2616 e 2086 ):
Um host define o valor do timeout
parâmetro para o tempo que o host permitirá que uma conexão inativa permaneça aberta antes de ser fechada. Uma conexão fica inativa se nenhum dado for enviado ou recebido por um host.
O max
parâmetro indica o número máximo de solicitações que um cliente fará ou que um servidor permitirá que sejam feitas na conexão persistente. Depois que o número especificado de solicitações e respostas for enviado, o host que inclui o parâmetro pode fechar a conexão.
No entanto, o servidor está livre para fechar a conexão após um tempo ou número arbitrário de solicitações (desde que retorne a resposta à solicitação atual). A forma como isso é implementado depende do seu servidor HTTP.