Faculdade de Tecnologia SENAC Pelotas/RS
Curso Superior de Tecnologia em Redes de Computadores
Unidade curricular Redes de Computadores III
HTTP
(HyperText Transfer Protocol)
Professor Eduardo Maroñas Monks
SUMÁRIO
•
•
•
•
•
•
Histórico
Funcionalidades
Protocolo
Aplicações
Segurança
Referências Bibliográficas
Prof. Eduardo M. Monks - Redes de Computadores III
2
Histórico
•
Décadas de 70 e 80
• A Internet era usada somente para pesquisas
acadêmicas
• Basicamente, a rede era usada para acesso remoto,
transferência de arquivos e troca de e-mails
• Final dos anos 80 e início da década de 90
• Propostas
da arquitetura
do WWW
(World Wide
Exemplo
de uso iniciais
de serviços
com o protocolo
Gopher
Web) por Tim Berners-Lee em 1989
http://www.quux.org:70/Software/Gopher/servers
• Sistemas existentes para acesso e procura de
documentos disponíveis na época: Gopher, Archie,
WAIS (Wide Area Information Servers) e outros
• Todos estes sistemas foram substituídos pelo WWW
• Crescimento exponencial do WWW nos anos 90
• 1991: primeiro navegador Web e servidor de páginas
• 1993: primeira versão do navegador Mosaic (Pai do
Netscape e avô do Firefox...)
Prof. Eduardo M. Monks - Redes de Computadores III
3
Histórico
•
WWW (World Wide Web)
• É uma arquitetura que envolve protocolos, linguagens
de apresentação e serviços para acesso universal a
informações.
• Definição do W3C (World Wide Web Consortium) para o
WWW:
• “O WWW é o universo de informações acessíveis
pela rede, uma representação concreta do
conhecimento humano”.
• As características do WWW são:
• Hypertexto
• Interface gráfica
• Dados Multímidia
• Rapidez na divulgação das informações
• Acesso imediato e universal a informação
• Democracia na autoria do conteúdo (Blogs, Wiki...)
• Facilidade na procura das informações (Google)
Prof. Eduardo M. Monks - Redes de Computadores III
4
Histórico
•
Componentes do WWW (World Wide Web)
• Protocolo HTTP (Hypertext Transfer Protocol)
• Responsável pelas mensagens de requisição e
resposta entre clientes e servidores
• RFC: http://www.w3.org/Protocols/rfc2616/rfc2616.html
•
Clientes
• Responsáveis pela interação do usuário para
acesso aos dados disponibilizados
•
Servidores
• Responsáveis por disponibilizar os arquivos e por
gerar conteúdo dinâmico por meio de linguagens
de programação
•
Linguagem HTML (Hypertext Markup Language)
• Linguagem interpretada e renderizada nos clientes
gráficos que possibilita conteúdo multimídia
Prof. Eduardo M. Monks - Redes de Computadores III
5
Histórico
Evolução do Protocolo HTTP
•
HTTP/0.9 (http://www.w3.org/Protocols/HTTP/AsImplemented.html)
• Definido em 1991
• Versão inicial (protótipo) com falhas no projeto do protocolo
• Suporte somente para o método GET
• Sem suporte ao MIME
• Projetado para interagir com arquivos HTML
•
HTTP/1.0 (http://www.ietf.org/rfc/rfc1945.txt)
• Primeira versão amplamente utilizada
• Suporte a objetos multimídia, métodos adicionais e
cabeçalhos HTTP
• Possibilitou o uso de formulários interativos (métodos POST
e PUT)
• Não havia uma especificação formal do protocolo, somente
melhores práticas para desenvolvê-lo, a RFC 1945 só veio em
1996!
• Uso acadêmico e comercial
Prof. Eduardo M. Monks - Redes de Computadores III
6
Histórico
•
HTTP/1.0+
• Foram “gambiarras” criadas durante a década de 90 por
desenvolvedores de clientes e servidores de HTTP para
melhorar o protocolo
• As melhorias foram extra-oficiais: conexões persistentes,
suporte a hosts virtuais e conexões a proxies
•
HTTP/1.1 (http://www.faqs.org/rfcs/rfc2616.html)
• Versão atual do protocolo (RFC 2616)
• Melhorias no projeto do protocolo
• Introdução de melhorias em desempenho e otimizações de
funcionalidades
• Suporte a aplicações mais sofisticadas
Key Differences between HTTP/1.0 and HTTP/1.1 http://www8.org/w8-papers/5c-protocols/key/key.html
Prof. Eduardo M. Monks - Redes de Computadores III
7
Funcionalidades
• URL
•
Sintaxe:
•
Exemplos:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#
<frag>
http://www.joes-hardware.com:80/index.html
http://161.58.228.45:80/index.html
ftp://anonymous:[email protected]/pub/gnu
http://joe:[email protected]/sales_info.txt
http://www.joes-hardware.com/tools.html#drills
http://www.diariopopular.com.br/site/content/esporte/index.php?id=4
Prof. Eduardo M. Monks - Redes de Computadores III
8
Funcionalidades
•
Códigos de Estado
Total da Faixa de
Códigos
Faixa Definida de
Códigos
Categoria
100-199
100-101
Informacional
200-299
200-206
Sucesso
300-399
300-305
Redirecionamento
400-499
400-415
Erro no cliente
500-599
500-505
Erro no servidor
Prof. Eduardo M. Monks - Redes de Computadores III
9
Funcionalidades
•
Transação HTTP
• Baseada em requisições (Request) e respostas
(Response)
• Na versão 1.1 do protocolo foi padronizada a conexão
persistente para aumento de desempenho
Prof. Eduardo M. Monks - Redes de Computadores III
10
Funcionalidades
•
Servidor HTTP
1. Estabelece a conexão TCP
com o cliente
2. Recebe a requisição – Lê a
requisição na mensagem
HTTP
3. Processa a requisição –
interpreta a requisição e
realiza a ação
correspondente
4. Acessa o recurso – Busca o
recurso solicitado na
mensagem
5. Constrói a resposta – cria
uma mensagem com os
cabeçalhos HTTP de
resposta
6. Envia a resposta – envia a
resposta para o cliente
7. Registra a transação –
guarda em arquivo de log o
registro da transação
Prof. Eduardo M. Monks - Redes de Computadores III
11
Funcionalidades
•
Cliente HTTP
• São os responsáveis pela solicitação de recursos ao
servidor
• Método HTTP básico é o GET
• Dois tipos básicos:
• Modo texto (Lynx, Links, Wget, ...)
• Modo gráfico (Mozilla Firefox, MS IE, Google
Chrome, ...)
• Um browser (navegador) é um cliente HTTP com
recursos de navegação, interpretação de HTML e
recursos multimídia!
Componentes
de um
navegador
Prof. Eduardo M. Monks - Redes de Computadores III
12
Funcionalidades
•
Proxy
Prof. Eduardo M. Monks - Redes de Computadores III
13
Funcionalidades
•
Caching
Prof. Eduardo M. Monks - Redes de Computadores III
14
Funcionalidades
•
Indexadores (Crawlers)
http://en.wikipedia.org/wiki/List_of_search_engines
Prof. Eduardo M. Monks - Redes de Computadores III
15
Protocolo
HTTP (HyperText Transfer Protocol)
• Baseado em cliente/servidor
• Trabalha na porta 80 e 443 utilizando o
protocolo TCP como transporte
• Utiliza mensagens de requisição e
resposta para transferência de recursos
• Mensagem em texto plano (em HTTPS as
mensagens são criptografadas)
• O protocolo não guarda estado (o acesso
de uma URL para outra não é mantido)
• Versão atual é a 1.1 (RFC 2616)
Prof. Eduardo M. Monks - Redes de Computadores III
16
Protocolo
Componentes
• Clientes
• Enviam requisições e recebem respostas
• Navegadores, Spiders e Agentes
• Servidores
• Recebem requisições e enviam respostas
• Web servers
• Proxies
• Atuam com servidores para o cliente e como
cliente para o servidor
• Desempenha outras funções tais como registros
e bloqueios de acessos, armazenamento em
cache, autenticação e etc.
Prof. Eduardo M. Monks - Redes de Computadores III
17
Protocolo
Recursos
• São quaisquer tipo de arquivo: texto, HTML, binário,
PDF, vídeo (AVI, MPEG, …), Flash, Imagens, Java
Script e etc…
• Isto é possível devido ao MIME (Multipurpose
Internet Mail Extensions)
• O MIME é uma extensão que possibilita a
representação de qualquer tipo de arquivo
• Criado originalmente para permitir anexos em email
• MIME Media Types
(http://www.iana.org/assignments/mediatypes/index.html)
Prof. Eduardo M. Monks - Redes de Computadores III
18
Protocolo
Alguns Métodos HTTP
•
•
•
•
•
GET
• É o método mais comum.
• Normalmente, é utilizado para solicitar ao servidor
que envie um recurso.
POST
• Envia dados do cliente para uma aplicação no
servidor
PUT
• Escreve documentos no servidor, faz o papel inverso
do método GET
• Normalmentre, usado para o envio de arquivos ao
servidor (upload)
DELETE
• Apaga um recurso no servidor
• Requer autenticação.
HEAD
• Semelhante ao método GET, mas o servidor responde
apenas com o cabeçalho
Prof. Eduardo M. Monks - Redes de Computadores III
19
Protocolo
Formato das mensagens
• Requisição
linha de pedido
(comandos GET
, POST,HEAD )
GET /somedir/page.html HTTP/1.0
User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
linhas de Accept-language:fr
cabeçalho
(extra carriage return, line feed)
Carriage return,
line feed
indica fim da mensagem
Prof. Eduardo M. Monks - Redes de Computadores III
20
Protocolo
Formato das mensagens
• Resposta
linha de status
(protocolo
código de status
frase de status)
linhas de
cabeçalho
dados, e.x.,
arquivo html
HTTP/1.0 200 OK
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
data data data data data ...
Prof. Eduardo M. Monks - Redes de Computadores III
21
Protocolo
•
Captura no Wireshark
• Solicitação de um página HTML (1)
• Solicitação de um arquivo (2)
• Envio de dados em um formulário para o servidor (3)
• Requisição usando o HTTPS (4)
Prof. Eduardo M. Monks - Redes de Computadores III
22
Protocolo
HTTPS
•
•
É a forma mais comum de segurança do HTTP
Criado em 1994 pela Netscape Communications Corporation
é suportado pelos mais importantes navegadores e
servidores atuais
• Todas as requisições e respostas de dados HTTP são
criptografadas antes de serem enviadas na rede
• O HTTPS provê segurança na camada de sessão por meio do
SSL (Secure Sockets Layer ) ou TLS (Transport Layer
Security ) que é o padrão atual
• Utiliza a porta 443 e a URL com https://
Prof. Eduardo M. Monks - Redes de Computadores III
23
Protocolo
HTTPS
• Utiliza certificados que fornecem:
• autenticidade para o servidor (o certificado deve ser válido!)
• confidencialidade a comunicação
• integridade aos dados
Prof. Eduardo M. Monks - Redes de Computadores III
24
Protocolo
HTTPS x HTTP
Prof. Eduardo M. Monks - Redes de Computadores III
25
Aplicações
•
•
Clientes e servidores de HTTP existem para a maioria dos
sistemas operacionais.
É o metodo mais utilizado para acesso a informações e a
serviços na Internet atual.
• Versões comerciais, freeware ou de código-fonte aberto:
•
•
Clientes HTTP (Navegadores, Web Browsers)
• Mozilla Firefox
• MS Internet Explorer
• Opera
• Google Chrome
• Apple Safari
• Konqueror
• ...
Servidores HTTP (Servidores de páginas, Web Servers)
• Apache
Fonte:
• MS IIS
http://www.netcraft.com
• Lighttpd
• Nginx
• ...
Prof. Eduardo M. Monks - Redes de Computadores III
26
Aplicações
• Proxy
•
•
•
•
O acesso a um servidor web é feito por meio do servidor
proxy
O proxy funciona como servidor para o cliente que
originou a requisição e como cliente para o servidor de
destino
O endereço do proxy é configurado no cliente (navegador)
Vantagem:
• Possibilita a filtragem de conteúdo
• “Esconde” os hosts internos (só o endereço do proxy
será visível as redes externas)
servidor
cliente
cliente
Prof. Eduardo M. Monks - Redes de Computadores III
Proxy
server
original
servidor
original
27
Aplicações
• Web Caching
•
•
•
armazenamento está “perto” do cliente (ex., na mesma
rede)
menor tempo de resposta
reduz o tráfego gerado
Servidores
originais
Internet
pública
rede
institucional
enlace de
acesso
1.5 Mbps
10 Mbps LAN
cache
institucional
Prof. Eduardo M. Monks - Redes de Computadores III
28
Aplicações
• Proxy/Web Caching
•
•
•
•
O mais comum é o SQUID Proxy Cache (http://www.squidcache.org/)
Disponível para Linux, FreeBSD e até mesmo Windows
(http://squid.acmeconsulting.it/)
Existem soluções comercias tais como: MS ISA Server,
Websense (http://www.websense.com/)
Existem proxies abertos para burlar filtragens e
possibilitar o acesso a Orkut, Twitter, Pornografia,
Jogos e etc.
Prof. Eduardo M. Monks - Redes de Computadores III
29
Segurança
• Ataques mais comuns ao WWW :
• Captura de tráfego sem criptografia
• Usuário e senhas de webmail são os alvos
preferidos
Negação de serviço (Denial of Service)
• Gerar um grande número de requisições, causando
sobrecarga no servidor
http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
• Internet Denial-of-Service Considerations
(http://tools.ietf.org/html/rfc4732)
•
• Exploração de vulnerabilidades nas aplicações
• Falhas nas aplicações dinâmicas que interagem com
banco de dados e com o sistema operacional
• Principalmente, nas aplicações que utilizam a
linguagem PHP
• O problema está no desenvolvedor, não na linguagem!
Prof. Eduardo M. Monks - Redes de Computadores III
30
Referências Bibliográficas
• HTTP (W3C) - http://www.w3.org/Protocols/
• Protocolo Gopher http://en.wikipedia.org/wiki/Gopher_%28protocol
%29
• TLS http://en.wikipedia.org/wiki/Transport_Layer_Sec
urity
• MIME - http://en.wikipedia.org/wiki/MIME
• GOURLEY, David et. al. HTTP: The Definitive
Guide. O´Reilly, 2002
Prof. Eduardo M. Monks - Redes de Computadores III
31
Download

Redes de Computadores I