Os navegadores criam novas conexões TCP para cada solicitação HTTP?

23

Então, eu sei que o HTTP é basicamente apenas um protocolo de texto sobre TCP e que o TCP é baseado em estado / conexão. Isso significa que o navegador precisa se conectar via TCP a um servidor antes de fazer uma solicitação HTTP. Pergunta então: os navegadores normalmente criam uma nova conexão TCP para cada solicitação HTTP?

Os navegadores podem simplesmente abrir uma solicitação TCP e mantê-la ativa enquanto o usuário ainda estiver navegando nesse servidor, mas os servidores precisariam usar uma grande quantidade de conexões máximas para lidar com isso. Mas, novamente, se os navegadores criarem uma conexão para cada solicitação e o usuário navegar muito no mesmo servidor, isso pareceria um desperdício. Como isso geralmente funciona? Talvez através do uso de um temporizador?

Xeon06
fonte

Respostas:

30

No HTTP / 0.9 (não mais usado), cada solicitação usava uma conexão TCP separada e o final de uma resposta era sinalizado ao fechar a conexão.

No HTTP / 1.0, conexões separadas ainda são o padrão oficial. No entanto, um Connection: Keep-Alivecabeçalho de solicitação " " não oficial, mas muito amplamente suportado, pode ser usado para solicitar uma conexão persistente, se o servidor suportar.

No HTTP / 1.1, as conexões persistentes se tornaram o padrão e o comportamento antigo de solicitação única deve ser solicitado explicitamente. Geralmente, são usadas várias conexões persistentes (2–5).

(Opcionalmente, as solicitações podem ter pipelines , embora isso tenha sido difícil de implementar e criem mais problemas do que solucionam (bloqueio de linha de frente etc.), para que ninguém use a tubulação HTTP / 1.x.

O HTTP / 2 (também conhecido como SPDY ) foi projetado especificamente para multiplexar muitas solicitações ao mesmo tempo. Possui uma camada de enquadramento / pacote que permite que as respostas cheguem em qualquer ordem e até simultaneamente.

Recursos: Artigo da Wikipedia e seção 8.1 da RFC 2616 .

gravidade
fonte
Outro artigo interessante mencionando o mesmo developer.mozilla.org/pt-BR/docs/Web/HTTP/…
Ganesh Satpute em 28/02
6

Há o cabeçalho "Conexão: Manter ativo". Veja enwiki para detalhes.

Você pode usar o Wireshark para capturar e analisar conexões e ver todos os cabeçalhos.

Vi.
fonte
Por que o Wireshark em vez do Fiddler?
Pacerier
3
O violinista é 1. Não é um software de código aberto; 2. Somente Windows.
Vi.