Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso de
Redes de Computadores
2010
Captulo 2
Camada de Aplicao
Conceitos
Sistemas finais.
Trocam mensagens para
implementar aplicao.
Exemplo:
Correio eletrnico,
Servidor
transferncia de arquivos,
WWW, login remoto, VoIP, aplicao
aplicao
transporte
etc... transporte
rede
rede
enlace
enlace fsica
fsica
Cliente
Protocolos de aplicao
Protocolo da camada de aplicao:
No a aplicao.
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 logicamente entre si, trocando mensagens atravs da rede de
computadores.
As regras.
Determinar quando e como um processo emite e responde mensagens.
Servidor
Paradigma cliente-servidor
Aplicao de rede tpica tem duas
aplicao
partes: cliente e servidor transporte
rede
enlace
fsica
pedido
resposta
aplicao
transporte
rede
enlace
fsica
11
12
13
14
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
16
17
Os principais protocolos de
aplicao
18
WWW
Agente de usurio para
Pgina WWW:
WWW = browser:
Consiste de objetos
MS Internet Explorer.
Endereada por um URL:
Universal Resource Locator. Netscape Communicator.
Quase todas as pginas Servidor para WWW se
WWW consistem de: chama servidor
Pgina base HTML, e
WWW:
Vrios objetos referenciados.
Apache (Open Software).
URL tem duas partes:
MS Internet Information
nome do host, e nome de Server (IIS).
caminho.
adriano.acmesecurity.org/themes/noprob/logo_cnpq.png
19
20
21
tempo Continua
22
tempo
E ento, continua...
23
A maioria de browsers
usa conexes TCP paralelas.
24
25
26
27
28
29
30
linha do pedido
(comandos GET, GET /dir/page.html HTTP/1.1
POST, HEAD) User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
linhas do Accept-language:fr
cabealho
32
33
34
35
Vrios formatos
listas de bullets, listas ordenadas, listas de definio
tabelas
Frames
Etc... Etc...
36
GET/POST
formulrio
cliente servidor Sistema de
WWW resposta:
WWW informao
HTML 37
Web: autenticao
Autenticao: controle de acesso
ao servidor. cliente servidor
Sem estado: cliente deve apresentar
autorizao em cada pedido. msg de pedido http comum
Autorizao: tipicamente nome e 401: authorization req.
senha. WWW authenticate:
authorization: linha de
cabealho no pedido.
msg de pedido http comum
Se no for apresentada + Authorization:line
autorizao, servidor nega
acesso, e coloca no cabealho da msg de resposta http comum
resposta
WWW authenticate:
msg de pedido http comum
Browser: cache nome e senha + Authorization:line
para evitar que sejam pedidos ao tempo
msg de resposta http comum
usurio a cada acesso.
38
Web: cookies
cliente servidor
Servidor envia cookie ao
cliente na msg de resposta msg de pedido http comum
Set-cookie: 1678453 resposta http comum+
Cliente apresenta cookie Set-cookie: #
nos pedidos posteriores
cookie: 1678453 msg de pedido http comum
Ao
Servidor casa o cookie cookie: #
apresentado com a info especfica
msg de resposta http comum do cookie
guardada no servidor.
Autenticao.
Lembrando msg de pedido http comum Ao
preferncias do cookie: # especfica
usurio, opes
msg de resposta http comum do cookie
anteriores, etc
39
cliente servidor
41
42
transferncia
Interface cliente do arquivo FTP
do usurio FTP
servidor
FTP
usurio
na sistema de sistema de
estao arquivos arquivos
local remoto
43
44
45
46
47
fila de
Correio Eletrnico (1) mensagens
de sada
caixa de
agente correio do usurio
de
Trs grandes componentes: usurio
servidor
Agentes de usurio: de correio
Mail User Agent (MUA).
SMTP
Agente de transporte: servidor
de correio
Servidores de correio SMTP
Mail Transport Agent (MTA).
Protocolo de correio:
SMTP
agente
servidor de
Simple Mail Transfer usurio
de correio
Protocol (SMTP).
agente
de
usurio
agente
de
usurio
48
fila de
Correio Eletrnico (2) mensagens
de sada
caixa de
agente correio do usurio
MUA - Agente de Usurio de
usurio
Conhecido como leitor de e- servidor agente
de correio de
mail. usurio
o lado cliente. SMTP
servidor
Compor, editar, ler mensagens agente
de correio
de correio SMTP de
usurio
Exemplo: Eudora, Outlook,
elm, Pegasus, Netscape SMTP
agente
Messenger, etc... servidor de
Mensagens de sada e chegada de correio usurio
so armazenadas no servidor.
agente
de
usurio
agente
de
usurio
49
51
52
telnet nomedoservidor.algumlugar.br 25
Observe a resposta 220 do servidor
Entre comandos HELO, MAIL FROM, RCPT TO,
DATA, QUIT, HELP.
53
SMTP: detalhes
Exerccio: faa uma comparao
SMTP usa conexes persistentes. entre o SMTP e o http.
SMTP requer que a mensagem HTTP: pull (puxar)?
(cabealho e corpo) sejam em E-mail: push (empurrar)?
ASCII de 7-bits.
Ambos tem interao comando/
Algumas cadeias de
resposta, e cdigos de status em
caracteres no so permitidas ASCII?
numa mensagem (p.ex.,
HTTP: cada objeto encapsulado
CRLF.CRLF). Assim, a em sua prpria mensagem de
mensagem pode ter que ser resposta?
codificada (normalmente em SMTP: mltiplos objetos de
base-64 ou quoted mensagem enviados numa
printable). mensagem de mltiplas partes?
Discuta outras questes que achar
Servidor SMTP usa
relevantes.
CRLF.CRLF para reconhecer o
final da mensagem.
54
55
From: ana@consumidor.br
verso MIME To: bernardo@doces.br
Subject: Imagem de uma bela torta
mtodo usado MIME-Version: 1.0
para codificar dados Content-Transfer-Encoding: base64
Content-Type: image/jpeg
tipo, subtipo de
dados multimdia, base64 encoded data .....
declarao parmetros .........................
......base64 encoded data
Dados codificados
56
Tipos MIME
Content-Type: tipo/subtipo; parmetros
Text Audio
sub-tipos exemplos: plain, Sub-tipos exemplos : basic
html (8-bit codificado mu-law),
charset=iso-8859-1, 32kadpcm (codificao 32
ascii kbps).
Image Application
sub-tipos exemplos : jpeg, Outros dados que precisam ser
gif processados por um leitor para
serem visualizados.
Video subtipos exemplos : msword,
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
59
Pessoas:
Possuem muitos identificadores: CPF, nome, no. de
Passaporte, RG, etc...
Dispositivos na Internet:
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
61
62
63
64
65
Exemplo de DNS
servidor de
nomes raz
Servidor raz: 2 6
Pode no conhecer o 7 3
servidor de nomes
autoritativo.
Pode conhecer servidor
de nomes servidor local servidor intermedirio
intermedirio: a quem ns.ibilce.unesp.br saell.cc.columbia.edu
contactar para descobrir 4 5
1 8
o servidor de nomes
autoritativo.
servidor autoritativo
cs.columbia.edu
solicitante
rock.ibilce.unesp.br
www.cs.columbia.edu
66
68
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
RRs em resposta
ao pedido
registros para
servidores
autoritativos
info adicional
relevante que
pode ser usada
71
Compartilhamento de arquivos
Aplicaes P2P
72
Questes Fundamentais:
Principais vantagens
Escalabilidade
No h gargalo para crescimento.
Robustez
No h ponto de falha nico.
Flexibilidade
Auto-configurao / configurao
dinmica.
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?
Roteamento
Roteamento de aplicao: contedo, interesse, etc...
Roteamento entre super-ns: Kazaa, Morpheus,...
Roteamento baseado em capacidade (bandwidth)
Overlay
Rede virtual: rede sobre outra rede (IP).
Os enlaces so conexes entre ns da rede.
Redes Overlay
Rede Overlay
enlace virtual
enlace fsico
Rede Fsica
Modelo Descentralizado
Sem ndice global (sem coordenao global)
Exemplos: Gnutella, Freenet.
Modelo Hierrquico
Introduo dos super-ns (super-nodes ou super-peers).
Mistura dos modelos centralizado e descentralizado
Exemplos: KaZaA, Morpheus.
IM (Instant Messaging)
Aplicao popular na Internet, pela facilidade de
enviar mensagens on-line.
Exemplos:
MSN Messenger (http://messenger.msn.com)
Yahoo! Messenger (http://messenger.yahoo.com)
ICQ (http://web.icq.com)
Jabber (http://ww.jabber.org)
Aplicao: Compartilhamento
de Arquivos
Aplicao de maior sucesso na Internet.
Permite usurios compartilharem diretamente seus
arquivos, msicas, vdeos, etc...
Pode apresentar problemas de violao de direitos.
Caractersticas
rea de armazenamento.
Disponibilidade de informaes.
Anonimato.
Gerenciamento.
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)
SETI@Home
Questo: endereamento
Comunicao P2P pura necessita de conexes diretas
entre os peers.
Barreiras de endereamento/proteo impedem essa
comunicao direta.
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.
Contornando o DNS
Cadastro prprio
Napster, ICQ, Groove
3
Lista de
1 Arquivos
Cliente procura
arquivo
disponvel na rede
Rede KaZaA
Cliente envia a
lista dos arquivos
compartilhados
Rede informa o ID
do cliente para 2
buscar o arquivo
para a rede
X Cliente inicia a
3
conexo com o
cliente que tem o
Lista de arquivo e
bloqueado
Arquivos
Cliente envia a
lista dos arquivos
2 Cliente procura
arquivo
1 compartilhados
para a rede
Rede KaZaA
disponvel na rede
Rede informa o ID
Rede comunica o do cliente para
Cliente informa
cliente do buscar o arquivo
a rede que o
bloqueio
5 outro est
4 bloqueado
1
X Cliente inicia a
conexo com o
cliente que tem o
4
Lista de X arquivo e
bloqueado
Arquivos
Cliente envia a
lista dos arquivos
2 Cliente procura
arquivo
compartilhados
Rede KaZaA 3 disponvel na rede
para a rede
6 Rede informa o ID
Rede comunica o do cliente para
Cliente informa
cliente do buscar o arquivo
Tenta sair nas portas: bloqueio
a rede que o
outro est 5
1214/TCP BLOQUEADA bloqueado
1215/TCP BLOQUEADA
MUITAS OUTRAS/TCP
BLOQUEADA
Tenta centenas de portas,
incluindo: 80, 53, 1024, etc
Intermediao (relaying).
Conexo reversa
Uma mquina tem endereo IP vlido.
Questo: Conectividade
Heterogeneidade de conexes dos peers
Tecnologia / capacidade (banda) / assimetria.
Questo: Escalabilidade
benefcio imediato da descentralizao.
Limitaes da escalabilidade:
Quantidade de operaes centralizadas.
Manuteno de estado (usurios/aplicaes), etc...
P2P mais escalvel que cliente/servidor.
Em um sistema P2P, o nmero de servidores aumenta
com o nmero de clientes.
Problemas de escalabilidade em P2P
Napster, Gnutella, Freenet
Sistemas P2P estruturados (DHT) so escalveis.
Questo: Roteamento
Modelo Centralizado
Diretrio
central
Iron
Maiden ?
Modelo de Super-Ns
Super-Ns
Modelo DHT
Hash
Estrutura de dados importantes para desenvolvimento.
DHT: Funcionamento
Funo de hash mapeia objeto para um
identificador nico.
Ex: hash(Aquarela do Brasil) 8045
Faixa de resultados da funo de hash
distribuda pela rede.
DHT: Funcionamento
Cada n deve conhecer pelo menos uma
cpia do objeto que foi colocado na sua faixa
de hash.
Localizao dos objetos
Ns armazenam os objetos que so mapeados
para a sua faixa de hash.
Ns armazenam apontadores para os objetos
na sua faixa.
DHT: Roteamento
insere
(K1,V1)
insere
(K1,V1)
118
Naspter
Primeiro programa de compartilhamento
massivo de arquivos atravs de P2P.
Shawn Fanning.
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*
Novembro de 2002 direitos para a Roxio.
* Recording Industry Association of America.
Naspter simplificado
Quando um par se conecta, ele informa ao
servidor central:
Endereo IP.
Contedo.
Alice procura por Hey Jude.
Servidor central informa onde existe este
arquivo.
Alice requisita o arquivo de Bob.
Napster: funcionamento
1. Cliente se conecta com servidor e envia a sua
lista de arquivos compartilhados.
2. Cliente envia palavras-chave para fazer
busca na lista completa.
3. Cliente testa taxa de transmisso dos pares que
tm o arquivo solicitado (ping).
4. Peers respondem (pong).
5. O arquivo transferido diretamente entre os
pares.
usurios
pedidos
e
resultados
usurio
usurio
recupera
arquivos
usurio
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.
Busca baseada em inundao (flooding).
Histria:
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.
Gnutella (2)
Protocolo Gnutella
Compartilhamento sobre uma rede de overlay
Ns mantm conexes TCP abertas.
Mensagens so difundidas (inundadas) ou ento
propagadas de volta.
Protocolo:
Propagao
Inundao N a n
de volta
Participao PING PONG
Consulta QUERY QUERY HIT
Transferncia
GET, PUSH
de arquivos
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.
3 6
2 A
3 6
A
Passos:
5
1. N 2 inicia busca do arquivo A.
2. Envia mensagens a vizinhos.
A
3 6
A 5
Passos:
1. N 2 inicia busca do arquivo A.
2. Envia mensagens a vizinhos.
3. Vizinhos encaminham mensagem.
7
1 4
A
3 6
Passos:
A:5
A
5 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.
2 A:7
A:5
3 A 6
Passos:
5 1. N 2 inicia busca arquivo A.
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.
3 6
Passos:
1. N 2 inicia busca arquivo A.
5
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.
3 6
Passos:
1. N 2 inicia busca arquivo A.
5
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.
Gnutella - Comentrios
Verses mais novas do protocolo Gnutella
utilizam conceito de super-ns para minimizar o
trfego de inundao.
KaZaA
Software proprietrio.
Tentativa de implementar reputao.
Protocolo FastTrack
Outros clientes
Verso pirata: KaZaA Lite
Morpheus, Grokster
Arquitetura:
Descentralizada e no estruturada.
Hierrquica: Baseada em super-ns (supernodes).
145
Artifcios do KaZaA
2 - 146
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
BitTorrent- funcionamento
149
150
API Sockets
Surgiu em BSD4.1 UNIX, 1981
Explicitamente criados, usados
e liberados por aplicaes.
Paradigma cliente/servidor
Dois tipos de servio de
transporte via API Sockets
Datagrama no confivel
Fluxo de bytes, confivel
151
controlado pelo
controlado pelo processo programador de
programador de processo
aplicao
aplicao socket socket
controlado TCP com TCP com controlado
buffers, pelo sistema
pelo sistema buffers, internet variveis operacional
operacional variveis
estao ou estao ou
servidor servidor
152
153
(fluxo paraServidor).
doServidor
154
aguarda chegada de
TCP cria socket,
pedido de conexo setup da conexo abre conexo a idHosp, porta=x
socketCliente =
socketConexo =
Socket()
socketRecepo.accept()
escreve resposta
para socketConexo l resposta de
socketCliente
fecha
socketConexo fecha
socketCliente
155
frase = doUsuario.readLine();
Envia linha
ao servidor paraServidor.writeBytes(frase + '\n');
socketCliente.close();
}
}
157
class servidorTCP {
158
Cria fluxo
de sada, ligado DataOutputStream paraCliente =
ao socket new DataOutputStream(socketConexo.getOutputStream());
L linha
do socket fraseCliente= doCliente.readLine();
159
160
cria socket,
porta=x, para cria socket, =
socketCliente
pedido que chega: DatagramSocket()
socketServidor =
DatagramSocket()
cria, enderea (idHosp, porta=x,
envia pedido em datagrama
l pedido do usando socketCliente
socketServidor
escreve resposa
ao socketServidor
l resposa do
especificando endereo
IP, nmero de porta socketCliente
do cliente fecha
socketCliente
161
class clienteUDP {
public static void main(String args[]) throws Exception
{
Cria
fluxo de enrada BufferedReader do Usuario=
new BufferedReader(new InputStreamReader(System.in));
Cria
socket de cliente DatagramSocket socketCliente = new DatagramSocket();
Traduz nome de
InetAddress IPAddress = InetAddress.getByName(idHosp");
hospedeiro para
endereo IP byte[] dadosEnvio = new byte[1024];
usando DNS byte[] dadosRecebidos = new byte[1024];
Envia socketCliente.send(pacoteEnviado);
datagrama
ao servidor DatagramPacket pacoteRecebido =
new DatagramPacket(dadosRecebidos, dadosRecebidos.length);
L datagrama
socketCliente.receive(pacoteRecebido);
do servidor
String fraseModificada =
new String(pacoteRecebido.getData());
163
class servidorUDP {
public static void main(String args[]) throws Exception
Cria socket {
para datagramas
DatagramSocket socketServidor = new DatagramSocket(9876);
na porta 9876
byte[] dadosRecebidos = new byte[1024];
byte[] dadosEnviados = new byte[1024];
while(true)
{
Aloca memria para DatagramPacket pacoteRecebido =
new DatagramPacket(dadosRecebidos,
receber datagrama
dadosRecebidos.length);
Recebe socketServidor.receive(pacoteRecebido);
datagrama
164
Escreve socketServidor.send(pacoteEnviado);
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:
Confiabilidade, banda,
retardo.
Paradigma cliente-servidor.
Modelo de servio do
transporte orientado a
conexo, confivel da Internet:
TCP.
Modelo no confivel:
datagramas UDP.
166
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.
Formatos de mensagens:
Cabealhos: campos com
informaes sobre dados
(metadados).
Dados: informao sendo
comunicada.
167