Olá, visitante. Seja bem-vindo

Você está vendo esta página porque seu navegador fez uma requisição HTTP e recebeu esta resposta. Legal, né? 😃

Esta página foi criada para ilustrar o funcionamento do Hypertext Transfer Protocol (HTTP), que é a base da comunicação na internet. O HTTP é um protocolo de arquitetura cliente/servidor que opera na camada de aplicação do modelo TCP/IP e segue um modelo de requisição e resposta, no qual o cliente solicita um recurso e o servidor responde com os dados correspondentes.

O HTTP é utilizado para obter recursos, como documentos HTML e outros arquivos. Além disso, compreender esse protocolo é fundamental para desenvolvedores web, pois o HTTP é amplamente utilizado em APIs REST, que permitem a integração e troca de informações entre diferentes sistemas e aplicações na web. A figura abaixo ilustra uma página web, que é composta por diversos arquivos, como é o caso desta página.

Exemplo de página web composta por diversos arquivos

Quando você acessa um site, o navegador inicia o processo solicitando ao servidor o arquivo principal da página. Esse arquivo, geralmente em HTML, contém referências a todos os demais elementos que compõem o site, como imagens, folhas de estilo e scripts. Após receber esse arquivo, o navegador interpreta o HTML e começa a renderizar a página. Nesse momento inicial, ele envia ao servidor uma mensagem seguindo uma estrutura específica, conforme mostrado na imagem abaixo. Essa estrutura específica é a definição do protocolo.

Estrutura da mensagem HTTP enviada pelo navegador

Ao acessar o endereço redes.marcoantoni.com.br, o navegador enviou uma solicitação HTTP do tipo GET, típica para requisições de páginas, geralmente usando a versão HTTP/1.1 do protocolo. Como não foi especificado um nome de arquivo, utiliza-se o caractere /, que indica ao servidor para retornar o arquivo principal configurado. Ao receber essa solicitação, o servidor web envia esse arquivo inicial, definido pelo administrador. Neste exemplo, o arquivo retornado é home.php. Assim, se você acessar https://redes.marcoantoni.com.br/home.php, verá exatamente a mesma página, pois o arquivo home.php foi entregue.

No protocolo HTTP, os métodos de requisição definem a ação que o cliente (como um navegador ou aplicativo) deseja que o servidor execute sobre um determinado recurso. Entre os métodos mais comuns, destacam-se:

  • GET: utilizado para solicitar dados de um recurso específico. É o método HTTP mais comum, empregado principalmente para carregar páginas e arquivos. Quando é necessário enviar parâmetros, eles são incluídos diretamente na URL - seja como parte do caminho (path parameters) ou após o símbolo ? na sequência de consulta (query string) - ficando visíveis para o cliente. Por exemplo: https://redes.marcoantoni.com.br/home.php?nome=Fulano. Ao acessar essa URL, o parâmetro nome é enviado ao servidor, que irá exibir o nome do usuário no início da página. Em APIs REST, o método GET é amplamente empregado para recuperar informações sem alterar dados no servidor, garantindo operações seguras e idempotentes, como no exemplo disponível em https://redes.marcoantoni.com.br/exemplo_assincrono.php.
  • POST: utilizado para enviar dados ao servidor, geralmente com o objetivo de criar, atualizar ou processar informações. É amplamente empregado em formulários de login, cadastros e envio de arquivos. Por exemplo, ao acessar a página de login, digitar as credenciais e clicar em "Enviar", os dados são transmitidos no corpo da requisição. Isso significa que, ao inspecionar o tráfego com uma ferramenta como o Wireshark, é possível visualizar essas informações trafegando dentro do protocolo. Essa característica evidencia a vulnerabilidade do protocolo HTTP em relação à segurança, especialmente quando não é utilizado junto com criptografia (HTTPS).
  • DELETE: solicita a remoção de um recurso no servidor. Ao acessar essa página, é possível clicar no botão "Excluir", que envia uma requisição assíncrona ao servidor utilizando o método DELETE para remover um recurso (por exemplo, um usuário). O servidor então retorna uma resposta indicando sucesso ou falha, e, em caso de sucesso, a linha correspondente ao registro é ocultada na interface - tudo isso sem recarregar a página. Caso você tente acessar diretamente o arquivo excluir.php pelo navegador, será exibido um erro, pois ele aceita apenas requisições feitas com o método DELETE.

Atualmente, as versões mais relevantes do protocolo HTTP são:

  • HTTP/1.1: introduziu conexões persistentes, permitindo múltiplas requisições pela mesma conexão sem precisar reabri-la a cada vez. Também trouxe suporte a cache, compressão e mais métodos de requisição, tornando-se o padrão da web por décadas.
  • HTTP/2: focado em desempenho, permite multiplexar várias requisições e respostas no mesmo canal, reduzindo a latência. Além disso, comprime cabeçalhos e permite priorizar recursos importantes para o carregamento da página.
  • HTTP/3: baseado no protocolo QUIC (sobre UDP), melhora ainda mais a velocidade e a confiabilidade, especialmente em conexões móveis ou instáveis. Possui criptografia integrada por padrão, aumentando a segurança.

Cada nova versão mantém compatibilidade com recursos anteriores, mas otimiza a performance e a segurança para acompanhar as demandas modernas da internet.

Na prática, o método escolhido orienta o servidor sobre a ação a ser executada com o recurso solicitado. Por exemplo, ao acessar um site digitando seu endereço no navegador, normalmente é feita uma requisição GET usando a versão HTTP/1.1 do protocolo.

No protocolo HTTP, a mensagem de resposta enviada pelo servidor inclui um código numérico que indica o resultado da requisição. Esses códigos, conhecidos como *status codes*, informam ao cliente se a solicitação foi bem-sucedida, se houve algum erro ou se são necessárias ações adicionais. Alguns dos códigos mais comuns são:

  • 200 - OK: indica que a requisição foi processada com sucesso e o recurso solicitado foi retornado. Exemplo: um navegador solicita uma página HTML existente e recebe o conteúdo corretamente.
  • 400 - Bad Request: indica que o servidor não pôde processar a requisição devido a erro de sintaxe ou parâmetros inválidos. Exemplo: uma API que espera um parâmetro numérico recebe um texto não numérico.
  • 404 - Not Found: significa que o recurso solicitado não foi encontrado no servidor. Exemplo: acessar https://redes.marcoantoni.com.br/sobre.php retorna esse erro.