recentemente o IETF (Internet Engineering Task Force), que desenvolve os protocolos e a arquitetura da Internet, tornou conhecido a notícia que concluiu a formação do RFC para o protocolo HTTP/3.0 e publicou as especificações relacionadas sob os identificadores RFC 9114 e RFC 9204.
A especificação HTTP/3.0 recebeu o status de “Padrão Proposto”, após o que começará o trabalho para dar ao RFC o status de um rascunho de padrão (Draft Standard), o que na verdade significa uma completa estabilização do protocolo e levando em consideração todos os comentários feitos.
O protocolo HTTP/3 define o uso do protocolo QUIC (Conexões de Internet UDP rápidas) como um transporte para HTTP/2. QUIC é um plugin para o protocolo UDP que suporta multiplexação de múltiplas conexões e fornece métodos de criptografia equivalentes a TLS/SSL.
O protocolo foi criado em 2013 pelo Google como alternativa ao TCP + TLS para a Web, resolvendo o problema de configuração de conexão longa e tempo de negociação no TCP e eliminando atrasos devido à perda de pacotes durante a transferência de dados.
Atualmente, O suporte QUIC e HTTP/3.0 já está implementado em todos os navegadores sites populares. No lado do servidor, implementações de HTTP/3 estão disponíveis para nginx (em uma ramificação separada e como um módulo separado), Caddy , IIS e LiteSpeed. O HTTP/3 também é suportado pela Content Delivery Network da Cloudflare.
Principais características do QUIC:
- Alta segurança, semelhante ao TLS (na verdade, o QUIC oferece a capacidade de usar TLS sobre UDP)
- Controle de integridade de transmissão para evitar perda de pacotes
- A capacidade de estabelecer uma conexão instantaneamente e garantir atrasos mínimos entre o envio de uma solicitação e o recebimento de uma resposta (RTT, tempo de ida e volta)
- Use um número de sequência diferente ao retransmitir um pacote, permitindo evitar ambiguidade ao determinar os pacotes recebidos e eliminar os tempos limite
- A perda de um pacote afeta a entrega apenas do fluxo associado a ele e não para a entrega de dados em fluxos transmitidos em paralelo pela conexão atual
- Ferramentas de correção de erros que minimizam atrasos devido à retransmissão de pacotes perdidos. Uso de códigos especiais de correção de erros em nível de pacote para reduzir situações que exigem retransmissão de dados de pacote perdidos.
- Os limites do bloco criptográfico são alinhados com os limites do pacote QUIC, reduzindo o impacto da perda de pacotes na decodificação do conteúdo dos pacotes subsequentes
- Sem problemas com o bloqueio da fila TCP
- Suporte de identificação de conexão para reduzir o tempo de reconexão para clientes móveis
- Possibilidade de conectar mecanismos avançados para controle de sobrecarga de conexão
- Use técnicas de previsão de largura de banda em cada direção para garantir taxas ideais de encaminhamento de pacotes, evitando condições de congestionamento onde os pacotes são perdidos.
- Desempenho notável e ganhos de desempenho sobre TCP. Para serviços de vídeo como o YouTube, o QUIC demonstrou reduzir as operações de buffer de vídeo em 30%.
Além disso, também na mesma época, foram publicadas versões atualizadas das especificações dos protocolos HTTP/1.1 (RFC 9112) e HTTP/2.0 (RFC 9113), bem como documentos que definem a semântica das solicitações HTTP (RFC 9110) e cabeçalhos de controle de cache HTTP (RFC 9111).
Das mudanças em a especificação HTTP/1.1, você pode notar a proibição do uso separado do caractere de retorno de carro (CR) fora do corpo com o conteúdo, ou seja, em elementos de protocolo, o caractere CR só pode ser usado em conjunto com o caractere de nova linha (CRLF).
El O algoritmo de layout de solicitação em partes foi aprimorado para simplificar a separação de campos anexados e seções com cabeçalhos. Adicionadas diretrizes para lidar com conteúdo ambíguo para bloquear ataques de classe "HTTP Request Smuggling" que podem invadir o conteúdo de solicitações de outros usuários no fluxo entre front-end e back-end.
Uma atualização da especificação HTTP/2.0 define explicitamente o suporte para TLS 1.3, esquema de priorização obsoleto e campos de cabeçalho relacionados e mecanismo de atualização A conexão HTTP/1.1 preterida foi preterida.
Por fim, se estiver interessado em saber mais sobre o assunto, pode consultar os detalhes no link a seguir