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