Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O...
Transcript of Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O...
![Page 1: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/1.jpg)
1
Redes de Computadores Sockets, FTP, Correio Eletrônico, P2P
Prof. Jó Ueyama Março/2017
![Page 2: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/2.jpg)
Capítulo 2.7 e 2.8 - Camada de Aplicação Programação de sockets
2
![Page 3: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/3.jpg)
Programação de Sockets
Objetivo: • aprender a construir aplicações cliente-servidor que se comunicam usando sockets.
Socket: • interface local, criada por aplicações, controlada pelo OS (uma “porta”) na qual os processos de aplicação podem tanto enviar quanto receber mensagens de e para outro processo de aplicação (local ou remoto).
3
![Page 4: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/4.jpg)
API Socket
• Introduzida no BSD4.1 UNIX, 1981. ∀ Sockets são explicitamente criados, usados e liberados pelas aplicações. ∀ Implementam paradigma cliente-servidor. ∀ Dois tipos de serviço de transporte via socket API:
• datagrama não confiável (UDP); • confiável, orientado a cadeias de bytes (TCP).
4
![Page 5: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/5.jpg)
Programação de sockets com TCP
l Socket: uma porta entre o processo de aplicação e o protocolo de transporte fim-a-fim.
l Serviço TCP: transferência confiável de bytes de um processo para outro.
5
![Page 6: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/6.jpg)
Sockets TCP - Cliente
• Processo servidor já deve estar em execução. • Servidor deve ter criado socket (porta) que aceita o contato do cliente. • Cliente contata o servidor:
– criando um socket TCP local; – especificando endereço IP e número da porta do
processo servidor.
l Quando o cliente cria o socket: – cliente TCP estabelece conexão com o TCP do
servidor. 6
![Page 7: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/7.jpg)
Sockets TCP - Servidor
• Quando contatado pelo cliente, o servidor cria um novo socket para o processo servidor comunicar-se com o cliente. • Permite ao servidor conversar com múltiplos clientes • Números da porta de origem são usados para distinguir o cliente (mais no Capítulo 3).
7
![Page 8: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/8.jpg)
Terminologia: stream
l Um stream é uma seqüência de caracteres que fluem para dentro ou para fora de um processo.
l Um stream de entrada é agregado a alguma fonte de entrada para o processo, ex.: teclado ou socket.
l Um stream de saída é agregado a uma fonte de saída, ex.: monitor ou socket.
8
![Page 9: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/9.jpg)
Exemplo de aplicação cliente-servidor TCP
9
1) Cliente lê linha da entrada-padrão do sistema (inFromUser stream), envia para o servidor via socket (outToServer stream).
2) Servidor lê linha do socket. 3) Servidor converte linha para
letras maiúsculas e envia de volta ao cliente.
4) Cliente lê a linha modificada através do (inFromServer stream).
![Page 10: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/10.jpg)
Interação cliente-servidor TCP
10
![Page 11: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/11.jpg)
Programação de sockets com UDP
l Não há conexão entre o cliente e o servidor. l Transmissor envia explicitamente endereço IP e porta de destino em cada mensagem.
l Servidor deve extrair o endereço IP e porta do transmissor de cada datagrama recebido. • Dados transmitidos podem ser recebidos fora de ordem ou perdidos.
11
![Page 12: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/12.jpg)
Exemplo de aplicação cliente-servidor UDP
12
![Page 13: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/13.jpg)
EP: Implementação de um servidor Web
13
![Page 14: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/14.jpg)
Capítulo 2.3 - FTP
14
![Page 15: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/15.jpg)
FTP (File Transfer Protocol)
n Transferência de arquivos de e para o computador remoto.
n Modelo cliente servidor: – Cliente: lado que inicia a transferência (seja de ou
para o lado remoto) – Servidor: hospedeiro remoto
n RFC 959. n Servidor FTP: porta 21.
15
![Page 16: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/16.jpg)
FTP
16
![Page 17: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/17.jpg)
FTP: conexão de controle e de dados
l Duas conexões: – controle; – dados.
l Conexão de controle: “fora da banda”.
17
![Page 18: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/18.jpg)
FTP: conexão de controle e de dados
∀ Cliente FTP contata o servidor FTP na porta 21.
– TCP como protocolo de transporte; • Por que?
– estabelece conexão de controle. ∀ Conexão de Controle:
– cliente obtém autorização; – cliente procura o diretório remoto; – cliente envia comando para transferência de
arquivo. 18
![Page 19: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/19.jpg)
FTP: conexão de controle e de dados
∀ Conexão de Dados: – servidor abre essa conexão TCP quando
recebe um comando para transferência de arquivo;
– após a transferência de um arquivo, o servidor fecha a conexão.
– servidor abre uma segunda conexão de dados TCP para transferir outro arquivo;
∀ Servidor FTP mantém “estado”: diretório atual, autenticação anterior.
19
![Page 20: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/20.jpg)
FTP: Comandos
∀ texto ASCII sobre canal de controle. ∀ USER username
∀ PASS password
∀ LIST retorna listagem do arquivo no diretório atual.
∀ RETR filename recupera (obtém) o arquivo. ∀ STOR filename armazena o arquivo no
hospedeiro remoto. 20
![Page 21: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/21.jpg)
FTP: Códigos de retorno
∀ Código de status e frase (como no HTTP) ∀ 331 Username OK, password required ∀ 125 data connection already open; transfer
starting ∀ 425 Can’t open data connection ∀ 452 Error writing file
21
![Page 22: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/22.jpg)
Mas hoje....
n FTP não é mais tão usado... - senhas passam em aberto na rede!
n SCP: - somente transferência de arquivos.
n SFTP (SSH File Transfer Protocol): - permite transferência e manipulação de arquivos; - normalmente usa SSH-2; - autenticação e segurança provida pelo protocolo
abaixo (SSH). 22
![Page 23: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/23.jpg)
Capítulo 2.4 - Correio Eletrônico
23
![Page 24: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/24.jpg)
Correio Eletrônico
n Três componentes principais: - Agentes de usuário - Servidores de correio - SMTP (Simple Mail
Transfer Protocol)
24
![Page 25: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/25.jpg)
Correio eletrônico: agentes de usuário
∀ Composição, edição, leitura de mensagens de correio. ∀ Ex.: Outlook, Thunderbird, Eudora, pine. ∀ Mensagens de entrada e de saída são armazenadas no servidor.
– alguns programas copiam as mensagens recebidas para o disco local (configuração).
25
![Page 26: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/26.jpg)
Correio eletrônico: servidores de correio
∀ Caixa postal contém mensagens que chegaram (ainda não lidas) para o usuário. ∀ Fila de mensagens contém as mensagens de correio a serem enviadas. ∀ Protocolo SMTP permite aos servidores de correio trocarem mensagens entre si:
– cliente: servidor de correio que envia; – “servidor”: servidor de correio que recebe.
26
![Page 27: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/27.jpg)
SMTP [RFC 821]
∀ RFC é de 1982. ∀ Usa TCP. ∀ Servidor ouve na porta 25. ∀ Conexões persistentes. ∀ Transferência direta:
– servidor que envia para o servidor que recebe.
∀ Agentes de usuário usam o SMTP para enviar mensagens para o seu servidor.
27
![Page 28: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/28.jpg)
SMTP [RFC 821]
∀ Três fases de transferência: – handshaking (apresentação); – transferência de mensagens; – fechamento.
∀ Interação comando/resposta: – Comandos: texto ASCII; – Resposta: código de status e frase.
∀ Mensagens (cabeçalho e corpo) devem ser formatadas em código ASCII de 7 bits.
28
![Page 29: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/29.jpg)
Alice envia email para Bob
1) Alice usa o agente de usuário para compor a mensagem para [email protected]
2) O agente de usuário dela envia a mensagem para o seu servidor de correio; a mensagem é colocada na fila de mensagens.
3) O lado cliente do SMTP abre uma conexão TCP com o servidor de correio do Bob.
4) O cliente SMTP envia a mensagem de Alice pela conexão TCP.
5) O servidor de correio de Bob coloca a mensagem na caixa de correio de Bob.
6) Bob invoca seu agente de usuário para ler a mensagem. 29
![Page 30: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/30.jpg)
Exemplo de iteração SMTP
30
S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection
![Page 31: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/31.jpg)
Tente você...
telnet nome-do-servidor 25
∀ Veja resposta 220 do servidor.
∀ Envie comandos HELO, MAIL FROM, RCPT TO, DATA, QUIT.
∀ A sequência acima permite enviar um comando sem usar o agente de usuário do remetente.
31
![Page 32: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/32.jpg)
SMTP: comparação com HTTP ∀ HTTP: protocolo de recuperação de informações (pull protocol). ∀ SMTP: protocolo de envio de informações (push protocol). ∀ Ambos usam comandos e respostas em ASCII, interação comando/resposta e códigos de status. ∀ HTTP: cada objeto encapsulado na sua própria mensagem de resposta. ∀ SMTP: múltiplos objetos são enviados numa única mensagem.
32
![Page 33: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/33.jpg)
Formato da Mensagem
33
RFC 822: padrão para mensagens do tipo texto:
• linhas de cabeçalho: – To: – From: – Subject: diferente dos
comandos SMTP! • corpo:
– a “mensagem”, ASCII somente com caracteres.
header
body
linha em branco
![Page 34: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/34.jpg)
Formato da Mensagem: extensões multimídia
∀ MIME: multimedia mail extension, RFC 2045, 2056.
∀ Linhas adicionais no cabeçalho declaram o tipo de conteúdo MIME.
∀ Dados multimídia: codificados em ASCII de 7bits!
34
From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data
Dados multimídia tipo, subtipo,
declaração de parâmetro
Método usado para codificar dados
Versão da MIME
Dados codificados
![Page 35: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/35.jpg)
Protocolos de Acesso ao Correio
35
∀ SMTP: entrega e armazena no servidor do destino. ∀ Protocolo de acesso: recupera mensagens do servidor:
– POP: Post Office Protocol [RFC 1939] • Autorização (agente<-->servidor) e download.
– IMAP: Internet Message Access Protocol [RFC 2060] • mais recursos (mais complexo); • manipulação de mensagens armazenadas no
servidor. – HTTP: Hotmail, Yahoo! Gmail etc.
![Page 36: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/36.jpg)
Protocolo POP3
36
Fase de autorização • comandos do cliente: • user: declara nome do usuário
• pass: password respostas do servidor • +OK • -ERR
Fase de transação, cliente: • list: lista mensagens e
tamanhos • retr: recupera mensagem pelo
número • dele: apaga • quit
C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 1 contents> S: . C: dele 2 C: quit S: +OK POP3 server signing off
S: +OK POP3 server ready C: user alice S: +OK C: pass hungry S: +OK user successfully logged on
![Page 37: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/37.jpg)
POP3
∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete).
∀ O usuário não pode reler o e-mail se trocar o cliente.
∀ “ler e guardar” (download-and-keep): – mantém a mensagem no servidor; – cópias das mensagens em clientes diferentes.
∀ POP3 não mantém estado através das sessões.
37
![Page 38: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/38.jpg)
IMAP
∀ Mantém todas as mensagens em um lugar: o servidor.
∀ Permite que o usuário: – crie pastas; – mova as mensagens do Inbox para pastas.
∀ IMAP mantém o estado do usuário através das sessões: – Nomes das pastas e mapeamentos entre os IDs da
mensagem e o nome da pasta. 38
![Page 39: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/39.jpg)
Webmail
n Agente de usuário: browser. n Protocolo entre agente de usuário e servidor:
HTTP. n Algumas implementações utilizam um servidor
IMAP: - scripts no servidor HTTP usam o protocolo IMAP
para se comunicar com servidor IMAP; - vantagem: funcionalidades do IMAP.
39
![Page 40: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/40.jpg)
Cap. 2.6 - Compartilhamento de Arquivos P2P
40
![Page 41: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/41.jpg)
Foco
n Protocolos de compartilhamento de arquivos em redes peer-to-peer.
n Outros aspectos não discutidos aqui, mas importantes: - segurança; - privacidade; - anonimato; - violação de direitos autorais e propriedade
intelectual.
41
![Page 42: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/42.jpg)
Arquitetura P2P (pura)
42
![Page 43: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/43.jpg)
Compartilhamento de Arquivos P2P
∀ Alice executa aplicação P2P: – utiliza ADSL e obtém novos endereços IP para
cada conexão. – procura música “Hey Jude” (arquivo MP3); – a aplicação exibe outros pares que possuem uma
cópia de “Hey Jude”; – Alice escolhe um dos pares, Bob; – o arquivo é copiado de Bob para Alice.
∀ Enquanto Alice faz o download, é possível fazer upload de arquivos em Alice. 43
![Page 44: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/44.jpg)
Compartilhamento de Arquivos P2P
n Transferência de arquivos entre pares usa HTTP!
n Par que possui o arquivo é um servidor web transitório!
n Problema chave: - localização de arquivos!
44
![Page 45: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/45.jpg)
P2P: Diretório centralizado
• Localização de conteúdo através de diretório central.
• Ex.: “Napster” – http://pt.wikipedia.org/wiki/Napster
• Solução híbrida: – cliente/servidor: localização de conteúdo; – P2P: transferência de arquivos.
45
![Page 46: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/46.jpg)
P2P: Diretório centralizado
• Quando um par se conecta, ele informa ao servidor central: endereço IP e conteúdo.
• Usuário procura arquivo no servidor.
• Usuário requisita o arquivo do par que o contém.
• Servidor precisa verificar se usuários estão conectados.
46
![Page 47: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/47.jpg)
P2P: Diretório centralizado - Problemas
• Ponto único de falhas. • Gargalo de desempenho. • Violação de direitos autorais:
– sanções judiciais podem levar ao desligamento dos servidores de diretório.
Transferência de arquivo é descentralizada, mas
a localização de conteúdo é altamente centralizada.
47
![Page 48: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/48.jpg)
• Na distribuição de arquivos P2P, cada par pode redistribuir qualquer parte do arquivo recebido para outros pares
• auxiliando, assim, o servidor no processo de distribuição.
• O tempo de distribuição é o tempo necessário para que todos os N pares obtenham uma cópia do arquivo.
• O BitTorrent é um protocolo P2P popular para distribuição de arquivos.
Distribuição de Arquivos P2P
![Page 49: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/49.jpg)
Cenário de distribuição
Um problema ilustrativo de distribuição de arquivo
Distribuição de Arquivos P2P
![Page 50: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/50.jpg)
Tempo de distribuição para arquiteturas P2P e cliente-servidor
Comparação P2P vs. Cliente Servidor
![Page 51: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/51.jpg)
Distribuição de arquivos com o BitTorrent
Distribuição com BitTorrent
![Page 52: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/52.jpg)
• Vamos considerar como montar uma versão distribuída, P2P, de um banco de dados, que guardará os pares (chave, valor) por milhões.
• No sistema P2P, cada par só manterá um pequeno subconjunto da totalidade (chave, valor).
• Permitiremos que qualquer par consulte o banco de dados distribuído com uma chave em particular.
Distributed Hash Table (DHT)
![Page 53: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/53.jpg)
• O banco de dados distribuído, então, localizará os pares que
possuem os pares (chave, valor) correspondentes e retornará os pares chave‑valor ao consultante.
• Qualquer par também poderá inserir novos pares chave-valor no banco de dados.
• Esse banco de dados distribuído é considerado como uma tabela hash distribuída (DHT — Distributed Hash Table).
Distributed Hash Tables (DHTs)
![Page 54: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/54.jpg)
Distributed Hash Tables (DHTs)
• O DHT circular oferece uma solução bastante elegante para reduzir a quantidade de informação sobreposta que cada par deve gerenciar.
DHT Circular
![Page 55: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/55.jpg)
Distributed Hash Tables (DHTs)
• Em sistemas P2P, um par pode vir ou ir sem aviso.
• Suponha que o par 5 da figura anterior saia de modo abrupto.
• Os dois pares precedentes ao que saiu (4 e 3) saberão que o par saiu, pois não responde mais às mensagens de ping.
• Os pares 4 e 3 precisam, portanto, atualizar as informações do estado de seu sucessor.
Alteração e Atualização de DHTs
![Page 56: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/56.jpg)
Distributed Hash Tables (DHTs)
• Consideraremos agora como o par 4 atualiza seu estado:
1. O par 4 substitui seu primeiro sucessor (par 5) por seu segundo sucessor (par 8).
2. O par 4, então, pergunta a seu novo primeiro sucessor (par 8) o identificador e o endereço IP de seu sucessor imediato (par 10). O par 4, então, torna o par 10 seu segundo sucessor.
Alteração e Atualização de DHTs
![Page 57: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/57.jpg)
BitTorrent
n Torrent: coleção de todos os pares que participarão na distribuição de um arquivo
n Cada par distribui “pedaços” de arquivos. n Tracker: - coordena distribuição de arquivos; - Um por Torrent; cada par avisa periodicamente que
ainda encontra-se no Torrent - Pode ter 10 a 1K pares em um Torrent
n Exercício: como BitTorrent se compara as outras soluções P2P? 57
![Page 58: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/58.jpg)
BitTorrent
58
![Page 59: Redes de Computadores - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e9/Rc05-aplicacao_17.pdf∀ O exemplo anterior usa o modo “ler e apagar” (download-and-delete). ∀ O usuário](https://reader035.fdocumentos.tips/reader035/viewer/2022070818/5f1657f5e7084a308033339f/html5/thumbnails/59.jpg)
Perguntas???
59