DEV Community

Larissa Tavares
Larissa Tavares

Posted on

Conhecendo sobre o protocolo HTTP

Primeiramente precisamos entender que o protocolo HTTP está presente na camada de aplicação do modelo OSI, ela é a única camada que interage diretamente com os dados do usuário

Modelo OSI (Open System Interconnection) : modelo que oferece um padrão para que diferentes sistemas de computadores possam se comunicar


O que é HTTP?

  • Bom, o HTTP é um protocolo ou seja, um conjunto de regras, estabelecido para organizar a maneira como os computadores trocam dados entre si
  • HTTP significa Hypertext Transfer Protocol (Protocolo de transferência de hipertexto). Um conjunto de regras que permite passar com todos os detalhes dados como texto, imagem, vídeos e áudios entre dispositivos
  • Suas versões rodam sobre o TCP, e a sua versão mais atual, o HTTP/3 também roda sobre UDP
  • Os cabeçalhos de solicitação e resposta são dados em ASCII

HTTP e HTTPS

https

Já ouvimos falar que existem esses dois protocolos, mas qual a diferença entre eles?

  • O HTTP e o HTTPS recuperam os dados da mesma maneira. A diferença é que o protocolo HTTP quando utiliza um protocolo de transporte seguro, chamado TLS (Transport Layer Security), constitui o que conhecemos como HTTPS

Como funciona?

A comunicação funciona em duas pontas, a partir da solicitação (requisição) no lado do usuário (cliente) para o lado o servidor web, e uma resposta se referindo à ação do servidor

Cliente/servidor

Elementos da requisição

Compostos por:

  • Método HTTP
  • Caminho do recurso a ser buscado
  • Versão do protocolo HTTP
  • Cabeçalho (header)
  • Corpo (body)

Requisicao HTTP

Elementos das respostas

Compostos por:

  • Versão do protocolo HTTP
  • Código de status
  • Mensagem de status
  • Cabeçalho (header)
  • Corpo (body)

Resposta HTTP

Cabeçalho / Header

Os cabeçalhos contém informações básicas como tipo de conteúdo, idioma, conjunto de caracteres, entre outros

Abaixo temos uma lista de alguns dos cabeçalhos de uma requisição HTTP

  • Accept-Language : Determina qual linguagem é entendida pelo cliente e qual a sua região de preferência
  • Allow : Lista quais métodos HTTP são aceitos pelo servidor para o recurso acessado
  • Content-Language : É a forma do servidor dizer ao cliente quais linguagens estão disponíveis para o recurso atual
  • Cookie : Contém o valor de um Cookie HTTP e é a forma do navegador enviar esse dado de volta ao servidor a cada requisição
  • Content-Type : Indica qual o tipo de mídia de um recurso
  • User-Agent : Contém uma string de identificação da aplicação, sistema operacional e distribuidor do software que fez a requisição

Corpo / Body

É a resposta àquela solicitação. No HTTP, pode ser desde um simples texto, a um hipertexto (HTML), um arquivo PDF, uma imagem, JSON, XML etc


Métodos HTTP

  • Os métodos indicam ações que a solicitação HTTP espera de um determinado servidor consultado
  • Cada método estipula uma operação diferente

Existem nove métodos HTTP, são eles

  • GET
    Solicita o envio de um recurso específico. Requisições utilizando este método retornam apenas dados

  • HEAD
    Solicita apenas o cabeçalho da mensagem, sem conter o corpo da mensagem

  • POST
    Submete uma entidade a um recurso específico, geralmente causando uma mudança no estado do recurso. Faz o upload de dados para um servidor

  • PUT
    Substitui a representação atual do destino pela carga de dados da requisição

  • DELETE
    Exclui um recurso específico

  • TRACE
    Serve para depuração, ele instrui o servidor a enviar de volta a solicitação. É útil quando a solicitação não está sendo processada corretamente, e o cliente deseja saber qual solicitação o servidor recebeu

  • CONNECT
    Estabelece uma conexão com o servidor através de um dispositivo intermediário. Exemplo: cache web

  • OPTIONS
    Fornece um meio para que o cliente consulte o servidor e obtenha os métodos e cabeçalhos que podem ser usados

  • PATCH
    Utilizado para aplicar modificações parciais em um recurso


Códigos de status de resposta HTTP

  • Toda solicitação obtém uma resposta que contém uma linha de status e as informações adicionais da página
  • A linha de status possui um código de três dígitos informando se a solicitação foi atendida, se não e porque não
  • O primeiro dígito serve para dividir a resposta em cinco grupos importantes

Grupos

Código Significado
1xx Informação
2xx Sucesso
3xx Redirecionamento
4xx Erro do cliente
5xx Erro do servidor

Alguns exemplos de códigos de status

Código Descrição
100 Continue Indica que o cliente deve continuar a solicitação ou ignorar a resposta se a solicitação já estiver concluída
102 Processing Indica que o servidor recebeu e está processando a requisição, mas nenhuma resposta está disponível ainda
200 Ok Indica que a solicitação foi bem sucedida
201 Created A requisição foi bem sucedida e um novo recurso foi criado como resultado. Normalmente utilizado após requisições POST ou PUT
202 Accepted A solicitação foi recebida mas ainda não foi atendida, nesse caso não será enviado nenhuma resposta posteriormente de forma assíncrona. É utilizado em casos em que outro processo ou servidor manipula a solicitação
300 Multiple Choices A solicitação tem mais de uma resposta possível, e o usuário deve escolher um deles
301 Moved Permanently A URL do recurso solicitado foi movido permanentemente, a nova URL é enviada na resposta
302 Found Significa que a URI do recurso foi alterada temporariamente, mas que essa mesma URI deve ser usada para requisições no futuro
400 Bad Request O servidor não pode processar a requisição devido a um erro do cliente
401 Unauthorized Significa que o cliente deve se autenticar para obter a resposta desejada
403 Forbidden O cliente não tem direitos de acesso ao conteúdo, diferente do 401, aqui a identidade do cliente é conhecida
404 Not Found Indica que o servidor não pode encontrar o recurso solicitado
418 I'm a Teapot O servidor se recusa a preparar café com um bule de chá
429 Too Many Requests O cliente enviou muitas requisições em um dado tempo
500 Internal Server Error O servidor encontrou uma condição inesperada que o impediu de atender a solicitação
501 Not Implemented O servidor não reconhece o método de solicitação e não é capaz de suportá-lo para nenhum recurso
502 Bad Gateway Ao atuar como gateway ou proxy, o servidor recebeu uma resposta inválida de um servidor de entrada que ele acessou ao tentar atender à solicitação

Versões do HTTP

HTTP/1.0

  • A conexão entre um navegador e um servidor, habitualmente é feita através da conexão TCP
  • No HTTP/1.0 depois que a conexão era estabelecida, uma única solicitação era enviada e uma única resposta era devolvida, e a conexão TCP era encerrada
  • Porém como as páginas Web continham grandes números de links, imagens e ícones, o estabelecimento de uma única conexão TCP para transportar um único ícone se tornou muito custoso, com isso surgiu o HTTP/1.1

HTTP/1.1

  • Com essa versão foram admitidas conexões persistentes
  • Assim é possível estabelecer uma conexão TCP, enviar uma solicitação e obter uma resposta, e depois enviar solicitações adicionais e receber respostas adicionais
  • Também é chamado de reúso de conexão

HTTP/2.0

  • Melhorias de desempenhos
  • No HTTP/2, uma conexão TCP é estabelecida e muitas solicitações podem ser enviadas e o servidor pode responder a elas em qualquer ordem que desejar
  • Através de um mecanismo chamado server push, o HTTP/2 permite que o servidor envie arquivos que ele já sabe serem necessários, mas que o cliente pode não saber inicialmente
  • As respostas podem retornar em qualquer ordem
  • O HTTP/2 compacta os cabeçalhos e os envia em binário para reduzir o uso da largura de banda e a latência

HTTP/3.0

  • Sua principal diferença é o protocolo de transporte usado para dar suporte às mensagens HTTP: em vez de depender do TCP, ele depende de uma versão aumentada do UDP chamada QUIC, que conta com o controle de congestionamento do espaço do usuário executado em cima do UDP

Referências
Códigos de Status HTTP
TANENBAUM, A.S. Redes de Computadores. 1988.
Diving into the HTTP

Top comments (0)