Redes de Computadores 1
Prof. Marcelo Diniz
Fonte: http://wps.aw.com/br_kurose_rede_1/
2b: Camada de Aplicação
1
Capítulo 2: Roteiro
r 2.1 Princípios de
r
r
r
r
aplicações de rede
2.2 A Web e o HTTP
2.3 Transferência de
arquivo: FTP
2.4 Correio Eletrônico
na Internet
2.5 DNS: o serviço de
diretório da Internet
r 2.6 Aplicações P2P
r 2.7 Programação de
sockets com TCP
r 2.8 Programação de
sockets com UDP
r 2.9 Construindo um
servidor Web simples
2b: Camada de Aplicação
2
DNS: Domain Name System
Pessoas: muitos
identificadores:
m
m
r
base de dados distribuída
r
protocolo de camada de
aplicação permite que
CPF, nome, no. da
Identidade
hospedeiros, roteadores
Internet :
m
Domain Name System:
endereço IP (32 bit) usado p/ endereçar
datagramas
“nome”, ex.,
jambo.ic.uff.br - usado
por gente
P: como mapear entre
nome e endereço IP?
implementada na hierarquia de
muitos servidores de nomes
hospedeiros, roteadores,
servidores de nomes se
comuniquem para resolver nomes
(tradução endereço/nome)
m nota: função imprescindível
da Internet implementada
como protocolo de camada de
aplicação
m complexidade na borda da
rede
2b: Camada de Aplicação
3
DNS (cont.)
Serviços DNS
r Tradução de nome de
hospedeiro para IP
r Apelidos para
hospedeiros (aliasing)
m
Nomes canônicos e apelidos
r Apelidos para
servidores de e-mail
r Distribuição de carga
m
Por que não centralizar o
DNS?
r ponto único de falha
r volume de tráfego
r base de dados
centralizada e distante
r manutenção (da BD)
Não é escalável!
Servidores Web replicados:
conjunto de endereços IP
para um nome canônico
2b: Camada de Aplicação
4
Base de Dados Hierárquica e
Distribuída
Root DNS Servers
com DNS servers
yahoo.com
amazon.com
DNS servers DNS servers
org DNS servers
pbs.org
DNS servers
edu DNS servers
poly.edu
DNS servers
umass.edu
DNS servers
Cliente quer IP para www.amazon.com; 1a aprox:
r Cliente consulta um servidor raiz para encontrar um
servidor DNS .com
r Cliente consulta servidor DNS .com para obter o
servidor DNS para o domínio amazon.com
r Cliente consulta servidor DNS do domínio amazon.com
para obter endereço IP de www.amazon.com
2b: Camada de Aplicação
5
DNS: Servidores raiz
r
r
procurado por servidor local que não consegue resolver o
nome
servidor raiz:
m procura servidor oficial se mapeamento desconhecido
m obtém tradução
m devolve mapeamento ao servidor local
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
k RIPE London (also Amsterdam,
g US DoD Vienna, VA
Frankfurt)
h ARL Aberdeen, MD
i
Autonomica, Stockholm
j Verisign, ( 11 locations)
(plus 3 other locations)
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA (and 17 other locations)
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
13 servidores de
nome raiz em
todo o mundo
2b: Camada de Aplicação
6
Servidores TLD e Oficiais
r Servidores Top-level domain (TLD) :
m servidores DNS responsáveis por domínios com, org, net,
edu, etc, e todos os domínios de países como br, uk, fr, ca,
jp.
m Network Solutions mantém servidores para domínio .com
m NIC.br (Registro .br) para domínio .br
r Servidores oficiais:
m servidores DNS das organizações, provendo mapeamentos
oficiais entre nomes de hospedeiros e endereços IP para os
servidores da organização (e.x., Web e correio).
m Podem ser mantidos pelas organizações ou pelo provedor de
acesso
2b: Camada de Aplicação
7
Domínios
Registrados
por DPN
(Domínio de
Primeiro Nível)
28/09/09
2b: Camada de Aplicação
8
Servidor de Nomes Local
r Não pertence necessariamente à hierarquia
r Cada ISP (ISP residencial, companhia,
universidade) possui um.
m
Também chamada do “servidor de nomes
default”
r Quanto um hospedeiro faz uma consulta
DNS, a mesma é enviada para o seu
servidor DNS local
m
Atua como um intermediário, enviando consultas
para a hierarquia.
2b: Camada de Aplicação
9
Exemplo de resolução
de nome pelo DNS
r Hospedeiro em
cis.poly.edu quer
endereço IP para
gaia.cs.umass.edu
consulta interativa:
r servidor consultado
responde com o nome
de um servidor de
contato
r “Não conheço este
nome, mas pergunte
para esse servidor”
servidor raiz
2
3
servidor TLD
4
5
servidor local
dns.poly.edu
1
8
7
6
servidor oficial
dns.cs.umass.edu
solicitante
cis.poly.edu
gaia.cs.umass.edu
2b: Camada de Aplicação
10
Exemplo de resolução
servidor DNS raiz
de nome pelo DNS
consulta recursiva:
r
r
2
transfere a
7
responsabilidade de
resolução do nome
para o servidor de
nomes contatado
servidor DNS local
dns.poly.edu
carga pesada?
1
solicitante
3
6
servidor TLD
5
4
8
servidor DNS oficial
dns.cs.umass.edu
cis.poly.edu
gaia.cs.umass.edu
2b: Camada de Aplicação
11
DNS: uso de cache, atualização de dados
r uma vez que um servidor qualquer aprende um
mapeamento, ele o coloca numa cache local
m entradas na cache são sujeitas a temporização
(desaparecem depois de um certo tempo)
m Servidores TLD tipicamente armazenados no
cache dos servidores de nomes locais
• Servidores raiz acabam não sendo visitados com
muita freqüência
r estão sendo projetados pela IETF mecanismos
de atualização/notificação dos dados
m
RFCs 2136, 3007, 4033/4/5
m
http://www.ietf.org/html.charters/dnsext-charter.html
2b: Camada de Aplicação
12
Registros DNS
DNS: BD distribuído contendo registros de recursos (RR)
formato RR: (nome,
valor, tipo, sobrevida)
r Tipo=CNAME
r Tipo=A
m nome é nome alternativo
m nome é nome de hospedeiro
(alias) para algum nome
m valor é o seu endereço IP
“canônico” (verdadeiro)
r Tipo=NS
m valor é o nome
m nome é domínio (p.ex.
canônico
foo.com.br)
m
valor é endereço IP de
servidor oficial de nomes
para este domínio
r Tipo=MX
m nome é domínio
m valor é nome do servidor de
correio para este domínio
2b: Camada de Aplicação
13
DNS: protocolo e mensagens
protocolo DNS: mensagens de pedido e resposta,
ambas com o mesmo formato de mensagem
cabeçalho de msg
r
r
identificação: ID de 16 bit
para pedido, resposta ao
pedido usa mesmo ID
flags:
m pedido ou resposta
m recursão desejada
m recursão permitida
m resposta é oficial
2b: Camada de Aplicação
14
DNS: protocolo e mensagens
2b: Camada de Aplicação
15
Inserindo registros no DNS
r Exemplo: acabou de criar a empresa “Network
Utopia”
r Registra o nome netutopia.com.br em uma entidade
registradora (e.x., Registro.br)
m
m
Tem de prover para a registradora os nomes e endereços IP
dos servidores DNS oficiais (primário e secundário)
Registradora insere dois RRs no servidor TLD .br:
(netutopia.com.br, dns1.netutopia.com.br, NS)
(dns1.netutopia.com.br, 212.212.212.1, A)
r Põe no servidor oficial um registro do tipo A para
www.netutopia.com.br e um registro do tipo MX para
netutopia.com.br
r Como as pessoas vão obter o endereço IP do seu
site?
2b: Camada de Aplicação
16
Capítulo 2: Roteiro
r 2.1 Princípios de
r
r
r
r
aplicações de rede
2.2 A Web e o HTTP
2.3 Transferência de
arquivo: FTP
2.4 Correio Eletrônico
na Internet
2.5 DNS: o serviço de
diretório da Internet
r 2.6 Aplicações P2P
r 2.7 Programação de
sockets com TCP
r 2.8 Programação de
sockets com UDP
r 2.9 Construindo um
servidor Web simples
2b: Camada de Aplicação
17
Arquitetura P2P pura
r
sem servidor sempre ligado
r
sistemas finais arbitrários se
comunicam diretamente
pares estão conectados de par-par
forma intermitente e mudam
seus endereços IP
r
Três tópicos:
r
m
m
m
Distribuição de arquivos
Busca de informações
Estudo de caso: Skype
2b: Camada de Aplicação
18
Distribuição de Arquivo: C/S x P2P
Pergunta: Quanto tempo leva para distribuir um
arquivo de um servidor para N pares?
us: banda de upload
do servidor
Servidor
Arquivo,
tamanho F
us
dN
uN
u1
d1
u2
ui: banda de upload
do par i
d2
di: banda de
download do par i
Rede (com
banda abundante)
2b: Camada de Aplicação
19
Tempo de distribuição do arquivo: C/S
r servidor envia
seqüencialmente N
cópias:
m
Tempo = NF/us
r cliente i leva F/di
Servidor
F
us
dN
u1 d1 u2
d2
Rede (com
banda abundante)
uN
para o download
Tempo para distribuir F
para N clientes usando
abordagem cliente/servidor
= dcs = max { NF/us, F/min(di)
i
}
cresce linearmente com N
(para grandes N)
2b: Camada de Aplicação
20
Tempo de distribuição do arquivo: P2P
r servidor deve enviar
uma cópia: F/us
r cliente i leva F/di para o
download
r NF bits devem ser
Servidor
F
us
dN
d2
Rede (com
banda abundante)
uN
baixados (agregado)
r
u1 d1 u2
taxa de upload mais rápida: us +
Su
i
dP2P = max { F/us, F/min(d
i) , NF/(us +
i
Su ) }
i
2b: Camada de Aplicação
21
Cliente/Servidor x P2P: exemplo
Taxa de upload do cliente= u, F/u = 1 hora, us = 10u, dmin ≥ us
Minimum Distribution Time
3.5
P2P
Client-Server
3
2.5
2
1.5
1
0.5
0
0
5
10
15
20
25
30
35
N
2b: Camada de Aplicação
22
Distribuição de arquivo: BitTorrent
r
Distribuição de arquivo P2P
torrente: grupo de
tracker: registra pares
pares trocando
pedaços de um arquivo
Participantes de uma torrente
obtém lista
dos pares
troca de
pedaços
peer
2b: Camada de Aplicação
23
BitTorrent (1)
r arquivo dividido em
r
r
r
r
pedaços de
256KB.
par que se une à torrente:
m não tem nenhum pedaço, mas irá acumulá-los com o
tempo
m registra com o tracker para obter lista dos pares,
conecta a um subconjunto de pares (“vizinhos”)
enquanto faz o download, par carrega pedaços para
outros pares
Pares podem entrar e sair
quando o par obtém todo o arquivo, ele pode
(egoisticamente) sair ou permanecer
2b: Camada de Aplicação
(altruisticamente)
24
BitTorrent (2)
Obtendo Pedaços
r num determinado instante,
pares distintos possuem
diferentes subconjuntos
dos pedaços do arquivo
r periodicamente, um par
(Alice) pede a cada vizinho
a lista de pedaços que eles
possuem
r Alice envia pedidos para os
pedaços que ainda não tem
m
Primeiro os mais raros
Enviando pedaços: toma lá, dá cá!
r Alice envia pedaços para
quatro vizinhos que estejam
lhe enviando pedaços na taxa
mais elevada
m
r
Reavalia os 4 mais a cada 10 segs
a cada 30 segs: seleciona
aleatoriamente outro par,
começa a enviar pedaços
m
m
o par recém escolhido pode se
unir aos 4 mais
“optimistically unchoke”
2b: Camada de Aplicação
25
BitTorrent: toma lá, dá cá!
(1) Alice “optimistically unchokes” Bob
(2) Alice se torna um dos quatro melhores provedores de Bob;
Bob age da mesma forma
(3) Bob se torna um dos quatro melhores provedores de Alice
Com uma taxa de upload mais alta,
pode encontrar melhores
parceiros de troca e obter o
arquivo mais rapidamente!
2b: Camada de Aplicação
26
P2P: busca por informação
Índice no sistema P2P: mapeia informação à localização de um par
(localização = endereço IP & número de porta).
Compartilhamento de arquivos
(ex: e-mule)
r O índice registra
dinamicamente as
localizações dos arquivos
compartilhados pelos pares
r Pares devem informar ao
índice os conteúdos que
possuem
r Pares buscam no índice
para descobrir onde pode
encontrar os arquivos.
Mensagens instantâneas
r O índice mapeia os nomes
de usuários a locais.
r Quando o usuário inicia uma
aplicação de MI, ele deve
informar ao índice qual é a
sua localização atual.
r Pares buscam no índice o
endereço IP de um contato.
2: Application Layer
27
Compartilhamento de arquivos
P2P
r Alice escolhe um dos
Exemplo
r Alice executa aplicação
cliente P2P no seu notebook
r Periodicamente ela se
conecta à Internet e
recebe um novo endereço
IP a cada conexão
r Pede a música “Hey Jude”
r A aplicação apresenta uma
lista de outros parceiros
que possuem uma cópia de
Hey Jude.
parceiros, Bob.
r O arquivo é copiado do PC
de Bob para o notebook de
Alice: HTTP
r Enquanto Alice está
baixando a música, outros
usuários podem estar
pegando arquivos do seu
computador.
r O parceiro de Alice é tanto
um cliente Web como um
servidor Web temporário.
Todos os parceiros são
servidores = altamente
escalável!
2b: Camada de Aplicação
28
P2P: diretório centralizado
Projeto original do
Napster
Bob
servidor de diretório
centralizado
1
1) Quando um parceiro
conecta ele informa ao
servidor central o seu:
m
m
endereço IP
conteúdo
2) Alice consulta sobre a
música “Hey Jude”
3) Alice solicita o arquivo a
Bob
parceiros
1
3
1
2
1
Alice
2b: Camada de Aplicação
29
P2P: problemas com diretório
centralizado
r Ponto único de falha
r Gargalo de
desempenho
r Violação de Direitos
Autorais
a transferência de arquivo
é descentralizada, mas a
localização do conteúdo é
altamente centralizada.
2b: Camada de Aplicação
30
Inundação de consultas
r Completamente
distribuído
m
Sem servidor central
r Protocolo de domínio
público
r Vários clientes
Gnutella implementam
o protocolo
Rede sobreposta: grafo
r Aresta entre pares X e Y
se existe uma conexão
TCP
r Todos os pares ativos e
arestas formam a rede de
sobreposição
r Aresta não é um enlace
físico
r Um par vai estar
conectado tipicamente
com < 10 vizinhos na rede
de sobreposição
2b: Camada de Aplicação
31
Inundação de consulta
r Mensagem de
consulta enviada
pelas conexões TCP
existentes
r Pares repassem
mensagem de
consulta
r Resposta sobre
item encontrado
enviada pelo
caminho reverso
Transferência arq:
HTTP
Consulta
Item achado
Consulta
Item achado
Escalabilidade:
Inundação com
escopo limitado
2b: Camada de Aplicação
32
Gnutella: junção do Par
Um par X se juntando deve encontrar algum outro
par na rede Gnutella: usa lista de pares
candidatos
2. X tenta criar conexões TCP com os pares na lista
seqüencialmente até estabelecer conexão com Y
3. X envia mensagem Ping para Y; Y repassa a
mensagem Ping
4. Todos os pares recebendo a mensagem Ping
respondem com uma mensagem Pong
5. X recebe várias mensagens Pong. Ele pode então
estabelecer conexões TCP adicionais
Saída do par: veja problema no livro texto!
1.
2b: Camada de Aplicação
33
Overlay Hierárquico
r Cada parceiro é um
líder de grupo ou está
alocado a um líder de
grupo
m
m
Conexão TCP entre cada
par e o seu líder de
grupo
Conexões TCP entre
alguns pares de líderes
de grupos
r O líder de um grupo
mantém registro sobre
o conteúdo de todos os
seus filhos
ordinary peer
group-leader peer
neighoring relationships
in overlay network
2b: Camada de Aplicação
34
Estudo de caso P2P: Skype
Skype clients (SC)
r
r
r
r
inerentemente P2P:
comunicação entre pares
de usuários.
protocolo proprietário da
camada de aplicação
(inferido através de
engenharia reversa)
overlay hierárquico com
SNs
Índice mapeia nomes dos
usuários a endereços IP;
distribuído através dos
SNs
Skype
login server
Supernode
(SN)
2: Application Layer
35
Pares como intermediários
(relays)
r Problema quando tanto
Alice como Bob estão
atrás de “NATs”.
m
O NAT impede que um
par externo inicie uma
chamada com um par
interno
r Solução:
m
m
m
Intermediário é escolhido,
usando os SNs de Alice e de
Bob.
Cada par inicia sessão com o
intermediário
Pares podem se comunicar
através de NATs através do
intermediário
2: Application Layer
36
Capítulo 2: Roteiro
r 2.1 Princípios de
r
r
r
r
aplicações de rede
2.2 A Web e o HTTP
2.3 Transferência de
arquivo: FTP
2.4 Correio Eletrônico
na Internet
2.5 DNS: o serviço de
diretório da Internet
r 2.6 Aplicações P2P
r 2.7 Programação de
sockets com TCP
r 2.8 Programação de
sockets com UDP
r 2.9 Construindo um
servidor Web simples
2b: Camada de Aplicação
37
Programação com sockets
Meta: aprender a construir aplicações cliente/servidor
que se comunicam usando sockets
socket
API Sockets
uma interface (uma
r
r
r
r
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
m
m
datagrama não confiável
fluxo de bytes, confiável
“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)
2b: Camada de Aplicação
38
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
controlado pelo
desenvolvedor de
aplicação
controlado
pelo sistema
operacional
processo
processo
socket
TCP com
buffers,
variáveis
estação ou
servidor
internet
socket
TCP com
buffers,
variáveis
controlado pelo
desenvolvedor de
aplicação
controlado
pelo sistema
operacional
estação ou
servidor
2b: Camada de Aplicação
39
Programação com sockets usando TCP
Cliente deve contactar servidor r
r processo servidor deve antes
estar em execução
r servidor deve antes ter
criado socket (porta) que
aguarda contato do cliente
Cliente contacta servidor para:
r criar socket TCP local ao
cliente
r especificar endereço IP,
número de porta do processo
servidor
r Quando cliente cria socket:
TCP cliente cria 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
m permite que o servidor
converse com múltiplos clientes
m Endereço IP e porta origem
são usados para distinguir os
clientes (mais no cap. 3)
ponto de vista da aplicação
TCP provê transferência
confiável, ordenada de bytes
(“tubo”) entre cliente e servidor
2b: Camada de Aplicação
40
Comunicação entre sockets
2b: Camada de Aplicação
41
Capítulo 2: Roteiro
r 2.1 Princípios de
r
r
r
r
aplicações de rede
2.2 A Web e o HTTP
2.3 Transferência de
arquivo: FTP
2.4 Correio Eletrônico
na Internet
2.5 DNS: o serviço de
diretório da Internet
r 2.6 Aplicações P2P
r 2.7 Programação de
sockets com TCP
r 2.8 Programação de
sockets com UDP
r 2.9 Construindo um
servidor Web simples
2b: Camada de Aplicação
42
Programação com sockets usando UDP
UDP: não tem “conexão” entre
cliente e servidor
r não tem “handshaking”
r remetente coloca
explicitamente endereço IP
e porta do destino
r servidor deve extrair
endereço IP, porta do
remetente do datagrama
recebido
ponto de vista da aplicação
UDP provê transferência
não confiável de grupos
de bytes (“datagramas”)
entre cliente e servidor
UDP: dados transmitidos
podem ser recebidos fora
de ordem, ou perdidos
2b: Camada de Aplicação
43
Interações cliente/servidor usando o UDP
Servidor (executa em nomeHosp)
cria socket,
porta=x, para
pedido que chega:
socketServidor =
DatagramSocket()
lê pedido do
socketServidor
escreve resposta
ao socketServidor
especificando endereço
IP, número de porta
do cliente
Cliente
cria socket,
socketCliente =
DatagramSocket()
cria, endereça (nomeHosp, porta=x,
envia pedido em datagrama
usando socketCliente
lê resposta do
socketCliente
fecha
socketCliente
2b: Camada de Aplicação
44
Exemplo: Cliente Java (UDP)
UDP
2b: Camada de Aplicação
45
Servidor UDP
2b: Camada de Aplicação
46
Capítulo 2: Roteiro
r 2.1 Princípios de
r
r
r
r
aplicações de rede
2.2 A Web e o HTTP
2.3 Transferência de
arquivo: FTP
2.4 Correio Eletrônico
na Internet
2.5 DNS: o serviço de
diretório da Internet
r 2.6 Aplicações P2P
r 2.7 Programação de
sockets com TCP
r 2.8 Programação de
sockets com UDP
r 2.9 Construindo um
servidor Web simples
2b: Camada de Aplicação
47
Servidor Web Simples
r Funções do servidor Web:
m
m
m
m
m
Trata apenas um pedido HTTP por vez
Aceita e examina o pedido HTTP
Recupera o arquivo pedido do sistema de
arquivos do servidor
Cria uma mensagem de resposta HTTP
consistindo do arquivo solicitado precedido por
linhas de cabeçalho
Envia a resposta diretamente ao cliente.
2b: Camada de Aplicação
48