310 likes | 430 Views
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
E N D
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 iniciais da arquitetura do WWW (World Wide Web) por Tim Berners-Lee em 1989 • 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...) Exemplo de uso de serviços com o protocolo Gopher http://www.quux.org:70/Software/Gopher/servers 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: • <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag> • Exemplos: http://www.joes-hardware.com:80/index.html http://161.58.228.45:80/index.html ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu http://joe:joespasswd@www.joes-hardware.com/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 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 • 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 e-mail • MIME Media Types (http://www.iana.org/assignments/media-types/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
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 Accept-language:fr (extra carriage return, line feed) linhas de cabeçalho Carriage return, line feed indica fim da mensagem Protocolo • Formato das mensagens • Requisição Prof. Eduardo M. Monks - Redes de Computadores III 20
linha de status (protocolo código de status frase de status) 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 ... linhas de cabeçalho dados, e.x., arquivo html Protocolo • Formato das mensagens • Resposta Prof. Eduardo M. Monks - Redes de Computadores III 21
1 4 2 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) 3 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
Fonte: http://www.netcraft.com 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 • MS IIS • Lighttpd • Nginx • ... Prof. Eduardo M. Monks - Redes de Computadores III 26
servidor original Proxy server http request http request cliente http response http response http request http response cliente servidor original 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) Prof. Eduardo M. Monks - Redes de Computadores III 27
Servidores originais Internet pública enlace de acesso 1.5 Mbps rede institucional 10 Mbps LAN cache institucional Aplicações • Web Caching • armazenamento está “perto” do cliente (ex., na mesma rede) • menor tempo de resposta • reduz o tráfego gerado Prof. Eduardo M. Monks - Redes de Computadores III 28
Aplicações • Proxy/Web Caching • O mais comum é o SQUID Proxy Cache (http://www.squid-cache.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 • 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! http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project 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_Security • 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