Professional Documents
Culture Documents
REDES DE COMPUTADORES
Anotaes de Aula e Slides
8a. Edio - 2009
~2~
Camada de Aplicao
http://adriano.acmesecurity.org/redes
Prefcio 2009
Este o material didtico contendo a coleo de slides e notas de aula do Curso de Redes de Computadores para o primeiro semestre de 2009, na UNESP Universidade Estadual Paulista, Campus de So Jos do Rio Preto, sob responsabilidade do Professor Adriano Mauro Cansian. Este material NO substitui o livro texto adotado no curso, devendo ser usado de modo a complement-lo, e em conjunto com outras referncias recomendadas. A principal funo destas notas de aula facilitar a realizao das anotaes dos tpicos mais importantes discutidos em sala de aula, agilizando assim o andamento do curso para os alunos.A primeira a verso foi utilizada no primeiro semestre de 1998. Esta a 8 . Edio - 2009, com aprimoramentos, novos tpicos e abordagens atualizadas Estas notas de aula podem diferir ligeiramente do material usado pelo professor durante a aula em sala. Isso porque o professor muitas vezes acaba inserindo outros materiais de ltima hora, para melhorar a qualidade e atualizar o material, visand sempre a melhor expresso dos temas aos alunos. Portanto, fortemente recomendvel que os alunos tenham este material de aula em mos durante a aula, de forma a fazer anotaes, inseres e correes conforme necessrio. Este material tem finalidade meramente educacional e totalmente GRATUITO. Estas notas de aula podem conter figuras ou textos extrados de outras fontes, as quais, quando ocorrerem, sero devidamente citadas. Os direitos autorais dos textos citados so de propriedade de seus detentores. Esta no uma obra comercial. A citao ou uso de material de outros autores, quando ocorrer, tem finalidade meramente didtica. Nem o autor, nem a UNESP, se responsabilizam por quaisquer danos diretos ou indiretos que o uso deste material possa eventualmente causar. Este material pode ser copiado livremente, desde que citadas todas as fontes, e respeitados os detentores dos direitos autorais, e desde que o material seja distribudo por inteiro e no em partes, inclusive com os prefcios. A referncia a qualquer produto comercial especfico, marca, modelo, estabelecimento comercial, processo ou servio, atravs de nome comercial, marca registrada, nome de fabricante, fornecedor, ou nome de empresa, necessariamente NO constitui ou insinua seu endosso, recomendao, ou favorecimento por parte da UNESP ou do autor. A UNESP ou o autor no endossam ou recomendam marcas, produtos, estabelecimentos comerciais, servios ou fornecedores de quaisquer espcies, em nenhuma hiptese. As eventuais marcas e patentes mencionadas so de propriedade exclusiva dos detentores originais dos seus direitos e, quando citadas, aparecem meramente em carter informativo, para auxiliar os participantes do curso, numa base de boa-f pblica. Os participantes ou outros interessados devem utilizar estas informaes por sua conta e risco, e estarem cientes desta notificao. Este material didtico no se trata de uma publicao oficial da UNESP. Seu contedo no foi examinado ou editado por esta instituio. As opinies refletem a posio do autor. So Jos do Rio Preto, SP - 24 de maro de 2009. Adriano Mauro Cansian
ii
Crditos
Estes slides para notas de aula so, em sua grande parte, baseadas nos livros textos adotados para o curso: Computer Networking: A Top-Down Approach Featuring the Internet James F. Kurose & Keith W. Ross (3a. Edio), Editora Addison Wesley Longman, e Computer Networks, 3th Edition, de Andrew S. Tanenbaum PrenticeHall (ISBN 0-13-349945-6) e em sua traduo Redes de Computadores Terceira Edio, da Editora Campus (ISBN 8535201572). Copyright (c) ADRIANO MAURO CANSIAN. dada permisso para copiar, distribuir e/ou modificar este documento sob os termos da Licena de Documentao Livre GNU, Verso 1.1 ou qualquer verso posterior publicada pela FREE SOFTWARE FOUNDATION em http://www.gnu.org/licenses/licenses.html, SEM Sees Invariantes, com os Textos da Capa da Frente sendo Curso de Redes de Computadores Prof. Adriano Mauro Cansian, e com os textos da quarta-capa sendo as pginas numeradas de ii at iv deste documento.
Contato: Adriano Mauro Cansian Professor Assistente Doutor adriano@acmesecurity.org UNESP - Universidade Estadual Paulista Campus de So Jos do Rio Preto Depto. de Cincia da Computao e Estatstica Laboratrio ACME! de Pesquisa em Segurana de Computadores e Redes Endereo: R. Cristvo Colombo, 2265 - Jd. Nazareth 15055-000 * So Jos do Rio Preto, SP. Tel. (17) 3221-2475 (laboratrio) / 3221-2201 (secretaria) http://adriano.acmesecurity.org Chave PGP: Adriano Mauro Cansian <adriano@acmesecurity.org> Key ID: 0x3893CD2B Key Type: DH/DSS Key Fingerprint: C499 85ED 355E 774E 1709 524A B834 B139 3893 CD2B
iii
iv
Captulo 2
conceituais e de http implementao de ftp protocolos de aplicao em smtp redes pop Paradigma cliente servidor dns Modelos de servio ...a programao de Aprender sobre protocolos aplicaes de rede. atravs do estudo de Programao usando sockets protocolos populares do nvel da aplicao
Captulo 2
Conceitos
Clientes, servidores, processos, sockets e outros bichos
Cliente
Servidor
aplicao transporte rede enlace fsica aplicao transporte rede enlace fsica
Cliente
Captulo 2
Protocolos de aplicao
Protocolos da camada de aplicao:
No so a aplicao.
So APENAS uma parte da aplicao. Define mensagens trocadas por aplicaes, e aes as tomadas em sua resposta. Usam servios providos por protocolos de camadas inferiores.
Os processos em dois sistemas de extremidade diferentes comunicam-se entre si, trocando mensagens atravs da rede de computadores.
Um processo de emisso cria e emite mensagens na rede; um processo de recepo recebe estas mensagens
As regras.
Captulo 2
Servidor
Um agente de usurio
se comunicam usando comunicao entre processos (interprocess comunnication), definida pelo sistema operacional (SO).
Dois processos em hosts
WWW: browser. Correio: leitor/compositor de mensagens Streaming audio/video: tocador (player) de mdia
Captulo 2
Paradigma cliente-servidor
Aplicao de rede tpica tem duas partes: cliente e servidor
aplicao transporte rede enlace fsica
pedido
resposta
aplicao transporte rede enlace fsica
de transporte. Socket (= tomada) : API da Internet Dois processos se comunicam enviando dados para um socket , ou lendo dados de um socket.
voltaremos mais tarde a este assunto.
10
Captulo 2
processo:
Um processo emite e recebe mensagens da rede, atravs de seus sockets. Quando um processo quer emitir uma mensagem a um outro processo em um outro host, empurra a mensagem para fora de sua porta.
O processo supe que h um infra-estrutura de transporte no outro lado da porta, a qual transportar a mensagem at a porta do processo do destino.
11
12
Captulo 2
Por enquanto: o IP ADDRESS um valor de 32-bits que identifica unicamente o sistema de extremidade. Mais precisamente:
identifica unicamente a interface (placa) que conecta esse host Internet. Ex. 200.145.9.9
receptor determine para qual processo deve ser entregue a mensagem. Exemplo: Porta 80/TCP.
Estuda-se os servios fornecidos pelos protocolos disponveis do transporte, e escolhe-se o protocolo com os servios que melhor se adaptem s necessidades de sua aplicao.
14
Captulo 2
Temporizao:
Algumas aplicaes (por exemplo udio) podem tolerar algumas perdas. Outras (por exemplo, transferncia de arquivos, telnet) exigem transferncia 100% confivel.
Algumas aplicaes (por exemplo, telefonia em Internet, jogos interativos) requerem baixo retardo para serem viveis.
Largura de banda:
Algumas aplicaes (por exemplo , multimdia) requerem quantia mnima de banda para serem viveis. Outras aplicaes (elsticas) conseguem usar qualquer quantia de banda disponvel.
15
Aplicao transferncia de arqs correio documentos WWW udio/vdeo de tempo real udio/vdeo gravado jogos interativos apls financeiras
Perdas sem perdas sem perdas sem perdas tolerante tolerante tolerante sem perdas
Banda elstica elstica elstica udio: 5Kb-1Mb vdeo:10Kb-5Mb como anterior > alguns Kbps elstica
16
Captulo 2
Servio UDP:
Transferncia de dados no confivel entre processos estabelecimento exigido entre remetente e receptor. cliente e servidor. No prov: estabelecimento Transporte confivel entre da conexo, confiabilidade, processos emissor e receptor. controle de fluxo, controle de Controle de fluxo: emissor no congestionamento, garantias vai afogar receptor. temporais ou de banda Controle de congestionamento: mnima. estrangular emissor quando a rede carregada. Pergunta-se: Qual o interesse No oferece: garantias temporais em ter um UDP? ou de banda mnima (QoS).
17
18
Captulo 2
19
WWW
Pgina WWW: Consiste de objetos Endereada por um URL Universal Resource Locator. Quase todas as pginas Agente de usurio para
adriano.acmesecurity.org/themes/noprob/logo_cnpq.png
20
10
Captulo 2
PC executa Explorer
cliente: browser que solicita, recebe (visualiza) objetos WWW. servidor: servidor WWW envia objetos em resposta a pedidos. http1.0: RFC 1945 http1.1: RFC 2068
id ed
oh
ttp
21
Nota
Protocolos que mantm estado so complexos! O histrico passado (estado) tem que ser mantido. Demanda recursos maiores. Statefull
22
11
Captulo 2
Exemplo de http
Supomos que usurio digita a URL www.unesp.br/index.html
(Ex: contm texto, referncias a 10 imagens jpeg)
tempo
23
24
12
Captulo 2
servidor analisa pedido, responde, analisa novo pedido, etc... Cliente envia pedidos para todos objetos referenciados, assim que recebe o HTML base .
partida lenta.
conexo estabelecida, recupera o objeto (index.html) de seu armazenamento, encapsula o objeto em uma mensagem HTTP de resposta, e emite a mensagem de resposta ao cliente atravs do socket.
O servidor diz ao cliente para fechar a conexo TCP. O cliente recebe a mensagem de resposta. A conexo TCP termina. A
mensagem indica que o objeto encapsulado um arquivo HTML. O cliente extrai o arquivo da mensagem de resposta, analisa, e encontra referncias a 10 objetos do JPEG.
As primeiras quatro etapas so repetidas ento para cada um dos
26
13
Captulo 2
Dois browsers diferentes podem interpretar (isto , mostrar ao usurio) um webpage de maneiras um diferentes.
O HTTP no define como uma webpage interpretada por um cliente. As especificaes do HTTP (RFC1945 e RFC2616) definem somente o protocolo de comunicao entre o programa HTTP do cliente e o programa HTTP do servidor.
fechada depois que o servidor envia o objeto: a conexo no persiste para outros objetos.
Cada conexo TCP transporta exatamente uma mensagem de
pedido e uma mensagem de resposta. No nosso exemplo, quando um usurio requisita uma pgina, 11 conexes TCP so geradas.
(discutir conexes paralelas)
27
de ida-e-volta.
RTT inclui os atrasos de propagao, de enfileiramento e de
TCP ao servidor, o servidor reconhece e responde com uma mensagem. Finalmente, o cliente confirma de volta ao servidor.
28
14
Captulo 2
three-way handshake.
Aps ter terminado as primeiras duas partes do handshake, o cliente emite a mensagem de requisio HTTP na conexo TCP, e o TCP agrega a ltima confirmao (a terceira parte do three-way handshake) na mensagem do pedido. Uma vez a mensagem do pedido chega no usurio, o usurio emite o arquivo HTML na conexo do TCP.
Esta interao HTTP request-response gasta outro RTT. Assim, o tempo de resposta total dois RTTs mais o
29
um RTT para estabelecer a conexo TCP, e um RTT para solicitar e receber um objeto.
cliente e servidor podem ser emitidos na mesma conexo. as 10 imagens) pode ser emitido sobre uma nica conexo persistente do TCP.
30
15
Captulo 2
Sem pipelining: o cliente emite um pedido novo somente quando a resposta precedente foi recebida. Com pipelining: o cliente emite um pedido assim que encontrar uma referncia.
o default para HTTP/1.1. Somente um RTT para todos os objetos solicitados.
31
16
Captulo 2
33
34
17
Captulo 2
35
Sucesso. Objeto pedido segue mais adiante nesta mensagem. Objeto pedido mudou de lugar, nova localizao especificado mais adiante nesta mensagem (Location:) Mensagem de pedido no entendida pelo servidor. Documento pedido no se encontra neste servidor. Verso de http do pedido no aceita por este servidor.
36
18
Captulo 2
informao do cliente ao servidor. HTTP permite enviar formulrios ao servidor. Resposta enviada como pgina HTML dinmica.
scripts CGI (programas que executam no servidor WWW) CGI - Common Gateway Interface scripts CGI escondem acesso a diferentes servios servidor WWW atua como gateway universal
cliente WWW
servidor WWW
Sistema de informao
38
19
Captulo 2
servidor
msg de pedido http comum 401: authorization req. WWW authenticate: msg de pedido http comum + Authorization:line msg de resposta http comum
senha.
authorization: linha de
cabealho no pedido. Se no for apresentada autorizao, servidor nega accesso, e coloca no cabealho da resposta
WWW authenticate:
Browser guarda nome e senha para evitar que sejam pedidos ao usurio a cada acesso.
tempo
cliente
resposta http comum+
servidor
Set-cookie: # Ao especfica msg de resposta http comum do cookie cookie: # Ao especfica msg de resposta http comum do cookie cookie: #
40
apresentado com a info guardada no servidor. Autenticao. Lembrando preferncias do usurio, opes anteriores, etc
20
Captulo 2
servidor
objeto no modificado
cliente j tem (no cache) verso atual. Cliente: especifica data da cpia no cache no pedido http
If-modified-since: <date>
Servidor: resposta no contm
resposta http
HTTP/1.0 304 Not Modified
resposta http
HTTP/1.1 200 OK
objeto modificado
<data>
41
acessos WWW via procurador (proxy). Cliente envia todos pedidos http ao procurador.
cliente
ped ido
Servidor de origem
Se objeto est no cache do procurador, este o devolve imediatamente na resposta http. Seno, solicita objeto do servidor de origem, armazena e depois devolve resposta http ao cliente.
Servidor proxy
p
id ed
oh
ttp
ped
cliente
Servidor de origem
42
21
Captulo 2
Servidores de origem
Tempo de resposta
menor: cache mais prximo do cliente Diminui trfego aos servidores distantes,
Muitas vezes o gargalo o enlace (link) que liga a rede da instituio ou do provedor at a Internet.
cache da instituio
43
usurio na estao
cliente: lado que inicia transferncia (pode ser de ou para o sistema remoto) servidor: hospedeiro remoto FTP - File Transfer Protocol: definido pelo RFC 959 Servidor FTP: porta 21
44
22
Captulo 2
So abertas duas
servidor FTP
45
23
Captulo 2
(l) arquivo remoto STOR arquivo armazena (escreve) arquivo no host remoto.
para http). 331 Username OK, password required 125 data connection already open; transfer starting 425 Cant open data connection 452 Error writing file
47
Correio Eletrnico
de Trs grandes componentes: usurio servidor Agentes de usurio: Mail de correio User Agent - MUA. SMTP Agente de transporte: Servidores de correio Mail SMTP Transport Agent - MTA. SMTP Protocolo de correio: servidor Simple Mail Transfer de correio Protocol - SMTP. agente de usurio agente
servidor de correio
agente de usurio
agente de usurio
agente de usurio
48
24
Captulo 2
Correio Eletrnico
MUA - Agente de Usurio Conhecido como leitor de email. o lado cliente. Compor, editar, ler mensagens de correio Exemplo: Eudora, Outlook, elm, Pegasus, Netscape Messenger, etc... Mensagens de sada e chegada so armazenadas no servidor.
servidor de correio
agente de usurio
servidor de correio
agente de usurio
agente de usurio
agente de usurio
49
mensagens de chegada (ainda no lidas) p/ usurio. Fila de mensagens contm mensagens de sada (a serem enviadas). Protocolo SMTP entre servidores para transferir mensagens de correio. Cliente: servidor de correio que envia Servidor: servidor de correio que recebe.
servidor de correio
agente de usurio
agente de usurio
50
25
Captulo 2
correio do cliente ao servidor. Usa porta 25/TCP Transferncia direta: servidor remetente ao servidor receptor Trs fases da transferncia: Handshaking (cumprimento). Transferncia das mensagens Encerramento Interao comando/resposta Comandos: texto ASCII Resposta: cdigo e frase de status
26
Captulo 2
Experimente voc mesmo uma interao SMTP com seu servidor predileto !
telnet nomedoservidor.algumlugar.br 25 Observe a resposta 220 do servidor Entre comandos HELO, MAIL FROM, RCPT TO,
DATA, QUIT, HELP. Estes comandos permite que voc envie correio sem usar um cliente (leitor de correio). Basta conhecer o formato das mensagens do protocolo.
53
SMTP - finalizando
SMTP usa conexes persistentes. SMTP requer que a mensagem
caracteres no so permitidas numa mensagem (p.ex., CRLF.CRLF). Assim, a mensagem pode ter que ser codificada (normalmente em base-64 ou quoted printable).
Servidor SMTP usa
encapsulado em sua prpria mensagem de resposta. SMTP: mltiplos objetos de mensagem enviados numa mensagem de mltiplas partes.
54
27
Captulo 2
cabealho
linha em branco
corpo
Corpo
contedo MIME. verso MIME mtodo usado para codificar dados tipo, subtipo de dados multimdia, declarao parmetros Dados codificados
From: ana@consumidor.br To: bernardo@doces.br Subject: Imagem de uma bela torta MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data
56
28
Captulo 2
Tipos MIME
Content-Type: tipo/subtipo; parmetros Text
sub-tipos exemplos: plain,
Audio
Sub-tipos exemplos : basic
Image
sub-tipos exemplos : jpeg,
Application
Outros dados que precisam ser
gif
Video
sub-tipos exemplos : mpeg,
processados por um leitor para serem visualizados. subtipos exemplos : msword, octet-stream
quicktime
57
Tipo Multiparte
From: ana@consumidor.br To: bernardo@doces.br Subject: Imagem de uma bela torta MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain caro Bernardo, Anexa a imagem de uma torta deliciosa. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data --98766789-58
29
Captulo 2
SMTP
SMTP
POP3 ou IMAP
servidor de correio do receptor
agente de usurio
POP: Post Office Protocol [RFC 1939] Autorizao (agente <-->servidor) e transferncia IMAP: Internet Mail Access Protocol [RFC 1730] Mais comandos e mais opes (mais complexo). Manuseio de msgs armazenadas no servidor Atravs de HTTP: Hotmail , Yahoo! Mail, Webmail, etc. (no exatamente um protocolo de e-mail e sim um mecanismo)
59
Protocolo POP3
Fase de autorizao
comandos do cliente:
S: C: S: C: S: C: S: S: S: C: S: S: C: C: S: S: C: C: S:
+OK POP3 server ready user ana +OK pass faminta +OK user successfully logged list 1 498 2 912 . retr 1 <message 1 contents> . dele 1 retr 2 <message 1 contents> . dele 2 quit +OK POP3 server signing off
60
on
nmero
30
Captulo 2
Dispositivos Internet (hosts, roteadores, etc...) usam nmeros. Endereo IP (32 bits): usado para enderear datagramas. Nome : usado por humanos.
www.unesp.br = 200.145.9.9
uma hierarquia de muitos servidores de nomes (nameservers). (2) Um protocolo da camada de aplicao que permite que os hosts e os servidores de nomes se comuniquem, de modo a fornecer o servio de traduo resolver nomes. Resolver = traduzir nome em endereo
Os servidores de nomes (nameservers) so freqentemente mquinas de Unix que rodam o software Berkeley Internet Name Domain (Bind). O protocolo do DNS funciona sobre UDP e usa a porta 53.
62
31
Captulo 2
Cada provedor, empresa ou instituio tem servidor de nomes local (default) Pedido DNS de um host vai primeiro ao servidor de nomes local. Para o host: guarda nome, endereo IP dele. Pode realizar traduo nome/ endereo para este nome.
63
local que no consegue resolver o nome. Servidor raz: Procura servidor autoritativo se mapeamento for desconhecido. Obtm traduo. Devolve mapeamento ao servidor local. Existem cerca de uma dzia de servidores raz no mundo.
64
32
Captulo 2
servidor local
ns.ai.unesp.br
servidor autoritativo
cs.columbia.edu
solicitante
rock.ai.unesp.br
www.cs.columbia.edu
65
Exemplo de DNS
Servidor raz:
Pode no conhecer o
servidor de nomes autoritativo. Pode conhecer servidor de nomes intermedirio: a quem contactar para descobrir o servidor de nomes autoritativo.
servidor local
ns.ai.unesp.br
solicitante
rock.ai.unesp.br
www.cs.columbia.edu
66
33
Captulo 2
servidor local
ns.ai.unesp.br
Consulta iterada:
Servidor consultado
responde com o nome de um servidor de contato. No conheo este nome, mas pergunte para esse servidor
solicitante
rock.ai.unesp.br
www.cs.columbia.edu
67
mapeamento, ele o coloca numa cache local. Futuras consultas so resolvidas usando dados da cache Entradas no cache so sujeitas a temporizao (desaparecem depois de certo tempo) ttl = time to live (sobrevida) Esto sendo projetados pela IETF mecanismos de atualizao/notificao dos dados
RFC 2136
http://www.ietf.org/html.charters/dnsind-charter.html
68
34
Captulo 2
Registros DNS
DNS: BD distribuda contendo resource records (RR) formato RR: (nome,
valor, tipo, sobrevida)
Tipo=NS
nome domnio (p.ex. foo.com.br) valor endereo IP de servidor de nomes autoritativo para este domnio
69
70
35
Captulo 2
71
Compartilhamento de arquivos
Aplicaes P2P
72
36
Captulo 2
Procura por um determinado arquivo de uma msica. A aplicao exibe outros peers que possuem uma cpia da msica. Alice escolhe um dos pares: Bob. O arquivo copiado do PC de Bob para o notebook de Alice:
Enquanto Alice faz o download: outros usurios fazem upload da mquina de Alice.
O peer Alice tanto um cliente Web como um servidor Web transiente.
37
Captulo 2
38
Captulo 2
Questes Fundamentais:
centralizado ou organizao hierrquica. oftware executado em cada peer S equivalente em funcionalidade. uantidade explosiva e exponencial Q de adeptos.
39
Captulo 2
servidor ao mesmo tempo (servent). Cada cliente paga a sua participao fornecendo acesso a (alguns de) seus recursos.
Peering.
locais. Todos os dados e servios so acessveis de qualquer ponto. Pontos so autnomos. Pontos e conexes no so confiveis.
40
Captulo 2
Principais vantagens
scalabilidade E
obustez R
lexibilidade F
41
Captulo 2
Teste P2P
O sistema aceita conectividade varivel e
endereos IP temporrios? O sistema d uma autonomia significativa aos computadores na borda da rede? Os ns podem trocar informaes livremente entre si, sem arbitragem central?
42
Captulo 2
econmicas.
Redes Overlay
enlace virtual
Rede Overlay
enlace fsico
Rede Fsica
43
Captulo 2
Modelo Descentralizado
Modelo Hierrquico
Introduo dos super-ns (super-nodes ou super-peers). Mistura dos modelos centralizado e descentralizado
Exemplos: KaZaA, Morpheus.
Busca baseada em tabela de hash distribuda Exemplos: Azureus, CAN, Pastry, Tapestry, Chord.
44
Captulo 2
Modelo Descentralizado e Estruturado DHT. Bittorrent. Modelo Descentralizado e No Estruturado. Super-Ns: KaZaA Inundao: Gnutella
Exemplos:
MSN Messenger (http://messenger.msn.com) Yahoo! Messenger (http://messenger.yahoo.com) ICQ (http://web.icq.com) Jabber (http://ww.jabber.org)
45
Captulo 2
Permite usurios compartilharem diretamente seus arquivos, msicas, vdeos, etc... Pode apresentar problemas de violao de direitos. rea de armazenamento. Disponibilidade de informaes. Anonimato. Gerenciamento.
Caractersticas
Compartilhamento: Aplicaes
Napster (http://www.napster.com) KaZaA (http://www.kazaa.com) Gnutella (http://www.gnutella.com) BearShare (http://www.bearshare.com) LimeWire (http://www.limewire.com) Freenet (http://www.freenetproject.org) Imesh (http://www.imesh.com) Morpheus (http://www.morpheus.com) Grokster (http:// www.grokster.com) Bittorent (http://www.bittorent.com)
46
Captulo 2
Soluo de computao distribuda para engenharia e cincias, baseada em compartilhamento de recursos em larga escala. Semelhanas e diferenas com P2P.
SETI@Home (http://setiathome.ssl.berkeley.edu) The Search for Extraterrestrial Intelligence Usurios executam partes da busca.
SETI@Home
47
Captulo 2
Questo: endereamento
Comunicao P2P pura necessita de conexes diretas
DNS: s traduz os endereos das mquinas que o administrador da rede quer revelar. Firewall: bloqueia a comunicao de entrada/sada da rede, de acordo com critrios de segurana. NAT (Network Address Translation): traduz endereos de rede interna (ex.: 10.0.1.1, 172.16.4.22, 192.168.0.4) em endereos pblicos (ex.: 200.249.188.1, 150.161.2.1) Proxy: interpem-se na comunicao fim a fim (http) para filtrar pginas indesejveis.
48
Captulo 2
Contornando o DNS
Cadastro prprio Napster, ICQ, Groove Endereos IP de membros da rede.
4 3
Lista de Arquivos
Rede KaZaA
Cliente envia a lista dos arquivos compartilhados para a rede Rede informa o ID do cliente para buscar o arquivo
49
Captulo 2
X
Lista de Arquivos
3 2
Cliente procura arquivo disponvel na rede
Cliente envia a lista dos arquivos compartilhados para a rede Rede comunica o cliente do bloqueio
Rede KaZaA
Rede informa o ID do cliente para buscar o arquivo
1
Lista de Arquivos
X
X
4 3
Rede informa o ID do cliente para buscar o arquivo Cliente procura arquivo disponvel na rede
2 6
Rede comunica o cliente do bloqueio
Rede KaZaA
50
Captulo 2
servidor.
Clientes iniciam (active open) a conexo com servidores bem conectados com endereos estveis e nomes DNS. Mquinas internas podem iniciar conexo com mquinas externas. Mquinas externas NO podem iniciar conexo com mquinas internas (mesmo sabendo endereo IP e porta).
Assimetria:
Intermediao (relaying). Conexo reversa Uma mquina tem endereo IP vlido. Perfurao de buracos UDP (hole punching)
Variao: predio no nmero de porta Requer sincronizao precisa de pacotes SYN e predio do prximo nmero de porta
51
Captulo 2
Questo: Conectividade
Heterogeneidade de conexes dos peers Tecnologia / capacidade (banda) / assimetria. Muitos peers em conexes de baixa capacidade e
alta instabilidade. Poucos peers em conexes de alta capacidade e baixa instabilidade. Indcios de que as redes P2P apresentem caractersticas Small World
Questo: Escalabilidade
benefcio imediato da descentralizao. Limitaes da escalabilidade:
Quantidade de operaes centralizadas. Manuteno de estado (usurios/aplicaes), etc... Em um sistema P2P, o nmero de servidores aumenta com o nmero de clientes. Napster, Gnutella, Freenet
52
Captulo 2
Questo: Roteamento
Localizar informao em rede grande, voltil e
distribuda no simples.
Localizao e busca de informao dependem
do roteamento utilizado.
Abordagens comuns:
Modelo Centralizado
Diretrio central
Iron Maiden ?
53
Captulo 2
54
Captulo 2
Modelo de Super-Ns
Super-Ns
Modelo DHT
Hash Estrutura de dados importantes para desenvolvimento. Hash distribudo na escala da Internet Importante para sistemas distribudos grandes. Sistemas P2P. Espelhamento de servidores Web.
55
Captulo 2
DHT: Funcionamento
Funo de hash mapeia objeto para um
identificador nico.
DHT: Funcionamento
Cada n deve conhecer pelo menos uma
Ns armazenam os objetos que so mapeados para a sua faixa de hash. Ns armazenam apontadores para os objetos na sua faixa.
56
Captulo 2
DHT: Roteamento
Para cada objeto, o n (os ns) cuja faixa
De qualquer outro n.
boa suficiente.
57
Captulo 2
insere (K1,V1)
insere (K1,V1)
58
Captulo 2
118
59
Captulo 2
Naspter
Primeiro programa de compartilhamento
Primeira verso: 1999 Popularidade: incio de 2000. Pico: 2001 8 M users/dia 20 M msicas / dia. No incio de 2001 no resistiu a uma srie de aes legais e o servio foi fechado em maro.
Batalha judicial com a RIAA*
Naspter simplificado
Quando um par se conecta, ele informa ao
servidor central:
Alice procura por Hey Jude. Servidor central informa onde existe este
60
Captulo 2
Napster: funcionamento
1. Cliente se conecta com servidor e envia a sua 2. 3. 4. 5.
lista de arquivos compartilhados. Cliente envia palavras-chave para fazer busca na lista completa. Cliente testa taxa de transmisso dos pares que tm o arquivo solicitado (ping). Peers respondem (pong). O arquivo transferido diretamente entre os pares.
61
Captulo 2
usurios
pedidos e resultados
usurio
62
Captulo 2
usurio
recupera arquivos
usurio
63
Captulo 2
Napster - Problemas
Servidor centralizado Ponto nico de falhas. Pode usar o DNS para balancear carga entre servidores. Sujeito a congestionamentos. Sob controle total do Napster.
Apenas iluso de liberdade.
Nenhuma segurana: Sem criptografia. Sem autenticao. Sem privacidade (identidade revelada).
Gnutella (1)
Sistema de busca totalmente distribudo.
Protocolo aberto.
14/03/2000: Disponibilizado sob licena pblica GNU no servidor web da Nullsoft (pertencente AOL). Retirado apenas algumas horas depois. Tarde demais: muitos usurios fizeram download. O protocolo Gnutella foi descoberto atravs de engenharia reversa. Outros clientes foram disponibilizados e Gnutella comeou a se popularizar.
64
Captulo 2
Gnutella (2)
A sua principal caracterstica a busca
distribuda.
Problema: Trfego gerado = Escalabilidade. Despertou grande interesse na comunidade
acadmica.
No depende de servidor central. Problema inicial: descobrir algum n que est na rede. Depois, j est na rede.
Protocolo Gnutella
Compartilhamento sobre uma rede de overlay Ns mantm conexes TCP abertas. Mensagens so difundidas (inundadas) ou ento propagadas de volta. Protocolo:
Propagao de volta PONG QUERY HIT GET, PUSH
N a n
65
Captulo 2
conexo TCP Todos os pares ativos e arestas esto na rede de sobreposio. Aresta no um enlace fsico Um determinado par ser tipicamente conectado a < 10 vizinhos na rede de sobreposio.
2 - 131
Gnutella: protocolo
Mensagem de consulta (query) enviada pelas conexes TCP existentes Os pares encaminham a mensagem de consulta. QueryHit (encontro) enviado pelo caminho reverso.
66
Captulo 2
67
Captulo 2
Passos: 1. N 2 inicia busca do arquivo A. 2. Envia mensagens a vizinhos. 3. Vizinhos encaminham mensagem.
68
Captulo 2
A:5
Passos: 1. N 2 inicia busca arquivo A. 2. Envia mensagens a vizinhos. 3. Vizinhos encaminham mensagem. 4. Ns com arquivo A enviam mensagem de resposta.
A:5
A 6
Passos: 1. N 2 inicia busca arquivo A. 2. Envia mensagens a vizinhos. 3. Vizinhos encaminham mensagem. 4. Ns com arquivo A enviam. mensagem de resposta. 5. Mensagem de resposta propagada de volta.
69
Captulo 2
Passos: 1. N 2 inicia busca arquivo A. 2. Envia mensagens a vizinhos. 3. Vizinhos encaminham mensagem. 4. Ns com arquivo A enviam mensagem de resposta. 5. Mensagem de resposta propagada de volta.
Passos: 1. N 2 inicia busca arquivo A. 2. Envia mensagens a vizinhos. 3. Vizinhos encaminham mensagem. 4. Ns com arquivo A enviam mensagem de resposta. 5. Mensagem de resposta propagada de volta. 6. Arquivo A transferido.
70
Captulo 2
Gnutella - Comentrios
Verses mais novas do protocolo Gnutella
KaZaA
Software proprietrio. Tentativa de implementar reputao. Protocolo FastTrack Outros clientes
Verso pirata: KaZaA Lite Morpheus, Grokster Descentralizada e no estruturada. Hierrquica: Baseada em super-ns (supernodes).
Arquitetura:
71
Captulo 2
Para cada match: metadata, hash, endereo IP. Se o lder de grupo encaminha a consulta para
outros lderes de grupo, eles respondem com os encontros. O cliente ento seleciona os arquivos para download
Requisies HTTP usando hash como identificador so enviadas aos pares que contm o arquivo desejado.
72
Captulo 2
145
Artifcios do KaZaA
Limitaes em uploads simultneos. Requisita enfileiramento. Incentiva prioridades. Realiza downloads em paralelo.
2 - 146
73
Captulo 2
BitTorrent
Bram Cohen Abril de 2001. Procolo aberto. Descentralizado. Modelo hbrido. DHT (Kademlia). Implementado pelo Azureus (atual Vuze)
147
BitTorrent (2)
Tracker.
Peer cria um arquivo de metadata: .torrent contendo um hash do que vai ser compartilhado. Envia para o tracker servidor supernode. Clientes buscam informaes dos compartilhamento nos trackers.
Tambm possibilidade de operao trackerless e multitracker.
Clientes:
BitTorrent, Torrent, rTorrent, KTorrent, BitComet DHT Vuze (Ex-Azureus) suporta trackerless (incompatvel com DHT, apesar de que desenvolveu o DHT primeiro).
148
74
Captulo 2
BitTorrent- funcionamento
149
150
75
Captulo 2
API Sockets
Surgiu em BSD4.1 UNIX, 1981 Explicitamente criados, usados
151
internet
estao ou servidor
estao ou servidor
152
76
Captulo 2
pparaServidor
doUsurio
socket do cliente
154
doServidor
77
Captulo 2
Cliente
cria socket, porta=x, para receber pedido: socketRecepo = ServerSocket () aguarda chegada de setup pedido de conexo socketConexo = socketRecepo.accept() l pedido de socketConexo escreve resposta para socketConexo fecha socketConexo
TCP da conexo
cria socket, abre conexo a idHosp, porta=x socketCliente = Socket() Envia pedido usando socketCliente
public static void main(String argv[]) throws Exception { String frase; String fraseModificada; Cria fluxo de entrada Cria socket de cliente, conexo ao servidor Cria fluxo de sada anexado ao socket BufferedReader doUsuario = new BufferedReader(new InputStreamReader(System.in)); Socket socketCliente = new Socket(idHosp", 6789); DataOutputStream paraServidor = new DataOutputStream(socketCliente.getOutputStream());
156
78
Captulo 2
Aguarda, no socket para recepo, o contato do cliente Cria fluxo de entrada, ligado ao socket
158
79
Captulo 2
159
ponto de vista da aplicao UDP prov transferncia no confivel de grupos de bytes (datagramas) entre cliente e servidor
160
80
Captulo 2
Cliente
cria socket, = socketCliente DatagramSocket() cria, enderea (idHosp, porta=x, envia pedido em datagrama usando socketCliente
l pedido do socketServidor escreve resposa ao socketServidor especificando endereo IP, nmero de porta do cliente
161
Cria fluxo de enrada Cria socket de cliente Traduz nome de hospedeiro para endereo IP usando DNS
81
Captulo 2
82
Captulo 2
socketServidor.send(pacoteEnviado); Escreve } datagrama para o socket } Fim do lao while. } Volta ao incio e aguarda chegar outro datagrama.
165
Captulo 2: Sumrio
Requisitos do servio de
aplicao:
transporte orientado a conexo, confivel da Internet: TCP. Modelo no confivel: datagramas UDP.
166
83
Captulo 2
Captulo 2: Sumrio
Mais importante - aprendemos de protocolos:
Troca tpica de mensagens em
pedido/resposta:
Cliente solicita info ou servio. Servidor responde com dados, e cdigo de status. Cabealhos: campos com informaes sobre dados (metadados). Dados: informao sendo comunicada.
Formatos de mensagens:
167
84