HTTP e HTTPS simplão

Matheus Luis
4 min readApr 12, 2022

--

Não é novidade para ninguém que a internet é nada mais nada menos do que uma comunicação de dados entre pontos extremos, ou seja, um emissor envia um pedido e na outra ponta um receptor recebe esse mesmo pedido. Só que até na vida real, para duas pessoas conseguirem se comunicar, são necessárias normas que tornem o conteúdo da mensagem interpretável pela outra ponta, como por exemplo: o idioma utilizado.

Com a internet não é diferente, por esse motivo que o hypertext transfer protocol, ou Protocolo de Transferência de Hipertexto, vulgo HTTP foi criado, para trazer regras que permitem a ubiquidade comunicativa por meio da web, de forma que o cliente e o servidor transmitam dados em um formato comum de comunicação .

E é desta maneira que o navegador (cliente) consegue atender as solicitações do usuário e envia-las ao servidor para que o mesmo decida o que fazer com o pedido, podendo devolver uma mensagem de erro, um conteúdo, ou até mesmo não fazer nada, mas ai já é uma brisa que diz respeito à APIs.

HTTPS

Pô, mas acho que todo mundo sempre se pergunta qual a diferença entre o HTTP e o HTTPS, bem fácil, o S no final de HTTPS significa: Secure. Então se HTTP significa: protocolo de transferência de hipertexto; logo HTTPS significa: protocolo de transferência de hipertexto seguro.

Essa tal segurança prometida, trata-se de uma camada de criptografia chamada de SSL/TLS, também conhecidas como: Secure Sockets Layer / Transport Layer Security. Essa camada de segurança é justamente responsável por criptografar o conteúdo da mensagem que por sua vez era enviado como texto puro no HTTP, em um modelo de criptografia baseada em chaves: públicas e privadas.

As chaves são geradas com base na identidade de quem possui essas chaves, esse processo é realizado através da criação de um certificado digital, provando a existência dessa identidade. Com as chaves geradas então o navegador faz o uso dessas chaves para realizar a criptografia dos dados.

Como acontece a comunicação ?

Tanto o HTTP quanto o HTTPS foram projetados para comunicação entre navegadores e servidores da web, mas também possuem outros fins. Esses protocolos estão sempre trabalhando em conjunto com mais outros dois protocolos, o Transmission Control Protocol (TCP) que é responsável pela transferência das informações, e o Internet Protocol (IP) que cuida dos encaminhamentos dos dados, geralmente são vistos de forma conjunta como TCP/IP.

O protocolo HTTP trabalha em um modelo de request (pedido feito ao servidor) e response (resposta devolvida), exemplo, um navegador realiza um acesso à um site então ele faz um pedido para o servidor que devolve uma resposta geralmente em HTML ou JSON, após esse processo de pedido e resposta a conexão é encerrada, sendo necessário repetir o ciclo cada vez que um pedido é realizado (conexão não persistente).

Modelo de requisição HTTP

Request Message Header

É aqui que esperamos o Request line contendo as seguintes informações:

  • Identificador do método: Tipo de ação que esperamos do servidor, também chamado de “verbo” (ex: GET, POST).
  • URI do Recurso: Endereço no qual será enviado o pedido (ex: /order/confirmed_orders).
  • Versão do protocolo: Versão do HTTP em uso (ex: HTTP/1.1 ou HTTP/2)

Em seguida temos os Request Headers, são campos que contém informações adicionais sobre a requisição, compostos por seu nome, seguido por dois pontos ‘ : ’ e pelo seu valor (sem quebras de linha). Espaços em branco antes do valor serão ignorados.

Cabeçalho genérico: Cabeçalhos que podem ser usados tanto em solicitações quanto em respostas, porém sem relação com os dados eventualmente transmitidos no corpo da mensagem.

Cabeçalho de solicitação: Cabeçalhos contendo mais informação sobre o recurso a ser obtido ou sobre o próprio cliente.

Cabeçalho de resposta (en-US): Cabeçalhos contendo informação adicional sobre a solicitação, como a sua localização ou sobre o servidor.

Cabeçalho de entidade: Cabeçalhos contendo mais informação sobre o conteúdo da entidade, como o tamanho do conteúdo ou o seu MIME-type.

Request Message Body

É no corpo da mensagem da requisição que vai o conteúdo em si que está sendo transferido, APIs REST mesmo utilizam o formato JSON para ordenar o conteúdo da mensagem.

Modelo de resposta HTTP

O formato de uma resposta HTTP é bem parecida com o formato de requisição, mudando apenas pequenas particularidades.

Request Message Header

Continua possuindo o Request line mas que dessa vez ao invés de possuir a URI do Recurso, agora possui um Response Status Code ou Código Numérico do Status. Sendo assim: Versão do protocolo, status numérico, descrição do status em texto.

  • Código Numérico do Status: Número em 3 dígitos que corresponde como o pedido foi condicionado no servidor. As respostas são agrupadas em 5 classes:

Respostas de informação (100-199),

Respostas de sucesso (200-299),

Redirecionamentos (300-399)

Erros do cliente (400-499)

Erros do servidor (500-599).

Todo o resto segue o mesmo formato da requisição HTTP, com exceção de alguns headers que também são alterados ou removidos.

Referências

--

--

Matheus Luis

Engenheiro de Software na Stone Co. | Entusiasta linux | Microsserviços | .NET | New Relic