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

19

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 ao TCP em um servidor antes de fazer uma solicitação HTTP. Pergunta: os navegadores normalmente criam uma nova conexão TCP para cada solicitação HTTP?

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

    
por Xeon06 08.12.2011 / 22:52

2 respostas

25

Em HTTP / 0,9 (não usado mais), cada solicitação usa uma conexão TCP separada e o final de uma resposta é sinalizado ao fechar a conexão.

No HTTP / 1.0, um cabeçalho de solicitação " Connection: Keep-Alive " não-oficial, mas muito amplamente suportado, pode ser usado para solicitar uma conexão persistente se o servidor for compatível.

No HTTP / 1.1, as conexões persistentes são o padrão , e o antigo comportamento de solicitação única tem para ser solicitado explicitamente.

Opcionalmente, os pedidos podem ser pipelined , embora isso ainda tenha algumas desvantagens, por isso várias (2–5) conexões são frequentemente usado.

O HTTP / 2 (também conhecido como SPDY ) foi projetado especificamente para multiplexar várias solicitações ao mesmo tempo.

Recursos: artigo da Wikipédia e RFC 2616 seção 8.1 .

    
por 08.12.2011 / 23:12
5

Existe o cabeçalho "Connection: Keep-Alive". Consulte enwiki para detalhes.

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

    
por 08.12.2011 / 22:59