Introdução
Quando falamos de navegar na internet, por detrás do clique num link ou do endereço introduzido na barra de pesquisa, ocorre um conjunto complexo de comunicações entre o nosso dispositivo e o servidor que aloja o website que queremos visitar. O protocolo responsável por esta comunicação chama-se HTTP (Hypertext Transfer Protocol). Este artigo irá explorar uma versão melhorada deste protocolo, o HTTP/2, explicando o que é e como ele melhora a experiência de navegação na web.
Desvendando Mais Sobre o HTTP
Para compreender melhor o HTTP/2, é crucial entender a sua base, o HTTP/1. Lançado em 1996, o HTTP/1.1 veio como uma revolução na época, permitindo que a web se desenvolvesse em formas que ninguém tinha imaginado até então. As páginas web deixaram de ser estáticas e passaram a ser dinâmicas, com elementos interativos e aplicações web.
Porém, mesmo com todas as suas melhorias e atualizações ao longo dos anos, o HTTP/1.1 tem várias limitações, sendo a mais evidente a forma como lida com as conexões. Como o HTTP/1.1 realiza os pedidos em fila e cada pedido necessita de uma conexão separada, há um grande atraso – também conhecido como latência – que se torna bastante perceptível quando temos um grande número de recursos numa única página web.
Por que o HTTP/2?
Neste contexto, surge o HTTP/2, com o objetivo principal de aumentar a velocidade de carregamento das páginas. A diferença mais significativa entre o HTTP/1.1 e o HTTP/2 é a capacidade deste último de permitir que vários pedidos e respostas sejam enviados em simultâneo na mesma conexão. Esta característica, conhecida como multiplexação, reduz consideravelmente a latência.
Além disso, o HTTP/2 introduziu o conceito de “server push”, uma funcionalidade que permite ao servidor enviar recursos para o navegador antes mesmo deste os pedir. Isso significa que, em vez de esperar que o navegador peça cada recurso de uma página web, o servidor pode prever esses pedidos e “empurrar” os recursos para o navegador mais rapidamente.
O Detalhe da Multiplexação no HTTP/2
A multiplexação no HTTP/2 funciona criando o que são chamados de “streams”, “frames” e “headers”. Um stream é basicamente uma sequência virtual estabelecida dentro de uma conexão, que pode carregar múltiplos pedidos de mensagens, em ambos os sentidos, simultaneamente. Cada mensagem de pedido ou resposta é dividida em frames, que são enviados através do stream.
Cada frame possui um header que identifica o stream ao qual pertence. Com isso, todos os frames de várias solicitações e respostas podem ser misturados juntos na rede, pois no destino, o protocolo HTTP/2 pode reconstruir as mensagens completas com base nos headers.
Entendendo o Server Push
No HTTP/1, o cliente (geralmente, o navegador web) solicita um documento HTML e, depois de analisar esse documento, descobre que precisa de várias outras fontes, como imagens, folhas de estilo (CSS) e JavaScript. Então, tem de fazer pedidos HTTP adicionais para esses recursos. Este processo é muito ineficiente, pois cada pedido introduz latência adicional.
A funcionalidade “server push” do HTTP/2 visa resolver este problema. Com o “server push”, o servidor tem a capacidade de enviar múltiplos recursos para o cliente com uma única resposta. Isso reduz o número de viagens que o navegador precisa fazer para buscar todos os recursos, acelerando o carregamento da página.
HTTP/2 e a Segurança
A segurança na Internet tornou-se uma preocupação crescente nos últimos anos. À medida que as pessoas se tornam mais dependentes da web para todos os aspectos da sua vida – desde as redes sociais até às transações bancárias -, a proteção dos dados e a privacidade online tornaram-se um assunto crítico.
Ao contrário do HTTP/1.1, que foi desenvolvido numa época em que a segurança online não era uma prioridade como é hoje, o HTTP/2 traz a segurança como um de seus principais focos.
Encriptação TLS
O Transport Layer Security (TLS) é um protocolo que garante privacidade e integridade dos dados entre aplicações de comunicação. Ao usar o TLS, as aplicações podem se comunicar de forma a prevenir escutas, manipulação ou falsificação de mensagens. O TLS é a principal razão pela qual podemos fazer compras, transações bancárias e enviar mensagens sensíveis pela Internet sem medo de que essas informações sejam interceptadas.
No HTTP/2, a encriptação TLS não é apenas suportada, mas é também geralmente exigida. A maioria dos navegadores só suporta HTTP/2 com TLS, o que significa que todas as comunicações HTTP/2 são encriptadas. Isso faz uma grande diferença para a segurança, pois garante que a informação trocada entre o cliente e o servidor não possa ser lida ou modificada por terceiros.
Proteção Contra Ataques
O HTTP/2 também introduziu mecanismos para proteger contra vários tipos de ataques que podem ser realizados contra protocolos HTTP. Um desses ataques é o ataque de injeção de conteúdo, onde um atacante pode inserir conteúdo malicioso numa comunicação HTTP. Graças à encriptação TLS no HTTP/2, esse tipo de ataque é muito mais difícil de realizar, pois o atacante não pode ver ou modificar o conteúdo das comunicações.
Outra vantagem do HTTP/2 em termos de segurança é a sua proteção contra ataques de “man-in-the-middle”. Estes ataques ocorrem quando um atacante consegue interceptar e potencialmente alterar a comunicação entre duas partes. A encriptação TLS do HTTP/2 protege contra esses ataques, garantindo que apenas o cliente e o servidor possam ver e interpretar as mensagens que estão a trocar.
Além disso, o HTTP/2 introduziu o conceito de “origin framing”, que permite ao servidor verificar se um pedido é legítimo ou se foi modificado ou injetado por um atacante.
A Adoção do HTTP/2
O HTTP/2 foi lançado oficialmente em 2015, e desde então, a sua adoção tem vindo a crescer a um ritmo estável. Inicialmente, a transição para o HTTP/2 foi um pouco lenta, pois tanto os servidores como os navegadores precisavam ser atualizados para suportar o novo protocolo. No entanto, atualmente, a maioria dos navegadores modernos e muitos servidores web suportam o HTTP/2.
Conclusão
O HTTP/2 veio para superar as limitações inerentes ao HTTP/1, oferecendo uma web mais rápida, segura e eficiente. Com as suas características avançadas de multiplexação e “server push”, juntamente com o suporte para encriptação TLS, o HTTP/2 proporciona uma experiência de navegação mais segura e agradável.
Contudo, ainda que a sua adoção esteja a aumentar, o HTTP/2 ainda não é universal. Continuamos a coexistir num mundo misto onde HTTP/1 e HTTP/2 estão ambos em uso. Mas, a tendência está claramente a mover-se na direção do HTTP/2, preparando o terreno para um futuro onde a navegação na web será ainda mais rápida e segura.