Uma introdução ao HTTP / 2

Introdução

HTTP / 2 é a revisão mais recente do Protocolo de Transferência de Hipertexto ou HTTP [01], que é usado pelos navegadores para se comunicar com os servidores da web. Derivado do SPDY mais antigo [02] protocolo, HTTP / 2 é a primeira nova versão do HTTP desde a padronização do HTTP / 1.1 na RFC 2068 em 1997.

Foi desenvolvido pelo grupo de trabalho HTTP da Internet Engineering Task Force (IETF) httpbis (onde “bis” significa “duas vezes”), e publicado como RFC 7540 [03] em maio 2015.

Adoção de HTTP / 2

O HTTP / 2 tem sido cada vez mais adotado pelos sites em funcionamento desde sua publicação oficial. O serviço de pesquisa on-line W3Techs [04] observa que, de setembro de 2017 a setembro de 2018, o suporte ao HTTP / 2 aumentou de 16% para 30% de todos os sites monitorados.

Além disso, os principais navegadores (por exemplo, Chrome, Firefox, Edge, etc) já oferecem suporte completo para HTTP / 2 [05]. (Algumas até desenvolveram implementações experimentais antes que o HTTP / 2 fosse aceito como padrão.)

Essa ampla adoção significa que o HTTP / 2 tem o potencial de se tornar o protocolo de comunicação de fato da Web.

Motivação por trás do HTTP / 2

httpbis'carta [06] menciona vários componentes do HTTP / 1.1 que poderiam ser melhorados como motivação para o HTTP / 2. No entanto, o objetivo principal do grupo era diminuir a latência percebida pelo usuário final.

Para fazer isso, httpbis considerou a minimização da sobrecarga da largura de banda por meio de técnicas de compactação de cabeçalho e pré-busca agressiva (por exemplo, envio de servidor), ao mesmo tempo em que tentava resolver sistematicamente problemas de desempenho conhecidos, como congestionamento de conexão e o problema de bloqueio do Head-of-Line (HoL) [07].

Além disso, era necessário que o HTTP / 2 fosse compatível com versões anteriores, o que significa que era necessário usar os mesmos verbos de método, códigos de status, URIs e (a maioria) campos de cabeçalho encontrados no HTTP / 1.1. O HTTP / 2 também teve que ser projetado para suportar casos de uso HTTP comuns, como navegadores da Web para desktop e dispositivos móveis, interfaces de programação, proxies e firewalls.

Para manter essa compatibilidade, o grupo de trabalho desenvolveu um mecanismo de negociação de protocolo que permitia a clientes e servidores selecionar entre os protocolos HTTP / 1.1, HTTP / 2 ou mesmo não-HTTP.

Então, o que há de novo em HTTP / 2?

O HTTP / 2 ainda usa os mesmos esquemas URI e números de porta usados ​​no HTTP / 1.1 (ou seja, porta 80 para http URIs e porta 443 para https URIs), mas muitas coisas são feitas de maneira diferente sob o capô.

A mudança mais fundamental é a introdução de quadros como a unidade de dados básica do HTTP / 2.

O HTTP / 1.1 tradicionalmente usa pacotes para representar dados da rede. Um cliente constrói um pacote de solicitação com um verbo de método (por exemplo, GET or POST), anexando uma lista de cabeçalhos que descrevem a conexão e um corpo que contém dados do aplicativo.

Ao receber um pacote de solicitação, um servidor HTTP / 1.1 responde com um pacote de resposta semelhante contendo as informações solicitadas. Como resultado, cada ciclo de solicitação e resposta requer uma nova conexão.

Por outro lado, os clientes HTTP / 2 estabelecem uma conexão de rede única com o servidor, que eles usam para todas as comunicações de rede subseqüentes. Cabeçalhos, dados do usuário, mensagens de erro e essas informações são compactadas em estruturas de dados binárias distintas chamadas quadros, antes de serem transmitidas pela rede.

Parece uma pequena mudança, mas traz implicações significativas.

Compactação de cabeçalho

Um grande benefício do uso de quadros é que os cabeçalhos HTTP / 2 são agrupados em um HEADER quadro, que pode ser compactado usando métodos normais de compactação. Os cabeçalhos devem ser transferidos antes de qualquer dado, para que a compactação do cabeçalho possa diminuir a sobrecarga de largura de banda imposta pelo HTTP / 2.

A compactação de cabeçalho, juntamente com o seguinte desempenho, aprimorando os recursos HTTP / 2, pode ser especialmente útil em aplicativos móveis ou Internet of Things (IOT), onde é necessário o uso mínimo da rede.

Fluxos e multiplexação

Uma sequência independente de quadros semanticamente relevantes é chamada de transmitir canais. Os fluxos recebem um identificador exclusivo pelo terminal (por exemplo, cliente ou servidor) que os criou, para que outros pontos finais possam distinguir entre eles.

Os pontos de extremidade podem intercalar quadros de vários fluxos na mesma conexão HTTP / 2, permitindo que uma única conexão de rede suporte vários fluxos abertos simultaneamente. Esse processo é chamado multiplexing [08].

Reutilizar a mesma conexão atenua problemas como congestionamento de conexão e problema de HoL mencionado anteriormente e oferece melhor desempenho e experiência do usuário mais suave do que as versões HTTP anteriores.

Dependência e priorização de fluxo

Gerenciar vários fluxos simultâneos significa que alguns serão processados ​​antes de outros. O HTTP / 2 permite que o desenvolvedor (ou administrador) ajuste esse comportamento com um recurso chamado dependência de fluxo.

Um fluxo pode depender da transferência completa de outro fluxo antes de ser tratado. Por exemplo, em um site em que o conteúdo principal de uma página da web deve ser carregado antes de qualquer recomendação para conteúdo semelhante, o HTTP / 2 permite que o fluxo de recomendações seja criado como dependente do fluxo de conteúdo principal.

HTTP / 2 também suporta priorização de stream. Ou seja, cada fluxo pode receber uma prioridade para sugerir com que urgência os pontos de extremidade devem alocar recursos para lidar com os quadros do fluxo.

A priorização e a dependência do fluxo ajudam os desenvolvedores e proprietários de sites a otimizar o uso da rede de seus sites, o que pode melhorar significativamente a experiência do usuário em seus sites.

servidor push

Por fim, o HTTP / 2 pode melhorar o desempenho de um site da Web, fornecendo a funcionalidade “push”. Um servidor web HTTP / 2 pode responder com dados para mais consultas do que o cliente solicitou originalmente. Isso permite que o servidor forneça dados que sabe que um navegador da web precisará para processar uma página, sem esperar que o navegador examine a primeira resposta e, portanto, sem a sobrecarga de um ciclo de solicitação adicional.

O envio de servidor oferece aos desenvolvedores controle total sobre o número de solicitações necessárias para um navegador renderizar seu site. Quando usado corretamente, esse recurso pode minimizar a sobrecarga da rede.

Naturalmente, o uso incorreto do recurso push também pode desperdiçar mais largura de banda do que é realmente necessário. Por esse motivo, o HTTP / 2 permite que um cliente solicite que o envio do servidor seja desativado ao negociar uma conexão pela primeira vez.

Segurança HTTP / 2

Se você leu até este ponto, deve estar claro que os desenvolvedores de HTTP / 2 realmente se esforçam para melhorar o desempenho. No entanto, deve-se observar que o HTTP / 2 também pode ajudar a melhorar a segurança geral dos usuários do navegador.

Mais especificamente, o HTTP / 2 é definido para URIs HTTP (ou seja, sem criptografia) e URIs HTTPS (sobre TLS canais criptografados). Embora o próprio padrão não exija o uso de criptografia, todas as principais implementações de navegadores (por exemplo, Firefox [09], Chrome, Safari, Opera, IE, Edge) decidiram que irão suporte HTTP / 2 over TLS.

De fato, os navegadores distinguem entre HTTP / 2 de texto não criptografado e HTTP / 2 sobre criptografados. TLS como dois protocolos diferentes. HTTP / 2 criptografado é chamado h2 e texto não criptografado h2c. No momento da redação deste documento, nenhum dos principais navegadores suporta h2c , O que significa que TLS a criptografia é obrigatória para que um site aproveite as outras vantagens do HTTP / 2. Portanto, quando HTTP / 2 se torna o protocolo de rede da web padrão, os proprietários de sites da web legados que ainda não atualizaram para SSL /TLS, estará fortemente motivado para finalmente fazê-lo.

Conclusão

A ampla adoção do HTTP / 2 trará uma Web nova e aprimorada. É mais rápido, precisa de menos largura de banda e ajuda os sites a permanecerem seguros. Sua adoção convencional certamente tornará a experiência geral do usuário da Web mais suave e segura.

Obtenha um certificado hoje e junte-se a nós no futuro.

Referências

  1. Protocolo HTTP
  2. Protocolo SPDY
  3. Especificação HTTP / 2
  4. Pesquisa de adoção W3Techs HTTP / 2
  5. Adoção de HTTP / 2 em navegadores
  6. charter httpbis
  7. Bloqueio de HOL
  8. Multiplexing
  9. Firefox em HTTP / 2

Inscreva-se no boletim informativo de SSL.com

Não perca novos artigos e atualizações de SSL.com

Mantenha-se informado e seguro

SSL.com é líder global em segurança cibernética, PKI e certificados digitais. Inscreva-se para receber as últimas notícias do setor, dicas e anúncios de produtos da SSL.com.

Adoraríamos receber seu feedback

Responda à nossa pesquisa e deixe-nos saber sua opinião sobre sua compra recente.