Quando você para e pensa sobre isso, é difícil não se surpreender com a incrível complexidade e a amplitude insondável da web. Por esse mesmo símbolo, é fácil dar como certa a intrincada malha de tecnologias que tornam a Internet possível.
Neste post vou me concentrar em um dos blocos de construção básicos da Internet: HTTP. Vou mostrar exatamente o que ele faz e explicar por que você deve atualizar para HTTP / 3 se ainda não o fez.
O que é HTTP?
Simplificando, HTTP é o protocolo que permite acessar informações e arquivos de outro servidor web.
HTTP significa protocolo de transferência de hipertexto , que é o conjunto de regras que define como as páginas da web são entregues do servidor para os navegadores. É o mesmo protocolo que facilita a criptografia.
De acordo com a Mozilla:
“HTTP é um protocolo cliente-servidor: os pedidos são enviados por uma entidade, o agente do usuário (ou um proxy em nome dele). Na maioria das vezes, o agente de usuário pode ser um navegador, mas geralmente é qualquer coisa, por exemplo, um robô que rastreia o online para preencher e manter um índice de mecanismo de pesquisa ”.
Toda essa comunicação acontece em redes TCP . TCP é um protocolo que controla a entrega de dados de um endereço IP para outro. Abrange servidores e clientes.
Breve história do HTTP
Se você estiver familiarizado com a especificação OSI (Open Systems Interconex) , o HTTP é um protocolo da camada de aplicativo, o que significa que pode ser atualizado e melhorado com o aumento da largura de banda etc.
HTTP / 1
A versão mais antiga do HTTP apresenta o seguinte.
- Protocolo amigável ao navegador;
- Campos de cabeçalho que incluem metadados avançados sobre solicitação e resposta (número da versão HTTP, código de status, tipo de conteúdo);
- A resposta não se limita ao hipertexto; o cabeçalho habilitou a transmissão de arquivos em formatos diferentes de HTML simples (por exemplo, scripts, folhas de estilo, mídia, etc.)
Content-Type
; - Suporte para
GET
,HEAD
ePOST
métodos; - A conexão foi encerrada imediatamente após a resposta.
A principal causa de latência no protocolo HTTP / 1 é o problema de bloqueio de ponta de linha . As páginas da Web exigem vários recursos: CSS, JavaScript, fontes, imagens, AJAX / XMR, etc., o que exige que o navegador faça várias solicitações ao servidor. No entanto, nem todos esses recursos são necessários o tempo todo, portanto, todo o carregamento extra pode ser uma perda de tempo.
Com HTTP / 1.0, era necessário que os navegadores concluíssem uma solicitação, incluindo o recebimento total da resposta, antes de iniciar a próxima solicitação. Isso também resulta em maior tempo de carregamento porque tudo tinha que ser feito em sucessão.
O HTTP / 1.1 resolveu esse problema introduzindo o pipelining, que permitia que os navegadores da web iniciassem novas solicitações sem precisar esperar pela conclusão das solicitações anteriores. Isso ajudou a acelerar os tempos de carregamento em ambientes de baixa latência.
HTTP / 2
O padrão agora é HTTP 2, que usa TCP como seu protocolo principal de comunicação.
Com HTTP / 2, várias solicitações e respostas podem ser transmitidas pela mesma conexão simultaneamente. A desvantagem é que todas as solicitações e respostas podem ser afetadas pela perda de pacotes devido ao congestionamento da rede.
O TCP entrega todo o fluxo de bytes de um ponto de extremidade para outro na ordem correta. Ocasionalmente, problemas de rede ou conexão podem resultar em pacotes de bytes perdidos ou corrompidos.
O TCP tentará preencher um pacote perdido reenviando a solicitação. Esta única ação pode causar atrasos desnecessários no processo, o que naturalmente afeta a velocidade e o desempenho da comunicação. Este é, em essência, o problema do bloqueio frontal.
HTTP / 3
O HTTP / 3 visa eliminar o problema de bloqueio de ponta de linha de uma vez por todas. Em vez de usar o TCP como a camada de transporte para a comunicação, ele introduz uma nova camada de transporte chamada Quick UDP Internet Connections (QUIC) .
O QUIC, que é criptografado por padrão, foi projetado para acelerar e proteger o tráfego HTTP. Tem como objetivo substituir o TCP e o TLS.
O Cloudflare lista algumas vantagens de usar QUIC sobre TCP e UDP tradicionais, incluindo:
- Segurança integrada
- Sem bloqueio frontal
- QPACK, um novo esquema de compressão de cabeçalho
- Reflexo defletido
- Desempenho UDP
A combinação de QUIC e HTTP 3 promete resolver o problema de bloqueio de ponta de linha e abordar muitas outras deficiências associadas aos padrões anteriores, inaugurando uma nova era de desempenho na web.
Por que você deve atualizar para HTTP / 3
Os benefícios de mudar de TCP para QUIC incluem, mas não estão limitados a:
- Latência mais baixa. Um estudo do Google descobriu que o uso do QUIC acelerou os resultados da pesquisa em 3,6 por cento e o tempo de carregamento do YouTube em 15 por cento
- Alternar entre redes tem pouco ou nenhum efeito na velocidade; com o QUIC, esse processo de transferência ou renegociação não é mais necessário.
- Otimização do handshake. O QUIC suporta um único handshake em uma conexão em vez de dois ou mais, o que aumenta o tempo de conexão para a comunicação
- Multiplexação. O QUIC aborda o problema de bloqueio de ponta de linha
- Correção de erros antecipada (FEC)
- Melhor controle de congestionamento. Não está claro qual será a opção final, mas parece que será baseada no TCP NewReno
Veja um exemplo prático da diferença entre TCP e QUIC:
Agora que você entende os fundamentos do HTTP, a história das versões do protocolo e o potencial do protocolo QUIC para melhorar o desempenho, deve ter o conhecimento fundamental e a motivação para mudar para o HTTP / 3.