Início » Web » Como funciona o HTTP/2 e o que ele muda na sua vida

Como funciona o HTTP/2 e o que ele muda na sua vida

Os detalhes da nova versão do protocolo que vai acelerar o carregamento das páginas

Por
3 anos atrás

Quando você começou a acessar a internet? Se foi depois de 1999, você está usando o mesmo protocolo que usa atualmente para acessar páginas da web, o HTTP/1.1. Após 16 anos sem grandes atualizações, o Internet Engineering Steering Group (IESG), órgão responsável por revisões técnicas nos padrões da internet, aprovou o HTTP/2 no último dia 18 de fevereiro. Mas o que é isso? E que diferença ele vai fazer na sua vida?

A gente explica.

O que é HTTP? Como se alimenta? Como se reproduz?

A internet é formada por algumas camadas (quatro ou sete, dependendo da sua religião). A mais próxima de você é a camada de aplicação, que reúne protocolos para funções específicas. Tem o IMAP, que seu cliente de email usa para baixar suas mensagens; o NTP, que mantém o relógio do seu computador sincronizado; o FTP, para baixar e enviar arquivos; o BitTorrent, usado para fazer download de… distribuições Linux; e muitos outros.

O HTTP é um protocolo desenvolvido originalmente para distribuir conteúdo hipertexto — ou seja, textos com hiperlinks que conseguem levar você a outros textos com hiperlinks. Você usa o HTTP todos os dias para acessar páginas da web, e ele está tão onipresente que seu navegador provavelmente já nem exibe mais o http:// na barra de endereços como fazia antigamente.

A primeira versão do HTTP que conhecemos é o HTTP/0.9, publicado em 1991, que servia apenas para transferir texto de um servidor para o seu computador. Em 1996, quando a internet comercial engatinhava no Brasil, foi finalizado o HTTP/1.0. Entre as novidades estavam a possibilidade de incluir outros tipos de arquivos numa página, como imagens (uau!) e o novo método POST, para permitir que os usuários não apenas recebessem, mas também enviassem informações para um servidor, como termos de pesquisa num buscador e mensagens em redes sociais.

A primeira página da web era assim, meio sem graça

A primeira página da web era assim, meio sem graça

O protocolo que a maioria dos sites usa atualmente é o HTTP/1.1, lançado em 1999. Ele permitiu que a web continuasse crescendo ao resolver alguns problemas do HTTP/1.0, como o alto uso de dados. Com o novo HTTP/1.1, as páginas poderiam ser comprimidas pelos servidores e descomprimidas pelo computador do usuário. Dessa forma, seria possível baixar de maneira mais rápida uma página com um incrível modem de 28.800 bits por segundo de última geração.

Se o HTTP/1.1 está funcionando, por que inventaram outra versão?

Na verdade, assim como aconteceu na transição do HTTP/1.0 para o HTTP/1.1, a versão atual do protocolo está começando a mostrar sinais de cansaço. As páginas da web ficaram muito mais pesadas nos últimos anos, incorporando cada vez mais imagens, vídeos e outros elementos externos, como fontes personalizadas e arquivos CSS e JavaScript.

O problema de uma página ter muitos elementos é que o HTTP/1.1 é um protocolo sequencial: seu navegador abre uma conexão, solicita um arquivo ao servidor do site, recebe o arquivo e só depois pede outro arquivo. Para minimizar essa perda de tempo, os navegadores normalmente abrem múltiplas conexões (algo entre quatro e oito) por servidor. Assim, o browser pode baixar vários elementos ao mesmo tempo e acelerar o carregamento da página.

Mas, como boa parte das páginas incorporam elementos de vários servidores (vídeos no YouTube, fontes no Google e imagens num servidor de cache, por exemplo), isso significa que seu navegador pode acabar abrindo dezenas de conexões só para carregar uma página. Obviamente, isso congestiona e monopoliza o uso da rede, prejudicando outras aplicações, como ligações VoIP — é por isso que você configura um limite de conexões no seu cliente torrent.

Além disso, abrir novas conexões a todo momento significa que seu navegador precisa fazer negociações a todo momento. Para cada solicitação de arquivo, o servidor do site e seu navegador trocam cabeçalhos, que incluem o user-agent, com a versão do seu navegador e sistema operacional, por exemplo. Algumas dessas informações não mudam a todo momento, então está havendo um grande desperdício de tráfego em páginas com muitos elementos no HTTP/1.1.

Portanto, o principal problema que o HTTP/2 tenta resolver é o das múltiplas conexões.

O que mudou em relação ao HTTP/1.1? E por que os sites vão ficar mais rápidos?

“Muda bastante coisa, mas permanece tudo igual”, brinca Alex Soares, arquiteto sênior de inovação da Exceda, empresa que oferece serviços de aceleração e distribuição de conteúdo na internet. “O protocolo HTTP/1.1 é totalmente textual. Você consegue conectar ao servidor manualmente, digitar texto e fazer o que quiser. Ele foi desenvolvido para uma web antiga. Já o HTTP/2 é um protocolo binário, feito para ser entendido por máquinas, não mais por pessoas. Por isso, é mais eficiente e traz alguns benefícios que consertam os problemas atuais da web”.

No HTTP/1.1, o navegador abre uma conexão para baixar um único arquivo. Se essa conexão ficar ocupada por muito tempo, seja porque o arquivo é muito grande ou porque o servidor está lento para responder, o carregamento da página simplesmente trava no meio do processo. Há como amenizar esse problema abrindo múltiplas conexões, mas isso é apenas uma gambiarra, não uma solução.

loader-larger

Já o HTTP/2 usa multiplexação, um nome complicado para dizer que o navegador abre uma única conexão para baixar múltiplos arquivos. As requisições e respostas são paralelas e assíncronas: seu navegador pede vários arquivos ao mesmo tempo e recebe-os assim que eles estiverem prontos, na mesma conexão. Mas e se uma imagem na página, por exemplo, for pesada demais? Não tem problema: na mesma conexão, é possível misturar os dados, recebendo parte da imagem, depois um arquivo totalmente diferente e por fim o resto da imagem que faltava. Sensacional, não?

Outra novidade do HTTP/2 é o que está sendo chamado de server push. Se você der uma olhada no código-fonte do Tecnoblog, verá que há uma série de chamadas para elementos externos, como arquivos CSS e JS. No HTTP/1.1, seu navegador precisa primeiro solicitar a página, ler o código-fonte em HTML, interpretar que ali há chamadas para elementos externos e então solicitar esses tais elementos.

Só que, com HTTP/2, o servidor poderá mandar esses elementos antes do seu navegador pedi-los. Dessa forma, assim que seu navegador solicitar nosso index.html, o servidor poderá responder com o index.html, o style.css, o tb.css, o jquery.js e o favicon.png. Quando seu navegador se der conta de que precisa usar esses arquivos para renderizar a página, eles já estarão no seu computador, prontinhos para uso. Isso é mais eficiente e todo mundo fica feliz.

Mas o server push não poderia causar brechas de segurança nos navegadores, devido ao fato de baixar arquivos com antecedência, alguns potencialmente perigosos? “Não, porque vai ser uma conexão pré-estabelecida. Todas as requisições partem do cliente. O server push tem apenas o intuito de agilizar a renderização da página”, diz Soares.

Além disso, no HTTP/2, os cabeçalhos serão comprimidos com um formato chamado HPACK. Sempre que seu navegador solicita um arquivo, ele precisa baixar o cabeçalho desse arquivo, que pode conter o tamanho do arquivo, as informações do servidor e um cookie. Geralmente, um cabeçalho não passa de 1 KB, mas imagine isso se multiplicando por dezenas de arquivos? Com a compressão nos cabeçalhos, o uso de dados será menor — e as páginas carregarão mais rapidamente, claro.

Do lado das empresas

Além de melhorar a experiência para o usuário, o HTTP/2 também deverá trazer benefícios para as companhias. “Com todas as novas otimizações técnicas, as empresas conseguirão uma melhor utilização da infraestrutura em geral. Isso vai trazer melhor ROI [retorno sobre investimento, na sigla em inglês] sobre o equipamento atual e irá gerar uma sobrevida para os aparelhos em uso”.

“É interessante eles [os profissionais que trabalham na web] começarem a pesquisar se os provedores deles já têm planos para suportar HTTP/2. Verificar se a aplicação vai precisar de alguma alteração e se os fornecedores já estão suportando a tecnologia. Isso vai permitir que o site suporte o HTTP/2 quando o protocolo estiver ratificado, o que acredito que vá acontecer em abril ou maio”.

E quando vou poder usar isso?

As especificações do HTTP/2 foram finalizadas em fevereiro e estão sendo encaminhadas para se tornarem um padrão.

O Internet Explorer do Windows 10 Technical Preview já está pronto para o HTTP/2. O Google anunciou que o Chrome ganhará suporte ao HTTP/2 nas próximas semanas — o HTTP/2 traz algumas ideias do SPDY, protocolo que o Google começou a desenvolver em 2009 para acelerar a web; por causa do novo padrão, o SPDY será descontinuado. A Mozilla está testando o HTTP/2 no Firefox desde a versão 34.

Do lado dos servidores, a coisa também está andando bem. Tanto o Apache quanto o nginx já incluem suporte experimental para o HTTP/2 com base nos rascunhos da especificação lançados em 2014. O IIS, da Microsoft, possui suporte ao HTTP/2 no Windows 10 Technical Preview.

A adoção da nova versão do protocolo deverá acontecer ao longo dos próximos meses e anos — a migração acontecerá aos poucos, e certamente conviveremos com sites HTTP/1.1 e HTTP/2 lado a lado durante um bom tempo. Como os principais navegadores e servidores já estão preparados ou se preparando para o HTTP/2, ele não deve demorar para dominar a internet. Nossas conexões agradecem.

Publicado originalmente em 18 de fevereiro. Atualizado em 19 de março com informações adicionais.

  • Odilon Junior

    “A internet é formada por algumas camadas (quatro ou sete, dependendo da sua religião).” Isso começou uma briga na faculdade quando o professor falou que o OSI era conceitual

    • Leandro Nascimento

      graaaande camada OSI hahaha lembro do curso de CCNA da Cisco.

    • Guest

      Não surgiu para funcionar como um modelo funcional; tornou-se porque não acompanhou a velocidade do TCP/IP, sem falar que este último é tecnicamente mais prático.

    • Guest

      Por isso o modelo OSI é descrito como um modelo de referência. Tornou-se de referência porque não acompanhou a velocidade do TCP/IP (modelo de protocolo), sem falar que este último é tecnicamente mais prático.

  • Muito boa essa atualização, demorou para aprovarem a nova versão.

  • leoleonardo85

    Excelente, vou até ali dormir por 3 anos e voltar quando passar a ser padrão.

  • Pedro Maich

    Não entendo muito, mas esse novo padrão que vai forçar o servidor a acabar enviando dados pros computadores antes de serem requisitados, mesmo que seja previsto que ele vai pedir, não pode trazer uma falha de segurança e servidores mal intencionados enviem antivírus Baidu por aí sem que o usuário queira, na ‘melhor’ das hipóteses?

    • Pensa assim: no HTTP/1.1, seu navegador baixaria os dados mesmo assim, só demoraria mais para fazer isso (já que ele precisa ler o HTML primeiro e depois requisitar os arquivos).

      A única coisa que muda no HTTP/2 é que ele baixa esses dados com antecedência, para ficarem no cache. Os dados não serão executados, então não há risco de algo se instalar sozinho por aí.

      Claro que podem encontrar e explorar uma brecha no seu navegador para executar um comando remotamente, mas isso pode acontecer mesmo no HTTP/1.1.

    • Basicamente, se vc acessar esse tipo de site com o http/1.1, ele já iria instalar o “virus”. O vai mudar é que agora ele vai fazer isso ocupando menos o seu tempo.. o/

    • Vitor

      Eles serão baixados, mas não necessariamente serão executados… Se forem executados é porque o navegador pediu, e pra isso, o código da página tem que exigir. Então eles seriam executados do mesmo jeito no HTTP/1.1, porém no novo HTTP eles serão baixados antes.

  • Gustavo

    “…o BitTorrent, usado para fazer download de… distribuições Linux”. Claro, quem usa o BitTorrent para baixar conteúdos alternativos?! 🙂

  • Vitor

    E o medo de ativar? e.e

    • Luiz Claudio Eudes Corrêa

      Acabei de ativar no Opera, vejamos o que melhora!
      Será que em conjunto com o “Opera Turbo” vai ficar muito mais rápido quando tiver usando o 3G do celular já que to sem internet em casa?

      • Luiz Claudio Eudes Corrêa

        também habilitei 2 modificações no modo “Max Steel” Turbo, melhorou bastante a navegação no 3G

        • Keaton

          Curiosidade: o Opera-chromium já implementou algum dos recursos antigos ou continua como mais um daqueles forks genéricos do Chrome com a propaganda irremovivel de conteúdo inuteis (Descobrir/Discover)?

          • Luiz Claudio Eudes Corrêa

            Ta bem leve e simplificado, mas ainda tem aquele “descobrir” que deve ser como tiram um troco pra pagar o café dos programadores

          • Keaton

            Hm… então, ao menos para mim, ainda não vale a pena voltar pra ele. :
            Por enquanto espero o Vivaldi que parece ser o novo Opera.

    • João Manoel

      Não adianta ativar se o servidor dos sites q vc acessa não estiverem no padrão também.

  • Vale destacar que, desde a troca de layout no ano passado, o protocolo SPDY está habilitado e funcionando nas páginas do Tecnoblog.

  • Ademar Abiko Jr.

    Um dia teremos um SAC/2? =D

  • Edmilson_Junior

    Será que existe risco de sites mal intencionados aproveitarem esta função pra mandar arquivos indesejados junto do pacote ali junto do index e css? Imagino que exista algum mecanismo de segurança para evitar que executáveis e semelhantes venham ali no meio.

    • Tales Cembraneli Dantas

      Cara, não sou especialista na área, mas acredito que ele só irá permitir arquivos com css e js (não sei quanto a imagens, audios e videos, o browser já faz isso hj, mas como disse a matéria só depois q a página solicita).

  • Aluísio Xavier

    Dependendo da minha religião? Kkkkk “A internet é formada por algumas camadas (quatro ou sete, dependendo da sua religião)”

  • Laryssa Caetano

    Mas, se eu for criar um site inteligente nessa plataforma: http://www.superbiz.com.br/ O programador precisa estar ciente dessa atualização ou a própria internet já “migra” do 1 para o 2? Como ficarão blogs e o resto? abçs!!

    • Gustave Dupré

      Acredito que nesse caso você não precisa se preocupar.

  • Deivid Marques

    Ótima notícia principalmente pra nós que desenvolvemos pra web, assim quem ganha é o usuário que além de tudo sou um deles hehehe e bora desenvolver mais e mais.

  • Gustave Dupré

    Paulo higo, excelente artigo.
    Me tira uma duvida, o spdy tem ou tinha uma desvantagem que era enviar arquivo mesmo se o mesmo já tivesse em cache, ou que é ruim par ao consumo de banda. O http/2 tem o mesmo problema?

  • Leonardo Caldas

    Excelente artigo!

  • CACA-COBRA

    Algum risco de sites antigos darem bug quando isso for implementado nos navegadores?

  • Thiago L.

    O http-2 e o Https são as mesmas coisas…possuem alguma relação?