1 Capítulo 2: Camada de Aplicação Metas do capítulo: ● aspectos conceituais e de implementação de protocolos de aplicação em redes – paradigma cliente servidor – modelos de serviço ● aprender sobre protocolos através do estudo de protocolos populares do nível da aplicação Mais metas do capítulo ● protocolos específicos: – HTTP – FTP – SMTP / POP3 / IMAP – DNS ● a programação de aplicações de rede – programação usando sockets
127
Embed
Capítulo 2: Camada de Aplicação · 2015-05-11 · 1 Capítulo 2: Camada de Aplicação Metas do capítulo: aspectos conceituais e de implementação de protocolos de aplicação
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
Capítulo 2: Camada de Aplicação
Metas do capítulo: ● aspectos conceituais e de
implementação de protocolos de aplicação em redes– paradigma cliente
servidor– modelos de serviço
● aprender sobre protocolos através do estudo de protocolos populares do nível da aplicação
Mais metas do capítulo● protocolos específicos:
– HTTP– FTP– SMTP / POP3 / IMAP– DNS
● a programação de aplicações de rede– programação usando sockets
2
Capítulo 2: Roteiro
● Princípios das aplicações de rede– Arquitetura da aplicação– Comunicação entre processos– O que definem os protocolos da camada de aplicação– Quais os serviços demandados pela aplicação– Serviços fornecidos pelos protocolos de transporte–
telefonia Internet Proprietário, Aberto(p.ex., Skype, Hangout)
UDP ou TCP
16
WWW e HTTP: conceitos
● Página WWW:– consiste de “objetos”– endereçada por uma URL
● Quase todas as páginas WWW consistem de:– página base HTML, e– vários objetos referenciados.
● URL tem duas partes: nome de hospedeiro, e nome de caminho:
● Agente de usuário para WWW se chama de browser:– Internet Explorer– Firefox, Chrome
● Servidor para WWW se chama “servidor WWW”:– Apache (domínio público)– MS Internet Information
Server (IIS)
17
Protocolo HTTP: visão geral
HTTP: hypertext transfer protocol
● protocolo da camada de aplicação para WWW
● modelo cliente/servidor– cliente: browser que
pede, recebe, “visualiza” objetos WWW
– servidor: servidor WWW envia objetos em resposta a pedidos
● http1.0: RFC 1945● http1.1: RFC 2616
PC executaExplorer
Servidor executandoservidor WWW
do ICOMPMac executa
Navigator
pedido http
pedido http
resposta http
resposta http
18
Mais sobre o protocolo HTTP
HTTP: serviço de transporte TCP:
● cliente inicia conexão TCP (cria socket) ao servidor, porta 80
● servidor aceita conexão TCP do cliente
● mensagens HTTP são trocadas entre browser e servidor WWW
● encerra conexão TCP
HTTP é “sem estado”● servidor não mantém
informação sobre pedidos anteriores do cliente
Protocolos que mantêm “estado” são complexos!
➘ história passada (estado) tem que ser guardada
➘ Caso servidor/cliente parem de executar, suas visões do “estado” podem ser inconsistentes, devendo então ser reconciliadas
Nota
19
Conexões HTTPHTTP: não persistente➘ No máximo um objeto
é enviado em uma conexão TCP;
➘ HTTP/1.0 usa conexões não persistentes
HTTP: persistente➘ Múltiplos objetos podem
ser enviados numa única conexão TCP entre o servidor e o cliente;
➘ HTTP/1.1 usa conexões persistentes no modo default;
20
Ex: HTTP não-persistenteSupondo que usuário digita a URL
www.algumauniv.br/algumdepartamento/inicial.index
1a. Cliente http inicia conexão TCP com o servidor http (processo) www.algumauniv.br. Porta 80 é padrão para servidor http.
2. cliente http envia mensagem de pedido de http (contendo URL) através do socket da conexão TCP. A mensagem indica que o cliente deseja o objeto algumdepartamento/inicial.index
1b. servidor http no hospedeiro www.algumauniv.br espera por conexão TCP na porta 80. “aceita” conexão, avisando ao cliente
3. servidor http recebe mensagem de pedido, formula mensagem de resposta contendo objeto solicitado (algumdepartamento/inicial.index), envia mensagem via sockettempo
6. Passos 1 a 5 repetidos para cada um dos 10 objetos jpeg
4. servidor http encerra conexão TCP .
tempo
22
Tempo de RespostaDefinição de RTT: tempo gasto
para um pacote viajar entre cliente E servidor em caminho completo;
Tempo de resposta:➘ um RTT para iniciar a conexão
TCP➘ um RTT para a requisição HTTP
e para que alguns bytes da resposta HTTP sejam recebidos
➘ tempo de transmissão do arquivo
total = 2RTT+tempo de transmissão
Tempo para transmitir arquivo
Inicia conexão TCP RTT
requisição do arquivo
RTT
Arquivo recebido
tempo tempo
23
Para o caso de conexões HTTP não-persistente
➘ servidor analisa pedido, responde, e encerra conexão TCP ➘ requer 2 RTTs para trazer cada objeto
➘ mas os browsers geralmente abrem conexões TCP paralelas para trazer cada objeto
24
Para o caso de conexões HTTP persistente➘ servidor mantém conexão aberta
depois de enviar a resposta;
➘ mensagens HTTP subsequentes entre os mesmos cliente/servidor são enviadas por esta conexão;
➘ na mesma conexão TCP: servidor analisa pedido, responde, analisa novo pedido e assim por diante
Persistente sem pipelining:➘ Cliente só faz nova
requisição quando a resposta de uma requisição anterior foi recebida;
➘ um RTT para cada objetoPersistente com pipelining:➘ default in HTTP/1.1➘ O cliente envia a requisição
assim que encontra um objeto;
➘ Um pouco mais de um RTT para trazer todos os objetos
25
Mensagem de pedido HTTP: formato geral
28
Formato de mensagem HTTP: pedido
● Dois tipos de mensagem HTTP: pedido, resposta● mensagem de pedido HTTP:
– ASCII (formato legível por pessoas)
GET /diretorio/pagina.html HTTP/1.1 Host: www.ufam.edu.brConnection: closeUser-agent: Mozilla/5.0 Accept-language:En-us,us;
(carriage return (CR), line feed(LF) adicionais)
linha do pedido
linhas docabeçalho
Carriage return, line feed indica fim
de mensagem
29
Formato de mensagem HTTP: resposta
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 dados dados dados dados ...
linha de status(protocolo,
código de status,frase de status)
linhas decabeçalho
dados, p.ex., arquivo html
solicitado
30
Códigos de status da resposta HTTP
200 OK– sucesso, objeto pedido segue mais adiante nesta mensagem
301 Moved Permanently– objeto pedido mudou de lugar, nova localização especificado mais
adiante nesta mensagem (Location:)
400 Bad Request– mensagem de pedido não entendida pelo servidor
404 Not Found– documento pedido não se encontra neste servidor
505 HTTP Version Not Supported– versão de http do pedido não usada por este servidor
Na primeira linha da mensagem de resposta servidor->cliente. Alguns códigos típicos:
31
Bad Request, Exemplo
32
Bad Request, Real Exemplo
33
Bad Request, Corrigido
34
Interação usuário-servidor: GET condicional
● Meta: não enviar objeto se cliente já tem (no cache) versão atual
● cliente: especifica data da cópia no cache no pedido httpIf-modified-since:
<date>● servidor: resposta não contém
objeto se cópia no cache é atual: HTTP/1.0 304 Not
Modified
cliente servidor
msg de pedido httpIf-modified-since:
<date>
resposta httpHTTP/1.0
304 Not Modified
objeto não
modificado
msg de pedido httpIf-modified-since:
<date>
resposta httpHTTP/1.1 200 OK
…<data>
objeto modificado
35
A grande maioria dos sites Web usa cookiesQuatro componentes:
1) linha de cabeçalho do cookie na mensagem de resposta HTTP;
2) linha de cabeçalho do cookie na mensagem de requisição HTTP
3) Arquivo de cookie mantido na máquina do usuário e gerenciado por seu browser;
4) Banco de dados no site Web
Interação usuário-servidor: cookies, mantendo o “estado”
36
Interação usuário-servidor: cookies,mantendo o “estado”
Susan acessa a Internet sempre usando o mesmo PC;➼ Ela visita um site de comércio eletrônico pela
primeira vez;➼ Quando a requisição HTTP inicial chega ao site, é
criado um ID único e uma entrada no banco de dados para este ID;
➼ servidor envia “cookie” ao cliente na msg de resposta
➼ cliente apresenta cookie nos pedidos posteriores➼ servidor casa cookie- apresentado com a info
guardada no servidor
37
cliente servidorrequisição http comum
resposta http comum +Set-cookie: 1678
requisição http comumcookie: 1678
resposta http comum
requisição http comumcookie: 1678
resposta http comum
Açãoespecífica do cookie
Açãoespecífica do cookie
servidorcria ID
1678 para o usuário
Entrada no
banco de dados
acesso
aces
so
Arquivo Cookie
amazon: 1678ebay: 8734
Arquivo Cookie
ebay: 8734
Arquivo Cookie
amazon: 1678ebay: 8734
Uma semana depois:
Interação usuário-servidor: cookies, mantendo o “estado”
38
O que cookie pode trazer?
➘ autorização➘ shopping carts➘ recomendações➘ Estado de sessões de
usuários (Web e-mail)
Cookies e privacidade:➘ O uso de cookies permite que
o site “aprenda” muita coisa sobre você
➘ Você deve fornecer nome e e-mail para os sites;
➘ Ferramentas de buscas usam redirecionamento & cookies para aprender ainda mais;
➘ Agências de publicidade obtém suas informações através dos sites;
Nota
Interação usuário-servidor: cookies, mantendo o “estado”
39
Capítulo 2: Camada de Aplicação
Metas do capítulo: ● aspectos conceituais e de
implementação de protocolos de aplicação em redes– paradigma cliente
servidor– modelos de serviço
● aprender sobre protocolos através do estudo de protocolos populares do nível da aplicação
Mais metas do capítulo● protocolos específicos:
– HTTP– FTP– SMTP / POP3 / IMAP– DNS
● a programação de aplicações de rede– programação usando sockets
2) O AU da Alice envia a mensagem para o seu servidor de correio; a msg é colocada na fila de mensagens;
3) O cliente SMTP abre uma conexão TCP com o servidor de correio do Bob
4) SMTP cliente envia a msg da Alice através da conexão TCP;
5) Servidor de correio de Bob coloca a msg na caixa de correio de Bob;
6) Bob invoca o seu AU para ler a sua msg;
agente usuário
servidorcorreio
servidorcorreio agente
usuário
1
2 3 4 56
49
Interação SMTP típica S: 220 doces.br C: HELO consumidor.br S: 250 Hello consumidor.br, 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: Voce gosta de chocolate? C: Que tal sorvete? C: . S: 250 Message accepted for delivery C: QUIT S: 221 doces.br closing connection
50
Experimente você uma interação SMTP :
● telnet nomedoservidor 25● veja resposta 220 do servidor● entre comandos HELO, MAIL FROM, RCPT TO, DATA,
QUIT
estes comandos permite que você envie correio sem usar um cliente (leitor de correio)
51
SMTP: últimas palavras
● SMTP usa conexões persistentes● smtp requer que a mensagem
(cabeçalho e corpo) sejam em ASCII de 7-bits
● algumas cadeias de caracteres não são permitidas numa mensagem (p.ex, acentos(é)). Logo a mensagem pode ter que ser codificada (normalmente em base-64 ou “quoted printable”)
● servidor SMTP usa CRLF.CRLF para reconhecer o final da mensagem
Comparação com http● HTTP : pull (puxar)● email: push (empurrar)
● ambos tem interação comando/resposta, códigos de status em ASCII
● HTTP: cada objeto é encapsulado em sua própria mensagem de resposta
● SMTP: múltiplos objetos de mensagem enviados numa mensagem de múltiplas partes
52
Formato de uma mensagem
SMTP: protocolo para trocar msgs de correio
RFC 822: padrão para formato de mensagem de texto:
● linhas de cabeçalho, p.ex.,– To:– From:– Subject:
diferentes dos comandos de SMTP!
● corpo– a “mensagem”, somente de
caracteres ASCII
cabeçalho
corpo
linha em branco
53
Formato de uma mensagem: extensões para multimídia
● MIME: multimedia mail extension, RFC 2045, 2056● linhas adicionais no cabeçalho da msg declaram tipo do conteúdo
MIME
From: [email protected] To: [email protected]: Imagem de uma bela torta MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg
base64 encoded data ..... ......................... ......base64 encoded data
processados por um leitor para serem “visualizados”
● subtipos exemplos : msword, octet-stream
55
Tipo MultipartFrom: [email protected] To: [email protected]: Imagem de uma bela torta MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789Content-Transfer-Encoding: quoted-printableContent-Type: text/plain
caro Bernardo, Anexa a imagem de uma torta deliciosa.--98766789Content-Transfer-Encoding: base64Content-Type: image/jpeg
base64 encoded data ..... ......................... ......base64 encoded data --98766789--
56
IMAP
➘ Usa o modo: “ler-e-guardar” que posibilita acessar mensagens de vários clientes;
➘ Mantém todas as mensagens em um único lugar: servidor;➘ Permite que o usuário organize suas msgs em pastas remotas
como se fosse locais;➘ IMAP mantém estado dos usuários durante as sessões:
➼ Nomes e pastas e mapeia os IDs das msgs e o nome das pastas;
57
Protocolo POP3
fase de autorização● comandos do cliente:
– user: declara nome– pass: senha
● servidor responde– +OK– -ERR
fase de transação, cliente:● list: lista números das msgs● retr: recupera msg por
número● dele: apaga msg● 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 ana S: +OK C: pass faminta S: +OK user successfully logged on
58
DNS: Domain Name System
Pessoas: muitos identificadores:– CPF, nome, no. da Identidade
hospedeiros, roteadores Internet :
– endereço IP (32 bit) - usado p/ endereçar datagramas
– “nome”, ex., solimoes.icomp.ufam.edu.br - usado por gente
P: como mapear entre nome e endereço IP?
Domain Name System:● base de dados distribuída
implementada na hierarquia de muitos servidores de nomes
● protocolo de camada de aplicação permite que hospedeiros, roteadores, servidores de nomes se comuniquem para resolver nomes (tradução endereço/nome)– note: função imprescindível da
Internet implementada como protocolo de camada de aplicação
– complexidade na borda da rede
59
DNS
● Roda sobre UDP e usa a porta 53
● Especificado nas RFCs 1034 e 1035 e atualizado em outras RFCs.
● Outros serviços:– apelidos para hospedeiros
(aliasing)– apelido para o servidor de
mails– distribuição da carga
60
Servidores de nomes DNS
A dinâmica de comunicação➘ Cliente faz requisição usado UDP;➘ Servidor responde após algum atraso.Por que não centralizar o DNS? mas antes...
● ponto único de falha● volume de tráfego● base de dados centralizada e distante● manutenção (da BD)
Não é escalável!
61
Servidores de nomes DNS
O Princípio: Nenhum servidor mantém todos os mapeamentos nome-para-endereço IP.
A dinâmica geral: ● Cliente DNS consulta servidor raiz;● Cliente DNS consulta servidor TLD;● Cliente DNS consulta servidor oficial.
62
Servidores de nomes DNS
servidores raiz(root DNS servers):– São 13 ao todo;– Conhecem endereços dos servidores TLD
64
Servidores de nomes DNS
servidores de nomes oficial(authoritative DNS servers):– responde por solicitações DNS para uma organização (amazon.com,
google.com);– guarda nome, endereço IP de hospedeiros;– pode realizar tradução nome/endereço.
servidor TLD(Top-Level Domain DNS servers): ➼ tem conhecimento de domínios de último nível(.com, .edu,
.gov, .org, e .net);➼ tem também conhecimento dos domínios de último nível do
tipo país(.br, .fr, .it, .uk, e .ca)
65
Mas e Mais...Servidor DNS Local
➘ Não pertence a hierarquia de servidores DNS;
➘ Cada provedor, empresa tem um servidor de nomes local (default);
● Pedido DNS de hospedeiro vai primeiro ao servidor de nomes local;
66
Exemplo simples do DNS
hospedeiro vod.icomp.ufam.edu.br requer endereço IP de www.cs.columbia.edu;
solicitantevod.icomp.ufam.edu.br
www.cs.columbia.edu
servidor de nomes raiz
servidor oficialdns.columbia.edu
servidor localmutum.ufam.edu.br
1
23
4
5
6
7
8
servidor TLD
67
Exemplo de DNS
Servidor TLD:● pode não conhecer o
servidor de nomes oficial
● pode conhecer servidor de nomes intermediário: a quem contatar para descobrir o servidor de nomes oficial
solicitantevod.icomp.ufam.edu.br
www.cs.columbia.edu
servidor localmutum.ufam.edu.br
1
2
56
7
4
servidor oficialcs.columbia.edu
servidor intermediáriosaell.cc.columbia.edu
3
10
servidor de nomes raiz
servidor TLD
9
8
68
Práticas: NSLOOKUP
● Determine o nome canônico do seu servidor de e-mail● Descubra o nome do servidor web do icomp● Realize, por 5 vezes, a resolução de www.google.com
– Quantos endereços IP diferentes foram informados nas suas consultas?
– Se foi mais de um, que tipo de serviço o DNS está prestando?
69
DNS: Tipos de Consultas
consulta recursiva:● transfere a
responsabilidade de resolução do nome para o servidor de nomes contatado
consulta interativa:● servidor consultado
responde com o nome de um servidor de contato
● “Não conheço este nome, mas pergunte para esse servidor”
protocolo DNS: mensagens de pedido e resposta, ambas com o mesmo formato de mensagem
cabeçalho de msg➘ identificação: ID de 16 bit
para pedido, resposta ao pedido usa mesmo ID
➘ flags:➼ pedido ou resposta➼ recursão desejada➼ recursão permitida➼ resposta é oficial
73
DNS: protocolo e mensagens
campos de nome, e de tipo num pedido
RRs em respostaao pedido
registros para outrosservidores oficiais
info adicional “relevante” que pode ser usada:
O caso da consulta de MX
74
Capítulo 2: Camada de Aplicação
Metas do capítulo: ● aspectos conceituais e de
implementação de protocolos de aplicação em redes– paradigma cliente
servidor– modelos de serviço
● aprender sobre protocolos através do estudo de protocolos populares do nível da aplicação
Mais metas do capítulo● protocolos específicos:
– HTTP– FTP– SMTP / POP3 / IMAP– DNS– P2P
● a programação de aplicações de rede– programação usando sockets
75
Arquitetura P2P Pura
● Não requer servidor sempre conectado
● Comunicação entre sistemas finais ocorre diretamente
● Pares estão conectados de forma intermitente e mudam de endereço IP
● Três tópicos:– Distribuição de Arquivo– Busca pela informação– Skype: Caso de Estudo
peer-peer
76
Tempo de distribuição do arquivo: C-S
us
u2d1 d2u1
uN
dN
Servidor
Rede(com banda abundante)
F● Servidor envia N cópias
sequencialmente:– NF/us segundos
● cliente i leva F/di segundos para efetuar download
Aumenta linearmente com N(para N grande)
= dcs = max { NF/us, F/min(di) }i
Tempo para distribuir F para N clientes usando Abordagem c-s
77
Distribuição de Arquivo: C-S vs P2P
Questão : Quanto tempo para distribuir um arquivo de UM servidor para N pares?
us
u2d1 d2u1
uN
dN
Servidor
Rede (com banda abundante)
Arquivo, tamanho F
us: banda de upload servidor
ui: banda de upload do par i
di: Banda de download do par i
78
Tempo de distribuição do arquivo: P2P
us
u2d1 d2u1
uN
dN
Servidor
Rede (com Banda abundante)
F● servidor deve enviar uma
cópia: F/us segundos ● cliente i leva F/di segundos
para realizar download● NF bits deve ser baixados
(agregado)❒ A taxa de upload do sistema: us + Σui
dP2P = max { F/us, F/min(di) , NF/(us + Σui) }i
79
C-S vs. P2P: ExemploTaxa upload dos Clientes = u, F/u = 1 hora, us = 10u, dmin ≥ us
80
Distribuição de Arquivo: BitTorrent
tracker: registra pares participam no torrent
torrent: grupo de pares trocando pedaços de arquivos
obtém listade pares
Troca de chunks
par
❒ Distribuição de arquivo P2P
81
BitTorrent (1)
Arquivo dividido em chunks de 256KB.● par junta-se ao torrent:
– Não possui chunks, mas irá acumulá-los ao longo do tempo– Registra-se no tracker para obter a lista de pares, conecta-se
ao subconj de pares (“vizinhos”)● Enquanto faz download, par faz upload de chunks para outros
pares. ● Pares podem entrar e sair● Uma vez que um par possui o arquivo inteiro, ele pode (egoísta)
sair ou (altruísta) permanecer
82
BitTorrent (2)
Obtendo Chunks● Em qq instante de tempo,
diferentes pares possuem diferentes subconjuntos de chunks do arquivo;
● periodicamente, um par(Alice) pergunta para cada vizinho pela lista de chunks que eles possuem;
● Alice envia requisições para os chunks que estão faltando– Os raros têm prioridade
Enviando Pedaços: tit-for-tat❒ Alice envia chunks para quatro
vizinhos atualmente enviando a ela chunks a altas taxas Re-avalia os top 4 a cada 10
segs.❒ Cada 30 segs: seleciona
randomicamente outro par, inicia envio de chunks O novo par escolhido pode se
juntar aos “top 4” “optimistically unchoke”
83
BitTorrent: Tit-for-tat, como funciona???
84
BitTorrent: Tit-for-tat(1) Alice “optimistically unchokes” Bob(2) Alice torna-se um dos fornecedores “top 4” de Bob; Bob mostra reciprocidade(3) Bob torna-se um dos fornecedores “top 4” de Alice
Com altas taxas de upload,pode-se achar melhores parceiros trocadores & obter o arquivo mais rapidamente.
85
P2P Qualquer, Técnicas para localizar informação
86
P2P: buscando informação
Compartilhamento de arq. (eg e-mule)
● Índice dinamicamente registra localização dos arquivos que os pares compartilham.
● Pares precisam dizer ao sistema o que está sendo compartilhado.
● Pares buscam no índice para determinar onde os arquivos podem ser encontrados
Mensagem Instantânea ● Índice mapeia nomes para
localizações.● Quando usuário começa
uma aplicação IM, a aplicação precisa informar ao índice a sua localização
● Pares buscam no índice para determinar o endereço IP do usuário.
Sistema de índice do P2P: mapeia info para localização do par(localização = Endereço IP & número de porta)
87
P2P: diretório centralizado
“Napster” projeto original 1) Quando um dos pares se
conecta, ele informa ao servidor central :
– Endereço IP– conteúdo
2) Alice procura por “Escreve ai, by Luan Vesgo Santana”
3) Alice requisita o arquivo de Bob
Servidor de diretório
centralizadopares
Alice
Bob
1
1
1
12
3
88
P2P: problemas com diretórios centralizados● Ponto único de falha –
queda do diretório significa inviabilidade do sistema;
● Gargalo de desempenho – limitado pelo recursos do servidor;
● Fácil identificar violação dos direitos autorais e punir dono do serviço;
transferência de arquivo é descentralizada, mas localização de conteúdo é totalmente centralizada
89
P2P: Inundação de consultas (query flooding)
● Completamente distribuído– Sem servidor central
● Usado pelo Gnutella;
● Cada par indexa somente arquivos que tem para compartilhar;
A rede sobreposta: grafo● A aresta entre um par X e Y se existe uma conexão TCP;● Todos os pares ativos e as arestas forma a rede sobreposta;● Aresta: enlace virtual (não físico); ● Um par conecta-se com < 10 vizinhos na rede sobreposta.
90
P2P: consulta por inundação
Query
QueryHit
Query
Query
QueryHit
Query
Query
QueryHit
❒ Mensagem com a consultaenviada sobre conexõesTCP existentes❒ Pares repassammensagem consulta❒ Respostaenviada pelo caminhoreverso
Escalabilidade:limitar escopoda inundação
91
P2P: chegada (bootstrap)
join
1. O par que chega(ALICE) deve encontrar outro par na rede Gnutella: usa lista de pares candidatos
2. Alice tenta sequencialmente estabelecer conexão TCP com pares candidatos até que uma conexão seja aberta(BOB)
3. Inundação: Alice envia Mensagens Ping para Bob; Bob repassa mensagem Ping para seus vizinhos de rede (que repassam para os vizinhos deles….)
❒ Pares que recebem mensagens Ping respondem para Alice com mensagem Pong
1. Alice recebe várias mensagens Pong, e pode então estabelecer conexões TCP adcionais
92
P2P: mais...inundação
Prós● pares possuem
responsabilidades semelhantes;
● Extremamente descentralizado;
Contras● Tráfego excessivo de
consultas● Raio da consulta: pode
não ser o suficiente para obter o conteúdo, quando este existir;
● O líder do grupo conhece o conteúdo em nós liderados;
● Os pares consultam o líder do grupo;
● O par líder pode consultar outros nós líder.
Par qualquer
Par líder do grupo
Relacionamento de vizinhançana rede de cobertura
94
Mais sobre diretório descentralizado
Vantagens da abordagem● Nenhum servidor centralizado;
– O serviço de localização é distribuído entre os pares – Mais dificuldade de se ter falhas;
Desvantagem da abordagem● Necessário nó de entrada● O líder do grupo pode ficar sobrecarregado;
95
P2P Estudo de Caso: Skype
● Aplicação P2P: pares de usuários se comunicando.
● Protocolo proprietário (engenharia reversa)
● Overlay hierarquica com Super Nós
● Índice mapeia usernames para endereço IP; distribuído nos Super nós
Clientes Skype (SC)
Supernós (SN)
Skype login no servidor
96
Pares são repassadores
● Problema quando Alice e Bob estão atrás de “NATs”. – NAT impede que um par de
fora da rede inicie uma chamada um um par que esteja dentro da rede
● Solução:– Usando SN de Alice e Bob,
repassador é escolhido– Cada par inicia uma sessão
com o repassador. – Pares podem se comunicar,
passando pelo NAT, através do repassador
97
Questões
● O que é uma rede de sobreposição em um sistema de compartilhamento de arquivos P2P? E;a inclui roteadores ? O que são as arestas da rede de sobreposição?
● Na sua opinião, por que as aplicações de compartilhamento de arquivos P2P são tão populares? Será por que distribuem música e vídeo gratuitamente ou por que seu número imenso de servidores atende eficientemente uma demanda massiva de megabytes? Ou será pelas duas razões?
98
Cache WWW (servidor-procurador)
➘ usuário configura browser: acessos WWW via Proxy
➘ cliente envia todos pedidos http ao Proxy
➼ se objeto estiver na cache do Proxy, este o devolve imediatamente na resposta http
➼ senão, solicita objeto do servidor de origem, depois devolve resposta http ao cliente
Meta: atender pedido do cliente sem envolver servidor de origem
clienteServidor-
Proxy
cliente
pedido http
pedido http
resposta http
resposta http
pedido http
resposta http
pedido httpresposta http
Servidorde origem
Servidorde origem
99
Mais sobre Web cache➘ Cache atua tanto como cliente
quanto como servidor;➼ Cache pode fazer
verificação no cabeçalho HTTP usando o campo If-modified-since :
➘ Tipicamente as caches web são instalados em ISPs (universidades, companhias, ISP residencial)
Por quê usar cache WWW?➘ tempo de resposta menor:
cache “mais próximo” do cliente
➘ diminui tráfego aos servidores distantes
➼ muitas vezes o enlace que liga a rede da instituição ou do provedor à Internet é um gargalo.
100
Exemplo de Cache (1)
Suposições● Tamanho médio do objeto = 100,000
bits● Taxa média de requisição do browser
da instituição para os servidores de origem = 15/seg
● Atraso do roteador da instituição para qualquer servidor de origem e de volta para o roteador = 2 seg
Conseqüências● Utilização da LAN = 15%● Utilização do enlace de acesso = 100%● Atraso total = atraso Internet + atraso de
acesso + atraso LAN = 2 seg + minutos + milisegundos
Servidoresde origem
Internet pública
rede dainstituição LAN 10 Mbps
enlace de accesso 1.5 Mbps
cache dainstituição
101
Exemplo cache (2)
Solução possível● Aumentar a banda do enlace de
acesso para 10 MbpsConseqüências
● utilização LAN = 15%● Utilização do enlace de acesso = 15%● Atraso total = atraso Internet +
atraso de acesso + atraso LAN = 2 sec + msecs + msecs
● Geralmente um upgrade de link é custo$o
Servidoresde origem
Internet pública
rede dainstituição LAN 10 Mbps
enlace de accesso 10 Mbps
cache dainstituição
102
Exemplo cache(3)
Instala cache● Suponha que a taxa de hits é .4
Conseqüência● 40% das requisições são satisfeitas
pela cache;● Utilização do enlace de acesso
reduzido para 60%, resultando em atrasos desprezíveis;
● Atraso total = atraso Internet + atraso de acesso + atraso = .6*2 sec + .6*.01 seg + millisegundos < 1.3 seg
Servidoresde origem
Internet pública
rede dainstituição LAN 10 Mbps
enlace de accesso 1.5 Mbps
cache dainstituição
103
Programação com sockets
API Sockets ● apareceu no BSD4.1 UNIX em
1981● são explicitamente criados,
usados e liberados por apls● paradigma cliente/servidor● dois tipos de serviço de
transporte via API Sockets– datagrama não confiável – fluxo de bytes, confiável
uma interface (uma “porta”), local ao hospedeiro, criada por e pertencente à aplicação, e controlado pelo SO, através da qual um processo de aplicação pode tanto enviar como receber mensagens para/de outro processo de aplicação (remoto ou local)
socket
Meta: aprender a construir aplicações cliente/servidor que se comunicam usando sockets
104
Programação com sockets usando TCP
Socket: uma porta entre o processo de aplicação e um protocolo de transporte fim-a-fim (UDP ou TCP)
Serviço TCP: transferência confiável de bytes de um processo para outro
Cliente deve contactar servidor● processo servidor deve antes
estar em execução● servidor deve antes ter criado
socket (porta) que aguarda contato do cliente
Cliente contacta servidor para:● criar socket TCP local ao cliente● especificar endereço IP, número
de porta do processo servidor
● Quando cliente cria socket: TCP do cliente estabelece conexão com TCP do servidor
● Quando contatado pelo cliente, o TCP do servidor cria socket novo para que o processo servidor possa se comunicar com o cliente– permite que o servidor converse
com múltiplos clientes
TCP provê transferência confiável, ordenada de bytes
(“pipe”) entre cliente e servidor
ponto de vista da aplicação
Programação com sockets usando TCP
106
Comunicação entre sockets
107
Exemplo de aplicação cliente-servidor
➘ cliente lê linha da entrada padrão (fluxo doUsuário), envia para servidor via socket (fluxo paraServidor)
➘ servidor lê linha do socket➘ servidor converte linha para
letras maiúsculas, devolve para o cliente
➘ cliente lê linha modificada do socket (fluxo doServidor), imprime-a
par
a S
ervi
dor
para rede da rede
doS
erv
ido
r
doU
suá
rio
teclado monitor
Process
clientSocket
TCPsocket
fluxo de entrada: seqüência de bytespara dentro do processo
fluxo de saída: seqüência de bytes para fora do processo
processocliente
TCP socketcliente
108
Interações cliente/servidor usando o TCP
aguarda chegada de pedido de conexãosocketConexão =socketRecepção.accept()
cria socket,porta=x, parareceber pedido:
socketRecepção = ServerSocket ()
cria socket,abre conexão a nomeHosp, porta=xsocketCliente =
Socket()
fechasocketConexão
lê resposta desocketCliente
fechasocketCliente
Servidor (executa em nomeHosp) Cliente
Envia pedido usandosocketClientelê pedido de
socketConexão
escreve resposta para socketConexão
TCP setup da conexão
109
Exemplo: cliente Java (TCP)
import java.io.*; import java.net.*; class ClienteTCP {