🏠 Voltar ao Índice
1 / 18

🌐 World Wide Web & HTTP

HyperText Transfer Protocol

Aula 05
Como a Web funciona por baixo dos panos
Do clique do mouse ao conteúdo na tela

👨‍🏫 Autor da Apresentação

César Azevedo
📧 cesar.augusto@ifrn.edu.br

📋 Tópicos da Aula

🌟 Fundamentos

O que é HTTP e sua importância
Relação com FTP e SMTP
Documentos estáticos vs dinâmicos
Porta 80 e protocolo TCP

📨 Mensagens HTTP

Estrutura das mensagens
Linha de solicitação vs linha de status
Tipos de cabeçalhos
Corpo das mensagens

⚙️ Métodos e Códigos

Métodos HTTP (GET, POST, PUT, etc.)
Códigos de status (200, 404, 500, etc.)
Cabeçalhos especializados

🔄 Conexões

Conexões persistentes vs não persistentes
Vantagens e desvantagens
Servidores proxy
Cache e performance

🎯 Objetivo Final

Compreender como o HTTP transporta conteúdo na Web
e como otimizar a comunicação cliente-servidor

🧠 + Quiz Interativo

Teste seus conhecimentos com 4 questões práticas!

🤔 O que é HTTP?

Protocolo para acessar dados na Web
Combinação de FTP + SMTP
Usa TCP na porta 80
Protocolo sem estados (stateless)

💡 Como funciona:

Cliente (Browser)
⬇️ Solicitação HTTP
Servidor Web
⬆️ Resposta HTTP
Página exibida no navegador

🔗 Semelhanças com outros protocolos:

Como FTP: Transfere arquivos via TCP
Como SMTP: Mensagens com cabeçalhos MIME
Diferença: Uma única conexão TCP

📨 Estrutura das Mensagens

📤 Mensagem de Solicitação

Linha de solicitação
Cabeçalhos
Linha em branco
Corpo (opcional)
GET /index.html HTTP/1.1
Host: www.exemplo.com
Accept: text/html

(corpo opcional)

📥 Mensagem de Resposta

Linha de status
Cabeçalhos
Linha em branco
Corpo (opcional)
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<html>...</html>

🎯 Comunicação Cliente-Servidor

Cada transação HTTP é independente
Protocolo sem estados = sem memória entre requisições

⚙️ Métodos HTTP

Método Ação Uso Comum
GET Solicita um documento Navegar páginas, baixar arquivos
POST Envia dados para o servidor Formulários, upload de arquivos
PUT Envia documento do servidor para cliente Atualizar/criar recursos
HEAD Solicita info sobre documento Verificar se arquivo existe
TRACE Ecoa a solicitação Debugging, testes

🌟 Métodos Mais Utilizados:

GET: 90% do tráfego web (navegação)
POST: Envio de formulários e dados
HEAD: Verificação sem download

🏷️ Códigos de Status

✅ Códigos de Sucesso (2xx)

200 OK Sucesso
201 Created Recurso criado
204 No Content Sem conteúdo

↩️ Redirecionamento (3xx)

301 Moved Permanently Movido
302 Found Temporário
304 Not Modified Não modificado

❌ Erro do Cliente (4xx)

400 Bad Request Erro de sintaxe
401 Unauthorized Não autorizado
404 Not Found Não encontrado

💥 Erro do Servidor (5xx)

500 Internal Server Error Erro interno
503 Service Unavailable Indisponível

🎯 Dica Prática

O primeiro dígito indica a categoria:
2xx = Sucesso | 3xx = Redirecionamento | 4xx = Erro do cliente | 5xx = Erro do servidor

📋 Tipos de Cabeçalhos

🌐 Cabeçalho Geral

Cache-Control
Connection
Date
MIME-version

📤 Cabeçalho de Solicitação

Accept (formatos aceitos)
Host (servidor destino)
User-Agent (navegador)
Authorization (credenciais)

📥 Cabeçalho de Resposta

Server (nome do servidor)
Accept-Range
Age (idade do documento)

📄 Cabeçalho de Entidade

Content-Type (tipo de conteúdo)
Content-Length (tamanho)
Last-Modified (última modificação)
Expires (validade)

📝 Formato dos Cabeçalhos:

Nome-do-Cabeçalho: Valor
Content-Type: text/html
Content-Length: 1234
Host: www.exemplo.com

💻 Exemplo Prático - Método GET

📤 Solicitação do Cliente:

GET /usr/bin/image1 HTTP/1.1
Accept: image/gif
Accept: image/jpeg

(sem corpo na mensagem)

📥 Resposta do Servidor:

HTTP/1.1 200 OK
Date: Mon, 07-Jan-05 13:15:14 GMT
Server: Challenger
MIME-version: 1.0
Content-length: 2048

(dados da imagem aqui)

🔍 Análise do Exemplo:

Cliente pede uma imagem específica
Aceita formatos GIF ou JPEG
Servidor responde com sucesso (200 OK)
Informa tamanho e tipo do arquivo

📝 Exemplo Prático - Método POST

📤 Solicitação do Cliente:

POST /cgi-bin/doc.pl HTTP/1.1
Accept: */*
Accept: image/gif
Accept: image/jpeg
Content-length: 50

(dados do formulário aqui)

📥 Resposta do Servidor:

HTTP/1.1 200 OK
Date: Mon, 07-Jan-02 13:15:14 GMT
Server: Challenger
MIME-version: 1.0
Content-length: 2000

(página HTML gerada dinamicamente)

🔍 Diferenças do GET:

POST envia dados no corpo da mensagem
Content-length indica tamanho dos dados
Servidor processa dados e gera resposta
Usado em formulários e uploads

🔌 Conexões Não Persistentes

HTTP anterior à versão 1.1
Uma conexão TCP por solicitação/resposta
Conexão fechada após cada transação

🔄 Processo Não Persistente:

1. Cliente abre conexão TCP
2. Cliente envia solicitação HTTP
3. Servidor envia resposta HTTP
4. Servidor fecha conexão TCP
5. Cliente lê dados e fecha conexão

⚠️ Problemas:

Alto overhead para múltiplas requisições
Inicialização lenta a cada conexão
Muitos buffers no servidor
Ineficiente para páginas com muitas imagens
Para 10 imagens = 10 conexões TCP diferentes!

🔗 Conexões Persistentes

Padrão no HTTP 1.1
Servidor mantém conexão aberta
Múltiplas solicitações na mesma conexão
Fechamento por timeout ou solicitação

⚡ Vantagens:

Menor overhead de rede
Reduz latência
Menos recursos do servidor
Melhor para páginas complexas

🔧 Como funciona:

Servidor informa tamanho dos dados
Cliente sabe quando parar de ler
Se tamanho desconhecido: fecha conexão
Usado em documentos dinâmicos
1 conexão TCP → múltiplas solicitações HTTP

🔄 Servidores Proxy

Intermediário entre cliente e servidor
Mantém cache de respostas
Reduz carga nos servidores originais
Diminui latência e tráfego

⚡ Funcionamento do Proxy:

1. Cliente envia solicitação ao proxy
2. Proxy verifica cache local
3. Se não tem: solicita ao servidor web
4. Proxy recebe e armazena resposta
5. Proxy envia resposta ao cliente
6. Próximas solicitações: resposta do cache

✅ Vantagens:

Reduz carga no servidor
Menor latência
Economia de largura de banda
Controle de acesso

⚠️ Considerações:

Cliente precisa ser configurado
Cache pode ficar desatualizado
Proxy pode ser gargalo
Questões de privacidade

🎭 Documentos Estáticos vs Dinâmicos

📄 Documentos Estáticos

Conteúdo pré-criado
Mesmo para todos os usuários
HTML, CSS, imagens
Servidor apenas entrega arquivo
Exemplos:
• Páginas institucionais
• Documentação
• Imagens e vídeos

⚡ Documentos Dinâmicos

Conteúdo gerado em tempo real
Personalizado por usuário
CGI, PHP, ASP, JSP
Servidor processa e gera conteúdo
Exemplos:
• Redes sociais
• E-commerce
• Formulários
• Resultados de busca

🎯 Documentos Ativos

JavaScript executado no cliente (browser)
Também chamados de "documentos dinâmicos no cliente"

💻 Testando HTTP com TELNET

HTTP usa caracteres ASCII
Possível conectar diretamente com TELNET
Útil para debug e testes

🔧 Exemplo de Conexão TELNET:

$ telnet www.mhhe.com 80
Trying 198.45.24.104...
Connected to www.mhhe.com (198.45.24.104).
Escape character is '^]'.

GET /engcs/compsci/forouzan HTTP/1.1
From: forouzanbehrouz@fhda.edu

HTTP/1.1 200 OK
Date: Thu, 28 Oct 2004 16:27:46 GMT
Server: Apache/1.3.9 (Unix)
Content-Type: text/html
Content-length: 14230

(14.230 linhas de HTML seguem...)

📝 Passos do Teste:

Conectar na porta 80 do servidor
Digitar linha de solicitação
Adicionar cabeçalhos necessários
Linha em branco para finalizar
Servidor responde com status e conteúdo

🎯 Resumo Final

HTTP é o protocolo que faz a Web funcionar

✅ Características Principais:

Protocolo simples e eficiente
Baseado em TCP porta 80
Stateless (sem estado)
Mensagens legíveis (ASCII)
Suporte a cache e proxy

🎯 Componentes Essenciais:

Métodos (GET, POST, PUT...)
Códigos de status
Cabeçalhos especializados
Conexões persistentes
Documentos dinâmicos

🌐 Sem HTTP, não existiria a Web moderna!

Cada clique, cada página, cada imagem depende do HTTP

🧠 Quiz - Teste seus conhecimentos!

📝 Questão 1

Qual porta padrão o HTTP utiliza?

A) Porta 21
B) Porta 25
C) Porta 80
D) Porta 443

📚 Referências Bibliográficas

📖 Fonte Principal:

Capítulo 27 - WWW e HTTP
Livro de Redes de Computadores
Páginas 861-869

🌐 Sites Recomendados:

www.ietf.org/rfc.html (RFCs relacionadas)
www.w3.org (World Wide Web Consortium)
docs.anthropic.com (Documentação técnica)

📋 RFCs Principais:

RFC 2068 - HTTP/1.1
RFC 2109 - HTTP State Management
RFC 1630 - URI Specification
RFC 1738 - URL Specification

🎯 Objetivo Educacional

Facilitar o aprendizado do HTTP através de
linguagem simples, analogias e exemplos práticos