HTTP/2 é a nova versão do protocolo que dominina a internet: o HTTP.

A versão marjoritária do HTTP é 1.1 que foi padronizada em 1997 com versões variações que aceitam SSL. Você provavelmente está lendo este artigo utilizando o protocolo HTTP/1.1.

O HTTP/2 se tornou um padrão estável em 2015, após a publicação de dois RFCs:

  • Hypertext Transfer Protocol version 2 - RFC7540
  • HPACK - Header Compression for HTTP/2 - RFC7541

Logo, logo, se tornará a versão dominante na web.

Por que uma nova versão do HTTP?

A internet evoluiu para aplicações mais dinâmicas e mais ricas com multiplas requisições.

Na versão 1.1 do HTTP para cada JS, CSS, imagens presentes numa página, o browser faz uma requisição ao servidor. Contudo, mesmo com técnicas, como:

  • multiplas requisições
  • conexão persistente
  • variações de DNS

a performance do HTTP/1.1 não é muito boa. Devido uma série problemas diretamente correlacionadas ao protocolo.

O que o HTTP/2 pretende resolver?

Em uma palavra: Latência

Ou o tempo entre uma requisição ser completada, ou ainda, mais forte:

Todas as requisições de uma página serem resolvidas em uma única conexão com o servidor.

Hoje alguns problemas de performance poderiam ser mitigados se o protocolo HTTP/1.1 tivesse algumas funcionalidades, tais como:

  • Compressão dos headers do protocolo
  • Reaproveitamento das requisições TCP
  • Utilizar várias chamadas numa única requisição TCP

Todas estas técnicas são parte da razão do desenvolvimento da versão 2 do HTTP, um esforço para tornar a web mais rápida, dinâmica e confiável.

Diferenças do HTTP/1.1

O HTTP/2 será 100% compatível com a versão 1.1 do protocolo. Mas com uma diferença substancial:

Apenas requisições HTTPS serão possíveis

Ou seja, apeanas requisições criptografadas poderão tirar real proveito das vantagens do HTTP/2. Porém isto não é uma restrição presente no protocolo, mas uma decisão dos browsers (e.g. Firefox, chrome), ou seja da indústria, para forçar o uso de conexões criptografadas.

O que vem por aí?

Eu particurlamente, sei muito pouco sobre a nova versão do HTTP. Num esforço de retomar este blog, inicio uma série de estudos e postagens sobre o HTTP 2 associado ao desenvolvimento do zero de um servidor compatível com HTTP2 em sua totalidade usando python 3.5 - tentando tirar proveito da nova funcionalidade async/await.

Espero falar sobre:

  • Python 3.5
  • Processamento assincronos
  • Criptografia
  • HTTP 2
  • Performance
  • Compressão de dados