HTTP - Conexão Persistente e Não Persistente (Apostila de Redes)

No tutorial passado de nossa apostila de Redes, falamos sobre o protocolo HTTP da Web e vimos que este protocolo usa um outro protocolo, o de transporte que é o TCP.

Porém, existem duas maneiras de se usar esse protocolo TCP no HTTP, que é através de uma conexão persistente ou conexão não persistente, que iremos entrar em detalhes neste tutorial de nossa apostila de redes de computadores.

HTTP e Conexão Não Persistente

Há duas maneiras de transferir os dados entre cliente e servidor, através do protocolo TCP.

Uma delas é através da criação de conexão TCP para o envio de cada objeto de uma página da Web.
Para isso, é importante entender o que é uma página da web e objetos, assuntos que foram explicados no tutorial passado de nossa apostila de redes.

Dizemos que um determinado tipo de conexão é não persistente quando, ao realizar a transferência de um objeto entre cliente e o servidor, esta conexão TCP é fechada. Ou seja, ela não persiste, não continua funcionando para outros objetos da página web.

Apresentação de 3 vias (3 way handshake)

Sempre que seu navegador requisita uma página da Web para um servidor, uma conexão de TCP é iniciada.

Então, acontecerá uma espécie de 'apresentação', entre você e o servidor, que é feito através de três passos.

Primeiro, o cliente envia uma mensagem (segmento TCP) para o servidor.
Em seguida, o servidor faz o reconhecimento deste segmento e envia uma resposta para o cliente.
Por fim, o cliente confirma que recebeu a resposta do servidor (e a conexão TCP já está feita para o transporte de pacotes), e junto com esta resposta já envia uma requisição HTTP para receber a página da Web e seus objetos.

HTTP e Conexão Persistente

Na conexão não persistente, explicada anteriormente, após o servidor enviar o objeto para o cliente, ele já fechava a conexão TCP.
No modo persistente, ele não faz isso.

Ou seja, a conexão TCP fica aberta e disponível para o envio de outros objetos pelo servidor ou novos pedidos de requisição pelo cliente. As conexões são encerradas quando houver um tempo sem requisição e envio algum.

Por padrão, o HTTP utiliza a maneira persistente, mas com paralelismo (vários envios ao mesmo tempo).

Conexão Persistente e Não Persistente - Vantagens e Desvantagens

É extremamente seguro e confiável que cada objeto tenha sua próxima conexão TCP.
Isso trás uma excelente garantia para o cliente de que os dados enviados para o servidor serão entregues da maneira correta, e que cada um deles tenha até control de congestionamento.

É interessante, por exemplo, que uma transação bancária seja feita dessa maneira.

Porém, uma página da Web pode facilmente ter centenas ou milhares de objetos.
Imagine então o custo que teria de realizar uma conexão TCP diferente (incluindo a apresentação de 3 vias) para cada objeto?

Obviamente que ia demorar muito mais com o uso de conexões não persistentes.

Por isso, uso ou não da persistência vai depender totalmente da aplicação que você deseja criar e de seu funcionamento.

Um comentário: