DEV Community

mylena
mylena

Posted on

Protocolos base da internet: HTTP

HyperText Transfer Protocol

O HTTP é um protocolo de transferência de hipertexto que fica na camada de aplicação, e é a base da internet quando se refere a carregamento de recursos de hipertexto, iamagens, vídeos, o que compõe uma página web.

Uma forma de se comunicar usando esse protocolo é a base do request-response, onde:

O navegador sempre inicia a comunicação (enviando uma requisição)

Exemplo de padrão request. Método, path, protocol/header/body

Ao enviar uma requisição para o back-end, o client tem que garantir que está enviando o método, o path, header e body correto. Lembrando que um GET não deveria ter conteúdo no body.

Obs: Um IP pode ter diversos websites, então, por trás do DNS, todos os websites estão apontado para o mesmo IP, mas no header tem o campo "host" e é através dele que a aplicação entende de onde/para onde é.

Ao longo do tempo houveram evoluções do HTTP. A primeira versão é a 1.0, após isso vieram a 1.1 (a mais conhecida), 2.0 e 3.0.

O HTTP 3.0 é um HTTP que não opera pelo TCP, mas sim através do UDP, tendo como premissa uma maior rapidez em comparação as outras versões e sendo uma forma de evitar o bloqueio que acontece com o TCP ao fazer o multiplexing e acaba tendo alguma perda de pacote na transmissão (pelo fato do TCP ler em sequência, e se um pacote for perdido, precisar fazer a retransmissão).

Além do HTTP 3.0, o HTTP 2.0 também tem o suporte de fazer o multiplexing (no caso do HTTP 2.0, é feito com o TCP), é mais rápido e traz uma maior segurança por padrão ao invés da versão 1.1.

Além disso, o HTTP é um protocolo que não tem estado então não existe um armazenamento das informações que foram trocadas "por conta própria", o armazenamento deve ser feito usando outras estratégias, como, por exemplo, cookies.

Exemplo de padrão response. Protocolo, status code, code text, headers/body

Na versão 1.1, ao receber o response, existe a transcrição do status code. Ex: 200 OK, 404 NOT FOUND

Tanto o request quanto o response têm headers onde é possível colocar um cabeçalho genérico, que não tem relação aos dados em si transmitidos, quanto cabeçalhos específicos para request/response.

Top comments (0)