💻
Web 101
  • Introdução
  • Breve história dos computadores modernos
  • Comunicação entre processos
    • File descriptors
    • UNIX Pipes
    • UNIX Sockets
      • Datagram sockets
      • Stream sockets
  • Internet
    • TCP Sockets
    • UDP Sockets
    • Pseudo devices
  • Breve história da Web
  • Construindo um simples echo Web server
    • Entendendo o HTTP
    • Primeira versão do server
    • Adicionando HTML
  • Construindo um Web server com Login & Logout
Powered by GitBook
On this page
  • Request
  • Response
  • Versão
  • Status code
  • Body
  • HTTP headers
  1. Construindo um simples echo Web server

Entendendo o HTTP

Primeiro, vamos entender o formato da mensagem HTTP. Basicamente, existem 2 tipos de mensagens neste protocolo:

  • Request, que representa a mensagem enviada do cliente para o servidor

  • Response, que representa a mensagem, ou resposta, enviada do servidor para o cliente

Request

A seguir descrevemos o formato padrão de uma mensagem HTTP Request:

GET /index.html HTTP/1.1
Content-Type: plain/text

PING
  1. a primeira linha, conhecida como headline, define o método ou verbo, em seguida o caminho para o recurso, e por último a versão do protocolo.

  2. (opcional) a segunda linha define o cabeçalho, ou header. Os headers no HTTP são opcionais e representam metadados que podem ser lidos tanto pelo server quanto pelo client.

  3. a terceira linha é uma linha em branco, mandatória para separação entre headers e payload

  4. (opcional) a última linha refere-se ao payload, ou body, que representa o conteúdo principal a ser enviado na mensagem HTTP. O body é opcional.

Response

E agora demonstramos o formato do HTTP Response:

HTTP/1.1 200
Content-Type: plain/text
Content-Length: 4

PONG
  1. a primeira linha, conhecida como headline, define o versão, seguida do status code, que representa um código de sucesso ou falha.

  2. (opcional) a segunda linha define o cabeçalho, ou header. Os headers no HTTP são opcionais e representam metadados que podem ser lidos tanto pelo server quanto pelo client.

  3. a terceira linha é uma linha em branco, mandatória para separação entre headers e payload

  4. (opcional) a última linha refere-se ao payload, ou body, que representa o conteúdo principal a ser enviado na mensagem HTTP. O body é opcional.

Vamos agora entender mais alguns conceitos do HTTP.

Versão

A versão do protocolo vai depender em como o server e client suportam, mas a primeira versão de 1989 era HTTP/0.9.

Anos mais tarde, o protocolo foi sofrendo melhorias, subindo para a versão 1.0.

Em 1997 foi lançada a versão HTTP/1.1 com diversas melhorias, o que predominou em todos os web browsers até 2015.

A versão HTTP/2 é publicada em 2015 com suporte a uma web mais semântica, e hoje é utilizada em 45% dos websites e suportada por 96% dos web browsers.

Então em 2022 é publicada a versão HTTP/3, que traz notórias mudanças, dentre elas a utilização de outro protocolo de transporte, o QUIC, lançado em 2012 e que utiliza UDP com uma implementação de conexão leve e tem menos latência que TCP. HTTP/3 é utilizado por 24% dos websites.

Em testes de performance, HTTP/3 se mostrou mais rápido que HTTP/2 e até 3x mais rápido que HTTP/1.1.

Para fins didáticos neste guia, vamos utilizar HTTP/1.1, pois ainda assim é utilizado por mais de 80% dos websites.

Status code

Status code é um indicativo de sucesso, falha no servidor ou até mesmo falha na mensagem do cliente.

Operações de sucesso costumam ficar na família 200, ou 2xx de status codes.

Se o servidor não conseguir interpretar a mensagem do cliente por algum motivo ou validação de dados, é caracterizado um erro de cliente, ou client error. Client errors costumam ficar na família 400, ou 4xx de status codes.

Se o servidor não conseguir processar a resposta por algum erro interno, seja o erro esperado ou não, é caracterizado um server error. Server errors costumam ficar na família 500, ou 5xx de status codes.

Há também outra família de status codes, que é a 300 ou 3xx, que indica que o aquele caminho específico não tem o recurso mas que o recurso foi modificado/redirecionado para outro caminho no servidor.

Body

O corpo da mensagem é o conteúdo principal. No HTTP, pode ser desde um simples texto, a um hypertexto, um arquivo PDF, uma imagem, JSON, XML etc, qualquer formato de conteúdo, desde que especificado nos metadados (headers) da mensagem.

Ou seja, embora foi concebido para, o conteúdo do HTTP não precisa ser necessariamente hypertexto (HTML).

HTTP headers

O HTTP é um protocolo bastante versátil, e não à toa, se tornou o padrão para a Web. Esta versatilidade não seria possível sem o uso de metadados, ou headers, para que servidor e cliente possam trocar informação necessária sobre tipo do conteúdo, tamanho, regras de segurança, cache de dados entre outras informações extremamente relevantes.

PreviousConstruindo um simples echo Web serverNextPrimeira versão do server

Last updated 2 years ago