Aulas Práticas. Implementação de um Proxy HTTP. O que é um proxy?



Documentos relacionados
Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

Universidade Federal de Mato Grosso

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

HyperText Transfer Protocol (HTTP)

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação para Internet Flávio de Oliveira Silva, M.Sc.

rumo ao HTTP 2.0 o que vem por aí e o que você pode utilizar já com SPDY

APLICAÇÕES E SERVIÇOS WEB

1.264 Lição 11. Fundamentos da Web

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

O protocolo HTTP. O que é o protocolo HTTP?

Desenvolvimento Web Histórico da Internet e Protocolos

Comunicação entre Processos

Desenvolvimento Web Protocolos da Internet

INTRODUÇÃO ÀS REDES DE COMPUTADORES

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

Rede de Computadores (REC)

Universidade da Beira Interior

O protocolo HTTP. Você aprenderá: O que é e como funciona o protocolo HTTP. Quais são as partes de um pedido HTTP.

Redes de Computadores

Redes de Computadores Grupo de Redes de Computadores

Aula 14 Serviços Internet (Servidor Web Apache)

REDES DE COMPUTADORES. Prof. Evandro Cantú

Teia de alcance mundial (World Wide Web WWW) Web composta de

Redes de Computadores e a Internet

Redes de Computadores

Alan Menk Santos Redes de Computadores e Telecomunicações. Camada de Aplicação. Camada de Aplicação

ALCY JOSÉ VIEIRA NETO ALEXANDRE SOHN CINTIA CAVICHIOLO PROTOCOLO HTTP

Universidade Federal do Rio Grande do Norte

6127. Redes comunicação de dados. 2014/2015. Acesso à Internet.

A Camada de Aplicação

OURO MODERNO Web Designer APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

PTC Aula A Web e o HTTP. (Kurose, p ) (Peterson, p ) 24/03/2017

Mônica Oliveira Primo de Lima Edervan Soares Oliveira TRABALHO SOBRE PROTOCOLO HTTP

1º Seminário de Software Livre Tchelinux Software Livre: leve adiante esta idéia. Soluções de Web Caching e Web Acceleration

Componentes de um sistema de firewall - II. Segurança de redes

Capítulo 7. Hyper Text Transfer Protocol (HTTP). Serviço Apache. - Protocolo HTTP - Sessão HTTP - Configuração do serviço Apache

Redes de Computadores I

Aula 1 Cleverton Hentz


CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Hyper Text Transfer Protocol (HTTP) ADI HTTP 1/18

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

REDES DE COMPUTADORES I 2007/2008 LEIC - Tagus-Park TPC Nº 2. Avaliação sumária da matéria do Capítulo 2

FIREWALL. Prof. Fabio de Jesus Souza. Professor Fabio Souza

Práticas de Desenvolvimento de Software

O espaço de nomes DNS Registros de recursos de domínio Servidores de nome

Breve introdução a User Dir e Senhas no Apache Uma abordagem prática (aka crash course on User Dir and Directory Authentication on Apache)

FPROT HTTP(s), FTP, DHCP, SQUID e SAMBA. Aula 1 SENAC TI Fernando Costa

1.1 Porque um nível de aplicação proxy?

Criação de páginas web

Camada de Aplicação. Prof. Eduardo

Redes de Computadores Camada de Aplicação. Prof. MSc. Hugo Souza

Sistemas Distribuídos na Web. Pedro Ferreira DI - FCUL

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

HTML. Sessão 1 HTML. Cliente: browser (IE, por exemplo) Servidor: IIS (Internet Information Server), Apache, WebSphere,...

Redes de Computadores I. Sockets e Arquitetura HTTP

TECNOLOGIA WEB. Principais Protocolos na Internet Aula 2. Profa. Rosemary Melo

2Arquitetura cliente-servidor

Firewall. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes. Campus Cachoeiro Curso Técnico em Informática

Cap 03 - Camada de Aplicação Internet (Kurose)

INTRODUÇÃO ÀS REDES DE COMPUTADORES

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

Protocolo HTTP. Palavras-chave: Navegador, aplicativos, web, cliente, servidor.

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Permite o acesso remoto a um computador;

Introdução. Página web. Tipos de documentos web. HyperText Transfer Protocol. Rd Redes de Computadores. Aula 27

Comunicando através da rede

1 Redes de Computadores - TCP/IP Luiz Arthur

Introdução à Camada de Aplicação. Prof. Eduardo

TECNOLOGIA WEB Aula 1 Evolução da Internet Profa. Rosemary Melo

Web das Coisas WoT. Software: APIs para IoT. Prof. João Bosco Teixeira Junior

Redes de Computadores Aula 3

WWW - World Wide Web

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Capítulo 2. Camada de aplicação

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama

Redes de Dados e Comunicações. Prof.: Fernando Ascani

Segurança de Redes. Firewall. Filipe Raulino

Internet. O que é a Internet?

Transcrição:

Redes de Computadores Aulas Práticas Implementação de um Proxy HTTP Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 1 O que é um proxy? Genericamente é um processo que actua funcionalmente como intermediário entre dois sistemas No modelo cliente servidor intermedeia a interacção entre o cliente (executando num computador) e o servidor (executando noutro computador) O proxy pode executar por sua vez num terceiro computador Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 2 1

Porque se usam proxies? Pode não ser possível que os dois sistemas intermediados comuniquem diretamente Permite controlar o tráfego e informação (conteúdos) trocados, num ponto central de controlo para monitoração e análise de tráfego Permite melhorar o desempenho, se Vver funcionalidade acrescida de um sistema de caching Proxy c/ caching Permite filtrar selevvamete a informação que o atravessa ou implementar formas de controlo de acesso em relação ao tráfego que o atravessa complementarmente ao controlo de origem ou desvno Ex., applica2on proxies como funcionalidade de sistemas firewall, complementando filtragem ao nível aplicação à filtragem ao nível transporte e ao nível rede Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 3 Proxies vs. Protocolos No caso mais simples e geral, cada proxy intermedeia especificamente um dado protocolo Ex., HTTP, FTP,... ou outro protocolo do nível aplicação na pilha TCP/IP Embora se possa pensar em proxies que actuam a outros níveis (ex., proxy genérico para TCP, etc.) ou proxies com suporte mulv protocolo Cliente (browser) envia os pedidos e recebe as respostas do proxy HTTP O proxy sabe interpretar os pedidos, redirige os pedidos para os servidores HTTP finais, obtém as respostas que sabe interpretar e devolve essas respostas ao cliente É visto pelo cliente como se fosse um servidor HTTP a quem se enviam pedidos (URLs) em geral É visto por um servidor final como se fosse um cliente HTTP O proxy HTTP (como o que se pretende realizar e testar) implementará a intermediação do protocolo HTTP (com servidores HTTP/1.0) Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 4 2

UVlização de Proxies em HTTP Cliente (Browser) HOST PROXY Intermediação Servidor HTTP (WEB) Ex., Firefix, IE, Safari, Chrome, Opera, Android browser... Controlo Caching Filtragem Ex., Apache, IIS, GWS, nginex, Resin, lighthkpd, SJSWS,... HOST Cliente (só envia pedidos via um dado PROXY) HOST Servidor (só aceita pedidos que venham de um dado PROXY) Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 5 UVlização de Proxies em HTTP Cliente (Browser) HOST PROXY Intermediação Servidor HTTP (WEB) Controlo Caching Filtragem Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 6 3

UVlização de Proxies em HTTP Cliente (Browser) PROXY PROXY Servidor WEB Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 7 Desenvolvimento de um proxy HTTP para o protocolo HTTP/1.0 Pretende se implementar um proxy capaz de suportar o protocolo HTTP/1.0 Conexões não persistentes A ideia é parvr da implementação que já anteriormente foi feita para suportar o CHAT (ChatHkpServer) Código auxiliar fornecido para reuvlização: HTTPUVliVes Url (processamento/parsing de URLs e suas partes consvtuintes) Ver tb o exemplo de parsing de URLs ou pedidos usando URLs Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 8 4

HTTP Mar/1989, Tim Berns Lee, "InformaVon Management: A Proposal, CERN hkp://www.w3.org/history/1989/proposal.html Out/1990 "WorldWideWeb" coined hkp://info.cern.ch/nextbrowser.html Out/1994 Fundado o W3C Mai/1996 RFC 1945 (HTTP 1.0) Jun/1999 RFC 2616 (HTTP 1.1) Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 9 HTTP 1.0 Web Client Connect: Request Web Server GET / HTTP/1.0 Host: www.yahoo.com CRLF Response: Close HTTP/1.0 200 OK Date: Tue, 16 Feb 2010 19:21:24 GMT Content-Type: text/html; CRLF <html><head><title>yahoo!</title> Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 10 5

HTTP 1.0 Web Client Connect: Request Web Server Request Line Request Header Request Delimiter GET / HTTP/1.0 Host: www.yahoo.com CRLF Response: Close Response Status Response Header Response Delimiter Response Body HTTP/1.0 200 OK Date: Tue, 16 Feb 2010 19:21:24 GMT Content-Type: text/html; CRLF <html><head><title>yahoo!</title> Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 11 HTTP 1.1 vs. 1.0 Métodos adicionais (PUT, DELETE, TRACE, CONNECT + GET, HEAD, POST) Cabeçalhos adicionais (Headers) Codificação de conteúdos transferidos (chunk encoding / MIME types) Conexões persistentes (content length muito importante) Pipelining de pedidos Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 12 6

HTTP 1.1 (exemplo de um pedido de um browser) GET / HTTP/1.1 Host: localhost:80 User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/ 534.50.2 (KHTML, like Gecko) Version/5.0.6 Safari/533.22.3 Accept: text/html,applicavon/xhtml+xml,applicavon/xml;q=0.9,*/*;q=0.8 Accept Language: en us Accept Encoding: gzip, deflate Connec/on: keep alive CRLF Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 13 HTTP 1.1 (exemplo de pedido de um browser via um proxy) GET h9p://asc.di.fct.unl.pt/ HTTP/1.1 Host: asc.di.fct.unl.pt User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.50.2 (KHTML, like Gecko) Version/5.0.6 Safari/533.22.3 Accept: text/html,applicavon/xhtml+xml,applicavon/xml;q=0.9,*/*;q=0.8 Accept Language: en us Accept Encoding: gzip, deflate Cookie: utma=148045474.1196602131.1317253730.1334621895.1334690328.83; utmc=148045474; utmz=148045474.1329257742.35.2.utmcsr=asc.di.fct.unl.pt utmccn=(referral) utmcmd=referral utmcct=/mst/menu.html; utma=95942283.1923607104.1317309834.1334621879.1334690384.18; utmc=95942283; utmz=95942283.1334690384.18.4.utmcsr=di.fct.unl.pt utmccn=(referral) utmcmd=referral utmcct=/; _saml_idp=ahr0chm6ly9pzhauzmn0lnvubc5wdc9pzhavc2hpymjvbgv0aa %3D%3D Pragma: no cache Connec/on: keep alive Proxy Connec/on: keep alive CRLF Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 14 7

Aspectos de implementação Deve suportar a passagem do porto onde atende os clientes passando como parâmetro java proxy <port>, ex., java proxy 8080 A implementação deve suportar inicialmente o comando GET e não necessita de ser concorrente Ex., para outros pedidos, poderá retornar Not Implemented, excepção 501 Posteriormente, poderá acrescentar suporte para os comandos HEAD, POST e PUT, por exemplo Pelas razões apresentadas, deve seguir uma abordagem em que todos os pedidos que sejam feito em HTTP/1.1 sejam aceites, mas sejam convervdos para pedidos HTTP/1.0 Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 15 Gestão de pedidos, erros e excepções Pedido!= GET: Not Implemented (501) Unparseable request: Bad Request (400) Parsing usando as ferramentas auxiliares dadas Postel s law: Be liberal in what you accept, and conserva6ve in what you send convert HTTP 1.1 request to HTTP 1.0 convert \r to \r\n etc... Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 16 8

Conversão HTTP/1.1 para HTTP/1.0 Para suportar esta conversão: SubsVtuir a versão HTTP 1.1 por HTTP 1.0 nos pedidos SubsVtuir o URL pelo caminho completo do recurso Ex.: Browser Proxy GET hkp://www.google.com/index.html HTTP/1.1 Proxy Servidor final (www.google.com) GET /index.html HTTP/1.0 Host: www.google.com:80 Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 17 Outros aspectos de implementação Para garanvr mais compavbilidade, o proxy deve passar sempre todos os cabeçalhos HTTP recebidos do cliente para o servidor final (e vice versa) de modo a garanvr que todas as páginas sejam vistas exactamente da mesma forma como se o cliente esvvesse a comunicar com o servidor final Mas o proxy vai ter que filtrar (não passando) os cabeçalhos específicos que digam respeito à versão HTTP/1.1 Ex.: Connec/on:... Proxy Connec/on:... Keep Alive:... A resposta passada ao browser pode ser passada sem qualquer tratamento Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 18 9

Para testar Usar os browsers e diferentes servidores para verificar a generalidade do proxy implementado Redirigir o proxy (configuração do browser) para ensaiar a implementação Mais possibilidades: Telnet to your proxy and issue a request >./proxy 5000 > telnet localhost 5000 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. GET http://www.google.com/ HTTP/1.0 (HTTP response...) Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 19 Aspectos a ter em conta quando esvver a ensaiar o seu proxy Debugging no proxy (controlo de pedidos browser servidor e respostas servidor browser) Ver exemplos da aula právca Alguns sites (servidores web) não funcionam quando o proxy não implementa as instruções dos métodos PUT e POST Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 20 10

Documentação complementar Ver materiais (aula právca 6) Ter em conta a matéria teórica relavva ao protocolo HTTP O livro base da cadeira apresenta informação de detalhe sobre o protocolo HTTP no Cap. 3 RFC 1945: normalização do protocolo HTTP versão 1.0, contendo a sua especificação minuciosamente documentada Google, Wikipedia,... É muito importante fazer, testar, ensaiar, pravcar o funcionamento do protocolo HTTP e proxy a implementar Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 21 11