Tópico 09 - Protocolo HTTP

Tópico 09 - Protocolo HTTP

Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

Protocolos

  • TCP e IP, responsáveis pelo endereçamento e transmissão de pacotes;
  • DNS, responsável pela tradução de endereços para nomes de domínio;
  • HTTP e HTTPS, responsáveis pelo tráfego de mensagens entre aplicações;
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

TCP e IP

Os protocolos TPC e IP são geralmente utilizados como base para todas as trocas de dados em web services

  • TPC: Garante integridade, ordem e entrega final dos pacotes
  • IP: roteamento dos pacotes através do endereço IP
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

DNS

Domain Name System, responsável pela tradução dos nomes de domínio (ex.: exemplo.com.br) para um endereço IP (ex.: 20.30.2.1)

Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

Protocolo HTTP

  • Camada de Aplicação
  • Requisição/Resposta
  • Protocolo sem estado (stateless)
  • Porta 80
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

Exemplo de Requisição HTTP

  • Método + Caminho + Versão + Cabeçalhos + Corpo
POST /login HTTP/1.1
Connection: Keep-Alive
{user: "teste", password: "123456"}

Repare que não é necessário especificar o servidor (host) pois é a camada de rede/transporte o responsável por realizar a conexão

Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

Exemplo de Resposta HTTP

HTTP/1.1 200 OK
Host: example.com
Content-Length: 73
Date: Fri, 06 Aug 2030 01:31:51 GMT
<html><body>Olá Mundo!</body></html>
  • Versão do HTTP (HTTP/1.1)
  • Status Code (200 OK)
  • Cabeçalhos (Host: example.com Content-Length: 73 Date: Fri, 06 Aug 2030 01:31:51 GMT)
  • Corpo (<html><body>Olá Mundo!</body></html>)
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

Cabeçalhos Comuns

Cabeçalho Descrição Exemplo
Host Nome do servidor example.com
Content-Length Tamanho do corpo da mensagem em bytes 73
Content-Type Tipo do corpo da mensagem text/html
User-Agent Identificação do cliente Mozilla/5.0 (Windows NT 10.0; Win64; x64
Authorization Credenciais de autenticação Bearer <token>
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP
Cabeçalho Descrição Exemplo
Accept Tipos de conteúdo aceitos pelo cliente text/html
Cookie Dados de sessão do cliente sessionId=abc123; userId=1
Connection Controle de conexão keep-alive ou close
Cache-Control Controle de cache no-cache, no-store, must-revalidate
Last-Modified Data e hora da última modificação do recurso Wed, 21 Oct 2015 07:28:00 GMT
DNT Preferência de não rastreamento do usuário 1 (não rastrear) ou 0 (permitir rastrear)
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

Tipos de Conteúdo

O formato do corpo da mensagem geralmente é identificado usando um cabeçalho chamado Content-Type. Exemplos:

  • Texto plano genérico (text/plain)
  • Áudio (audio/mpeg), Vídeo (video/mp4) e Imagem (image/png)
  • Binário (application/octet-stream)
  • HTML (text/html)
  • Formulário (multipart/form-data)
  • JSON (application/json)
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

Estabelecendo uma conexão

Sempre que uma requisição HTTP é feita, é preciso que as camadas de rede/transporte realizem a conexão com o servidor antes de realizar qualquer requisição.

Conexões do tipo Keep-Alive podem ser utilizadas para múltiplas requisições.

Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

Comparação entre versões HTTP

Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP
  • 1.0: 1996
    • Pouco/Nenhum suporte a compressão
    • Apenas GET, HEAD e POST
  • 1.1 (mais utilizado): 1997
    • Novos Métodos e Códigos de Resposta
    • Keep-Alive
    • Compressão aprimorada do corpo da mensagem
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP
  • 2.0: 2015
    • Introduz protocolo binário ao invés de texto
    • Compressão do cabeçalho
    • Resposta e Requisições Multiplexada na camada de aplicação
      • Permite "enfileirar" requisições e respostas
      • Pacotes perdidos na camada de rede/transporte ainda bloqueiam as requisições
    • Server-Push (servidor envia respostas sem necessidade de requisições)
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP
  • 3.0: 2018
    • Troca do TCP+TLS para UDP+QUIC
    • Multiplexação não bloqueante na camada de transporte
      • Pacotes perdidos na camada de rede/transporte não bloqueiam outros pacotes
    • Criptografia obrigatória (TLS 1.3)
    • Conexão identificada por Connection ID ao invés de apenas endereço IP e porta
    • Menor latência
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

HTTPS

  • Extensão do procolo HTTP
  • Utiliza uma camada de segurança chamada Transport Layer Security (TLS)
  • Negociação da criptografia usando chaves públicas
  • Iniciada durante a fase de conexão
  • Porta 443

O TLS é uma versão mais recente do Secure Sockets Layer (SSL), termo ainda usado para descrever a mesma camada.

Disciplina de Backend - Professor Ramon Venson - SATC 2025.2
Tópico 09 - Protocolo HTTP

O que aprendemos nessa aula?

  • O que são serviços web e exemplos
  • Quais os protocolos mais utilizados por aplicações web
  • Como são realizadas as requisições HTTP
  • Quais ferramentas vamos utilizar para construir aplicações web
Disciplina de Backend - Professor Ramon Venson - SATC 2025.2

O HTTP/2 utiliza frames binários para transmitir dados, o que melhora a eficiência e a velocidade da comunicação entre cliente e servidor e permite multiplexação.

O HTTP/3 substitui o TCP pelo QUIC, que é baseado em UDP, para melhorar a performance e reduzir a latência. Quando um pacote TCP é perdido, todos os pacotes subsequentes são bloqueados até que o pacote perdido seja retransmitido e recebido corretamente. Isso pode causar atrasos significativos, mesmo quando o pacote perdido não faz parte de uma requisição específica (múltiplas requisições podem ser enviadas em uma única conexão TCP). O QUIC implementa seu próprio controle de congestionamento e recuperação de perdas. A conexão é identificada por um "Connection ID", permitindo que a conexão persista mesmo que o endereço IP do cliente mude (por exemplo, ao trocar de rede Wi-Fi para dados móveis).