HTTP HTTP
((HyperText Transfer ProtocolHyperText Transfer Protocol))
Faculdade de Tecnologia SENAC Pelotas/RSFaculdade de Tecnologia SENAC Pelotas/RS
Curso Superior de Tecnologia em Redes de Computadores Curso Superior de Tecnologia em Redes de Computadores
Unidade curricular Redes de Computadores IIIUnidade curricular Redes de Computadores III
Professor Eduardo Maroñas MonksProfessor Eduardo Maroñas Monks
SUMÁRIOSUMÁRIO
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 22
• HistóricoHistórico• FuncionalidadesFuncionalidades• ProtocoloProtocolo• AplicaçõesAplicações• SegurançaSegurança• Referências BibliográficasReferências Bibliográficas
HistóricoHistórico
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 33
• Décadas de 70 e 80Décadas de 70 e 80• A Internet era usada somente para pesquisas A Internet era usada somente para pesquisas
acadêmicasacadêmicas• Basicamente, a rede era usada para acesso remoto, Basicamente, a rede era usada para acesso remoto,
transferência de arquivos e troca de e-mailstransferência de arquivos e troca de e-mails• Final dos anos 80 e início da década de 90Final dos anos 80 e início da década de 90
• Propostas iniciais da arquitetura do WWW (Propostas iniciais da arquitetura do WWW (World World Wide WebWide Web) por Tim Berners-Lee em 1989) por Tim Berners-Lee em 1989
• Sistemas existentes para acesso e procura de Sistemas existentes para acesso e procura de documentos disponíveis na época: Gopher, Archie, documentos disponíveis na época: Gopher, Archie, WAIS (WAIS (Wide Area Information ServersWide Area Information Servers) e outros) e outros
• Todos estes sistemas foram substituídos pelo WWWTodos estes sistemas foram substituídos pelo WWW• Crescimento exponencial do WWW nos anos 90Crescimento exponencial do WWW nos anos 90
• 1991: primeiro navegador Web e servidor de páginas1991: primeiro navegador Web e servidor de páginas• 1993: primeira versão do navegador 1993: primeira versão do navegador MosaicMosaic (Pai do (Pai do
Netscape e avô do Firefox...)Netscape e avô do Firefox...)
Exemplo de uso de serviços com o protocolo GopherExemplo de uso de serviços com o protocolo Gopher
http://www.quux.org:70/Software/Gopher/servers
HistóricoHistórico
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 44
• WWW (WWW (World Wide WebWorld Wide Web))• É uma arquitetura que envolve protocolos, É uma arquitetura que envolve protocolos,
linguagens de apresentação e serviços para acesso linguagens de apresentação e serviços para acesso universal a informações. universal a informações.
• Definição do W3C (Definição do W3C (WWorld Wide Web Consortiumorld Wide Web Consortium) ) para o WWW:para o WWW:• ““O WWW é o universo de informações acessíveis O WWW é o universo de informações acessíveis
pela rede, uma representação concreta do pela rede, uma representação concreta do conhecimento humano”.conhecimento humano”.
• As características do WWW são:As características do WWW são:• HypertextoHypertexto• Interface gráficaInterface gráfica• Dados MultímidiaDados Multímidia• Rapidez na divulgação das informaçõesRapidez na divulgação das informações• Acesso imediato e universal a informaçãoAcesso imediato e universal a informação• Democracia na autoria do conteúdo (Blogs, Democracia na autoria do conteúdo (Blogs,
Wiki...)Wiki...)• Facilidade na procura das informações (Google)Facilidade na procura das informações (Google)
HistóricoHistórico
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 55
• Componentes do WWW (Componentes do WWW (World Wide WebWorld Wide Web))
• Protocolo HTTP (Protocolo HTTP (Hypertext Transfer ProtocolHypertext Transfer Protocol))• Responsável pelas mensagens de requisição e Responsável pelas mensagens de requisição e
resposta entre clientes e servidoresresposta entre clientes e servidores• RFC: RFC: http://www.w3.org/Protocols/rfc2616/rfc2616.html
• ClientesClientes• Responsáveis pela interação do usuário para Responsáveis pela interação do usuário para
acesso aos dados disponibilizadosacesso aos dados disponibilizados
• ServidoresServidores• Responsáveis por disponibilizar os arquivos e por Responsáveis por disponibilizar os arquivos e por
gerar conteúdo dinâmico por meio de linguagens gerar conteúdo dinâmico por meio de linguagens de programaçãode programação
• Linguagem HTML (Hypertext Markup Language)Linguagem HTML (Hypertext Markup Language)• Linguagem interpretada e renderizada nos Linguagem interpretada e renderizada nos
clientes gráficos que possibilita conteúdo clientes gráficos que possibilita conteúdo multimídiamultimídia
HistóricoHistórico
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 66
Evolução do Protocolo HTTPEvolução do Protocolo HTTP
• HTTP/0.9 (HTTP/0.9 (http://www.w3.org/Protocols/HTTP/AsImplemented.html))• Definido em 1991Definido em 1991• Versão inicial (protótipo) com falhas no projeto do Versão inicial (protótipo) com falhas no projeto do
protocoloprotocolo• Suporte somente para o método GETSuporte somente para o método GET• Sem suporte ao MIMESem suporte ao MIME• Projetado para interagir com arquivos HTMLProjetado para interagir com arquivos HTML
• HTTP/1.0 (HTTP/1.0 (http://www.ietf.org/rfc/rfc1945.txt))• Primeira versão amplamente utilizadaPrimeira versão amplamente utilizada• Suporte a objetos multimídia, métodos adicionais e Suporte a objetos multimídia, métodos adicionais e
cabeçalhos HTTPcabeçalhos HTTP• Possibilitou o uso de formulários interativos (métodos Possibilitou o uso de formulários interativos (métodos
POST e PUT)POST e PUT)• Não havia uma especificação formal do protocolo, somente Não havia uma especificação formal do protocolo, somente
melhores práticas para desenvolvê-lo, a RFC 1945 só veio melhores práticas para desenvolvê-lo, a RFC 1945 só veio em 1996!em 1996!
• Uso acadêmico e comercial Uso acadêmico e comercial
HistóricoHistórico
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 77
• HTTP/1.0+ HTTP/1.0+ • Foram “gambiarras” criadas durante a década de 90 por Foram “gambiarras” criadas durante a década de 90 por
desenvolvedores de clientes e servidores de HTTP para desenvolvedores de clientes e servidores de HTTP para melhorar o protocolomelhorar o protocolo
• As melhorias foram extra-oficiais: conexões persistentes, As melhorias foram extra-oficiais: conexões persistentes, suporte a hosts virtuais e conexões a proxiessuporte a hosts virtuais e conexões a proxies
• HTTP/1.1 (HTTP/1.1 (http://www.faqs.org/rfcs/rfc2616.htmlhttp://www.faqs.org/rfcs/rfc2616.html))• Versão atual do protocolo (RFC 2616)Versão atual do protocolo (RFC 2616)• Melhorias no projeto do protocoloMelhorias no projeto do protocolo• Introdução de melhorias em desempenho e otimizações de Introdução de melhorias em desempenho e otimizações de
funcionalidadesfuncionalidades• Suporte a aplicações mais sofisticadasSuporte a aplicações mais sofisticadas
Key Differences between HTTP/1.0 and HTTP/1.1Key Differences between HTTP/1.0 and HTTP/1.1 - - http://www8.org/w8-papers/5c-protocols/key/key.hthttp://www8.org/w8-papers/5c-protocols/key/key.htmlml
FuncionalidadesFuncionalidades
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 88
• URLURL• Sintaxe:Sintaxe:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag><query>#<frag>
• Exemplos:Exemplos:
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
FuncionalidadesFuncionalidades
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 99
• 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
FuncionalidadesFuncionalidades
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1010
• 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
FuncionalidadesFuncionalidades
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1111
• 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
FuncionalidadesFuncionalidades
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1212
• 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
FuncionalidadesFuncionalidades
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1313
• Proxy
FuncionalidadesFuncionalidades
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1414
• Caching
FuncionalidadesFuncionalidades
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1515
• Indexadores (Crawlers)
http://en.wikipedia.org/wiki/List_of_search_engines
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1616
HTTPHTTP (HyperText Transfer Protocol) (HyperText Transfer Protocol)
• Baseado em cliente/servidor Baseado em cliente/servidor • Trabalha na porta Trabalha na porta 80 e 44380 e 443 utilizando o utilizando o
protocolo TCP como transporteprotocolo TCP como transporte• Utiliza mensagens de requisição e Utiliza mensagens de requisição e
resposta para transferência de recursos resposta para transferência de recursos • Mensagem em texto plano (em HTTPS as Mensagem em texto plano (em HTTPS as
mensagens são criptografadas)mensagens são criptografadas)• O protocolo não guarda estado (o acesso O protocolo não guarda estado (o acesso
de uma URL para outra não é mantido)de uma URL para outra não é mantido)• Versão atual é a 1.1 (RFC 2616)Versão atual é a 1.1 (RFC 2616)
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1717
Componentes Componentes
• ClientesClientes• Enviam requisições e recebem respostasEnviam requisições e recebem respostas• Navegadores, Spiders e AgentesNavegadores, Spiders e Agentes
• ServidoresServidores• Recebem requisições e enviam respostasRecebem requisições e enviam respostas• Web serversWeb servers
• ProxiesProxies• Atuam com servidores para o cliente e como Atuam com servidores para o cliente e como
cliente para o servidorcliente para o servidor• Desempenha outras funções tais como Desempenha outras funções tais como
registros e bloqueios de acessos, registros e bloqueios de acessos, armazenamento em cache, autenticação e etc.armazenamento em cache, autenticação e etc.
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1818
RecursosRecursos• São quaisquer tipo de arquivo: texto, HTML, São quaisquer tipo de arquivo: texto, HTML,
binário, PDF, vídeo (AVI, MPEG, …), Flash, binário, PDF, vídeo (AVI, MPEG, …), Flash, Imagens, Java Script e etc…Imagens, Java Script e etc…
• Isto é possível devido ao MIME (Isto é possível devido ao MIME (Multipurpose Multipurpose Internet Mail ExtensionsInternet Mail Extensions) )
• O MIME é uma extensão que possibilita a O MIME é uma extensão que possibilita a representação de qualquer tipo de arquivorepresentação de qualquer tipo de arquivo
• Criado originalmente para permitir anexos em e-Criado originalmente para permitir anexos em e-mailmail
• MIME Media Types (MIME Media Types (http://www.iana.org/assignments/media-types/index.html))
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 1919
Alguns Métodos HTTPAlguns Métodos HTTP
• GETGET• É o método mais comum.É o método mais comum.• Normalmente, é utilizado para solicitar ao servidor Normalmente, é utilizado para solicitar ao servidor
que envie um recurso.que envie um recurso.• POSTPOST
• Envia dados do cliente para uma aplicação no Envia dados do cliente para uma aplicação no servidorservidor
• PUTPUT• Escreve documentos no servidor, faz o papel Escreve documentos no servidor, faz o papel
inverso do método GETinverso do método GET• Normalmentre, usado para o envio de arquivos ao Normalmentre, usado para o envio de arquivos ao
servidor (upload)servidor (upload)• DELETEDELETE
• Apaga um recurso no servidorApaga um recurso no servidor• Requer autenticação.Requer autenticação.
• HEADHEAD• Semelhante ao método GET, mas o servidor Semelhante ao método GET, mas o servidor
responde apenas com o cabeçalhoresponde apenas com o cabeçalho
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2020
Formato das mensagensFormato das mensagens• RequisiçãoRequisição
GET /somedir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr
(extra carriage return, line feed)
linha de pedido(comandos GET, POST,HEAD )
linhas decabeçalho
Carriage return, line feed
indica fim da mensagem
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2121
Formato das mensagensFormato das mensagens• RespostaResposta
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 ...
linha de status(protocolo
código de status frase de status)
linhas decabeçalho
dados, e.x., arquivo html
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2222
• Captura no WiresharkCaptura no Wireshark• Solicitação de um página HTML (1)Solicitação de um página HTML (1)• Solicitação de um arquivo (2)Solicitação de um arquivo (2)• Envio de dados em um formulário para o servidor Envio de dados em um formulário para o servidor
(3)(3)• Requisição usando o HTTPS (4)Requisição usando o HTTPS (4)
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2323
HTTPSHTTPS• É a forma mais comum de segurança do HTTPÉ a forma mais comum de segurança do HTTP• Criado em 1994 pela Criado em 1994 pela Netscape Communications Netscape Communications
CorporationCorporation é suportado pelos mais importantes é suportado pelos mais importantes navegadores e servidores atuaisnavegadores e servidores atuais
• Todas as requisições e respostas de dados HTTP são Todas as requisições e respostas de dados HTTP são criptografadas antes de serem enviadas na redecriptografadas antes de serem enviadas na rede
• O HTTPS provê segurança na camada de sessão por meio O HTTPS provê segurança na camada de sessão por meio do SSL (do SSL (Secure Sockets LayerSecure Sockets Layer ) ou TLS ( ) ou TLS (Transport Layer Transport Layer SecuritySecurity ) ) que é o padrão atualque é o padrão atual
• Utiliza a porta 443 e a URL com https://Utiliza a porta 443 e a URL com https://
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2424
HTTPSHTTPS• Utiliza Utiliza certificadoscertificados que fornecem: que fornecem:• autenticidade para o servidor (autenticidade para o servidor (o certificado deve ser o certificado deve ser
válido!válido!))• confidencialidade a comunicaçãoconfidencialidade a comunicação• integridade aos dadosintegridade aos dados
ProtocoloProtocolo
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2525
HTTPS x HTTPHTTPS x HTTP
AplicaçõesAplicações
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2626
• Clientes e servidores de HTTP existem para a maioria Clientes e servidores de HTTP existem para a maioria dos sistemas operacionais. dos sistemas operacionais.
• É o metodo mais utilizado para acesso a informações e a É o metodo mais utilizado para acesso a informações e a serviços na Internet atual. serviços na Internet atual.
• Versões comerciais, freeware ou de código-fonte aberto: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• MS IIS• Lighttpd• Nginx• ...
Fonte: Fonte: http://www.netcraft.comhttp://www.netcraft.com
AplicaçõesAplicações
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2727
• ProxyProxy • O acesso a um servidor web é feito por meio do servidor O acesso a um servidor web é feito por meio do servidor
proxyproxy• O proxy funciona como servidor para o cliente que O proxy funciona como servidor para o cliente que
originou a requisição e como cliente para o servidor de originou a requisição e como cliente para o servidor de destinodestino
• O endereço do proxy é configurado no cliente O endereço do proxy é configurado no cliente (navegador) (navegador)
• Vantagem:Vantagem:• Possibilita a filtragem de conteúdoPossibilita a filtragem de conteúdo• ““Esconde” os hosts internos (só o endereço do proxy Esconde” os hosts internos (só o endereço do proxy
será visível as redes externas)será visível as redes externas)
cliente
Proxyserver
cliente
http request
http re
quest
http response
http re
sponse
http request
http response
servidororiginal
servidororiginal
AplicaçõesAplicações
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2828
• Web CachingWeb Caching • armazenamento está “perto” do cliente (ex., na armazenamento está “perto” do cliente (ex., na
mesma rede)mesma rede)• menor tempo de respostamenor tempo de resposta• reduz o tráfego gerado reduz o tráfego gerado Servidores
originais Internetpública
redeinstitucional 10 Mbps LAN
enlace de acesso1.5 Mbps
cache institucional
AplicaçõesAplicações
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 2929
• Proxy/Web CachingProxy/Web Caching • O mais comum é o SQUID Proxy Cache (O mais comum é o SQUID Proxy Cache (
http://www.squid-cache.org/))• Disponível para Linux, FreeBSD e até mesmo Disponível para Linux, FreeBSD e até mesmo
Windows (Windows (http://squid.acmeconsulting.it/))• Existem soluções comercias tais como: MS ISA Existem soluções comercias tais como: MS ISA
ServerServer, , Websense (Websense (http://www.websense.com/))• Existem proxies abertos para burlar filtragens e Existem proxies abertos para burlar filtragens e
possibilitar o acesso a Orkut, Twitter, Pornografia, possibilitar o acesso a Orkut, Twitter, Pornografia, Jogos e etc. Jogos e etc.
SegurançaSegurança
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 3030
• Ataques mais comuns ao WWW :Ataques mais comuns ao WWW :• Captura de tráfego sem criptografiaCaptura de tráfego sem criptografia
• Usuário e senhas de webmail são os alvos Usuário e senhas de webmail são os alvos preferidospreferidos
• Negação de serviço (Negação de serviço (Denial of ServiceDenial of Service))• Gerar um grande número de requisições, causando Gerar um grande número de requisições, causando
sobrecarga no servidor sobrecarga no servidor • Internet Denial-of-Service Considerations (Internet Denial-of-Service Considerations (
http://tools.ietf.org/html/rfc4732))
• Exploração de vulnerabilidades nas aplicaçõesExploração de vulnerabilidades nas aplicações• Falhas nas aplicações dinâmicas que interagem com Falhas nas aplicações dinâmicas que interagem com
banco de dados e com o sistema operacionalbanco de dados e com o sistema operacional• Principalmente, nas aplicações que utilizam a Principalmente, nas aplicações que utilizam a
linguagem PHPlinguagem PHP• O problema está no desenvolvedor, não na O problema está no desenvolvedor, não na
linguagem!linguagem!
http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
Referências BibliográficasReferências Bibliográficas
Prof. Eduardo M. Monks - Redes de Computadores III Prof. Eduardo M. Monks - Redes de Computadores III 3131
• HTTP (W3C) - http://www.w3.org/Protocols/HTTP (W3C) - http://www.w3.org/Protocols/• Protocolo Gopher - Protocolo Gopher -
http://en.wikipedia.org/wiki/Gopher_http://en.wikipedia.org/wiki/Gopher_%28protocol%29%28protocol%29
• TLS - TLS - http://en.wikipedia.org/wiki/Transport_Layer_Shttp://en.wikipedia.org/wiki/Transport_Layer_Securityecurity
• MIME - http://en.wikipedia.org/wiki/MIMEMIME - http://en.wikipedia.org/wiki/MIME• GOURLEY, David et. al. HTTP: The Definitive GOURLEY, David et. al. HTTP: The Definitive
Guide. O´Reilly, 2002Guide. O´Reilly, 2002