Acrônimo para Hypertext Transfer Protocol, o HTTP é o protocolo utilizado para enviar e receber informações na web, sendo baseado em requisições e respostas entre clientes e servidores. O funcionamento básico é o seguinte: o cliente — navegador ou dispositivo que fará a requisição — solicita um determinado recurso, enviando um pacote de informações contendo alguns cabeçalhos a uma URL. O servidor recebe essas informações e retorna uma resposta.
Como tudo começou
O HTTP tem sido usado desde 1991. A primeira versão do protocolo, chamada HTTP/0.9, era um protocolo simples para a transferência de dados no formato de texto ASCII pela Internet. A versão HTTP/1.0 foi liberada em 1996 com a finalidade de suprir a necessidade de transferir não apenas texto. Passou-se a considerar dados mais ricos, metadados da requisição e resposta e negociação de conteúdo, por exemplo.
A terceira versão, 1.1, foi disponibilizada em 1999. Seu lançamento é considerado um marco e define o padrão da Internet. O protocolo HTTP/1.1, além de resolver inúmeras ambiguidades da versão 1.0, inseriu melhorias críticas de performance.
A partir dos anos 2000, através do boom na utilização da Internet, a quantidade de dispositivos conectados a ela cresceu exponencialmente. Com esse crescimento exorbitante surgiu a necessidade de melhorias de performance. Foi assim que em 2009 nasceu o SPDY, um protocolo criado por engenheiros da Google para avançarem nos problemas de performance do HTTP/1.1.
Esses movimentos chamaram a atenção do HTTP Working Group (HTTP-WG). Em 2015, 16 anos após o lançamento do HTTP/1.1, surgiu o HTTP/2. Sem alterar a semântica do protocolo, as melhorias significativas são na performance de transporte das informações além de uma latência menor e maior rendimento.
Principais características do HTTP/2
Para entender melhor sobre o HTTP/2, observe as características a seguir.
Única conexão e multiplexação
O HTTP/1.1 é um protocolo sequencial, onde o navegador abre apenas uma conexão TCP, solicita um arquivo, e somente após recebê-lo solicita o próximo. Se um arquivo é muito grande, ou o processamento por parte do servidor for muito lento, pode travar o carregamento da página. Para minimizar isto, os navegadores normalmente abrem múltiplas conexões, entre 6 e 8, por servidor. Já no HTTP/2, uma conexão TCP será persistente e precisará somente de uma por origem, onde requisições e respostas paralelas poderão requisitar/receber todos os arquivos necessários.
Isso traz uma redução no consumo de processamento e memória, uma redução no custo operacional das redes e uma maior capacidade de uso. O resultado é uma redução de latência na rede e redução de custo em hardware e software.
Camada de enquadramento binário
Este é o núcleo de todas as melhorias de desempenho de HTTP/2, que determina como as mensagens HTTP são encapsuladas e transferidas entre o cliente e o servidor. Foi redesenhado o mecanismo de codificação sem alterar a semântica dos métodos, verbos e cabeçalhos. A comunicação é quebrada em frames, em uma única conexão TCP.
Priorização de requisições
Possibilita ao navegador requisitar todos os elementos quando descobertos, comunicando ao servidor sua intenção de priorizar algum deles. Isto é feito através das dependências e pesos das streams. Pode-se citar um exemplo onde são requisitados arquivos CSS e arquivos JS, onde no HTTP/2 o comportamento do navegador será de priorizar primeiro os arquivos CSS, mesmo que sua requisição na ordem do DOM venha depois dos JS.
Server Push
Permite ao servidor enviar múltiplas respostas ao cliente, a partir de uma única requisição, sem que o cliente tenha solicitado explicitamente. Imagine o cenário: o navegador de internet requisita o arquivo HTML da página; o servidor responde com o arquivo requisitado e já envia também o arquivo CSS, JavaScript, ícones e outras coisas mais.
Compressão automática
As requisições HTTP possuem cabeçalhos com informações importantes sobre o recurso e suas propriedades. Com o HTTP/2 os cabeçalhos são comprimidos através do algoritmo HPACK, reduzindo assim o tamanho de cada transferência, além de manter e atualizar uma lista indexada de campos de cabeçalhos vistos anteriormente. Além disso, a compressão de dados através do GZIP, que precisa ser habilitada no HTTP/1.1, se torna padrão na versão 2.
Segurança e criptografia de dados
O protocolo HTTP/2 foi implementado para trabalhar com ou sem criptografia. No entanto, os principais navegadores declararam que irão suportar HTTP/2 somente com criptografia, sendo necessário então a utilização de um certificado SSL.
Conclusão
Aplicações web como o Fusion Cloud, através da implementação do HTTP/2, estão mostrando melhoras de desempenho significativas, apresentando uma grande diferença no tempo de carregamento das páginas, possibilitando assim uma redução de custos com hardware e melhor experiência de navegação para os usuários.
Referências:
Wikipedia, Google Web Fundamentals, KingHost, HPBN, Apiki.
Jefferson Romano
novembro 29, 2021Conteúdo muito bom! Parabéns pela forma como abordou o assunto.
VITO NETO
abril 19, 2022Conteúdo excelente!
Além de me tirar muitas dúvida e me ajudar a entender melhor sobre o assunto, as ilustrações ajudaram muito, ficou muito claro. Parabéns pelo conteúdo.