Você está na página 1de 84

UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Curso de
Redes de Computadores
2010

Adriano Mauro Cansian


adriano@acmesecurity.org

Captulo 2
Camada de Aplicao

unesp - IBILCE - SJRP

Captulo 2: Camada de Aplicao


Metas do captulo: Conhecer...
O que?
Protocolos especficos:
Aprender aspectos
conceituais e de http
implementao de FTP
protocolos de aplicao em
redes. SMTP
Modelo cliente POP3
servidor. DNS
Modelos de servio. P2P
Como? Como feita a programao
Estudo de protocolos

populares da camada da
de aplicaes de rede.
aplicao. Programao usando sockets.

Prof. Dr. Adriano Mauro Cansian 1


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Conceitos

Clientes, servidores, processos, sockets e


outros bichos

unesp - IBILCE - SJRP

Aplicaes e protocolos da camada de aplicao


Cliente
Aplicao: processos distribudos aplicao
transporte
em comunicao rede
enlace
Rodam em hosts. fsica

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

Prof. Dr. Adriano Mauro Cansian 2


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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.

Um processo de emisso cria e emite mensagens na rede;


um processo de recepo recebe estas mensagens
e responde possivelmente emitindo mensagens de volta.

unesp - IBILCE - SJRP

Como os processos trocam mensagens:

Um protocolo da camada de aplicao define como os processos


de aplicao trocam mensagens.
Funcionando em sistemas de extremidade diferentes,

Um protocolo da camada de aplicao define:

Os tipos de mensagens trocadas.


Por exemplo, mensagens do pedido e mensagens de resposta.

A sintaxe dos vrios tipos de mensagem.


Os campos na mensagem, e como os campos so delineados.

A semntica dos campos.


Isto , o significado da informao nos campos.

As regras.
Determinar quando e como um processo emite e responde mensagens.

Prof. Dr. Adriano Mauro Cansian 3


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Como os processos trocam mensagens


Cliente

Servidor

unesp - IBILCE - SJRP

Aplicaes de rede: DEFINIES

Um processo um programa Um agente de usurio


que roda num host. (UA) uma interface
Dois processos no mesmo
entre o usurio e a
host se comunicam usando aplicao de rede.
comunicao entre processos WWW: browser.
(interprocess comunnication), Correio: leitor/compositor
definida pelo sistema de mensagens.
operacional (SO).
Streaming A/V: player de
mdia.
Dois processos em hosts
distintos se comunicam
usando um protocolo da
camada de transporte.

Prof. Dr. Adriano Mauro Cansian 4


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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

unesp - IBILCE - SJRP

Protocolos da camada de aplicao

API - Aplication Program Interface:


Interface de programao de aplicaes.
Define a interface entre a aplicao e camada
de transporte.
APIs definidas pelos RFCs.
Socket (= tomada).
Dois processos se comunicam enviando
dados para um socket , ou lendo dados
de um socket.
voltaremos mais tarde a este assunto.
10

Prof. Dr. Adriano Mauro Cansian 5


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Comunicao pelos sockets (1)


O socket pode ser entendido como a porta do processo:
Um processo emite e recebe mensagens da
rede, atravs de seus sockets.
Quando um processo quer emitir uma
mensagem a um outro processo em um
outro host, empurra a mensagem para o
socket.
O processo supe que h um infra-estrutura de
transporte no outro lado, a qual transportar a
mensagem at a porta do processo do destino.

11

unesp - IBILCE - SJRP

Comunicao pelos sockets (2)

12

Prof. Dr. Adriano Mauro Cansian 6


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Como um processo identifica outro ?

Pergunta: Como um processo pode identificaro


outro processo com o qual quer se comunicar?
Endereo IP do host do outro processo.
Por enquanto: o IP ADDRESS um valor de 32-bits que identifica
unicamente o sistema de extremidade. Mais precisamente:
identifica unicamente a interface (placa) que conecta esse host
Internet. Ex. 200.145.9.9

Nmero de porta : permite que o hospedeiro


receptor determine para qual processo deve ser
entregue a mensagem. Exemplo: Porta 80/TCP.
Ex. 200.145.9.9:80 (RFC 1700 - Portas well-known)

13

unesp - IBILCE - SJRP

De que servios de transporte uma aplicao


precisa? (1)

Quando se desenvolve uma aplicao, deve-se


escolher um dos protocolos disponveis do
transporte.
Como se faz esta escolha?
Estuda-se os servios fornecidos pelos protocolos
disponveis do transporte, e escolhe-se o protocolo
com os servios que melhor se adaptem s
necessidades de sua aplicao.
Com Conexo ou Sem Conexo.

14

Prof. Dr. Adriano Mauro Cansian 7


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

De que servios de transporte


uma aplicao precisa? (2)
Perda de dados: Temporizao:
Algumas aplicaes (por Algumas aplicaes
exemplo udio) podem (por exemplo,
tolerar algumas perdas. telefonia em Internet,
Outras (por exemplo, jogos interativos)
transferncia de requerem baixo
arquivos, telnet) exigem retardo para serem
transferncia 100% viveis.
confivel.

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

unesp - IBILCE - SJRP

Servios providos por protocolos de


transporte Internet

Servio TCP: Servio UDP:


Orientado a conexo: Transferncia de dados no
estabelecimento exigido entre confivel entre processos
cliente e servidor. remetente e receptor.
Transporte confivel entre No prov: estabelecimento
processos emissor e receptor. da conexo, confiabilidade,
Controle de fluxo: emissor no controle de fluxo, controle de
vai afogar receptor. congestionamento, garantias
temporais ou de banda
Controle de congestionamento:
mnima.
estrangular emissor quando a
rede carregada. Exerccio: Descreva onde e
No oferece: garantias temporais quando interessante usar
UDP, e quando no .
ou de banda mnima (QoS).

16

Prof. Dr. Adriano Mauro Cansian 8


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Exerccio: Veja quais as principais aplicaes Internet


e que tipo de protocolos de transporte elas utilizam,e
em quais portas operam.
Protocolo da Protocolo de
Aplicao camada de apl transporte usado

Correio eletrnico smtp [RFC 821] ?


Acesso terminal remoto telnet [RFC 854] ?
WWW http [RFC 2068] ?
Transf. de arquivos ftp [RFC 959] ?
streaming multimdia proprietrio ?
(Ex: RealNetworks)
Servidor de arquivo NFS ?
VoIP proprietrio ?
(Ex: Skype)

17

unesp - IBILCE - SJRP

Os principais protocolos de
aplicao

18

Prof. Dr. Adriano Mauro Cansian 9


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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

unesp - IBILCE - SJRP

WWW: o protocolo http

http: Hypertext Transfer


Protocol ped
ido
Protocolo da camada de htt
PC executa res p
aplicao para WWW. Explorer pos
ta
htt
Modelo cliente-servidor p
cliente: browser que
p
solicita, recebe
o htt
(visualiza) objetos did Servidor
pe executando
WWW.
servidor
servidor: servidor WWW WWW
envia objetos em resposta Apache
a pedidos.
Mac executa
http1.0: RFC 1945 Firefox
http1.1: RFC 2068

20

Prof. Dr. Adriano Mauro Cansian 10


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Mais sobre o protocolo http:


Usa servio de transporte http sem
TCP: estado (stateless)
Servidor no mantm
1.) Cliente inicia conexo TCP
(cria socket) ao servidor, na informao sobre pedidos
anteriores do cliente.
porta 80.
2.) Servidor aceita conexo TCP do Protocolos que mantm estado
cliente. so complexos!
3.) Troca mensagens http O histrico passado (estado) tem
(mensagens do protocolo da que ser mantido.
camada de aplicao) entre Demanda recursos maiores.
browser (cliente http) e servidor So chamados de Protocolos
WWW (servidor http). Statefull.
4.) Encerra conexo TCP.

21

unesp - IBILCE - SJRP

Exemplo de http (1)


Exemplo: Um usurio digita a URL www.unesp.br/index.html
(Ex: contm texto,
referncias a 10
1a. Cliente http inicia conexo TCP imagens jpeg)
ao servidor http (processo) em
1b. servidor http no hospedeiro
www.unesp.br.
www.unesp.br espera por conexo
Porta 80 padro para servidor http. TCP na porta 80. Aceita conexo,
avisando ao cliente
2. cliente http envia mensagem de
pedido de http (contendo URL)
atravs do socket da conexo TCP 3. servidor http recebe mensagem de
pedido, elabora mensagem de resposta
contendo objeto solicitado (index.html),
e envia mensagem via socket.

tempo Continua
22

Prof. Dr. Adriano Mauro Cansian 11


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Exemplo de http (2)


4. servidor http encerra conexo TCP .
5. cliente http recebe mensagem
de resposta contendo arquivo
html index.html, e visualiza
html. Analisando arquivo html,
encontra 10 objetos jpeg
referenciados.

6. Passos 1 a 5 repetidos para


cada um dos 10 objetos jpeg

tempo
E ento, continua...

23

unesp - IBILCE - SJRP

Conexes no-persistente e persistente


No persistente: Persistente:
HTTP/1.0 Default no HTTP/1.1

Servidor analisa Na mesma conexo TCP:


servidor analisa pedido,
pedido, responde, e
responde, analisa novo pedido,
encerra conexo TCP. etc... no fecha a conexo.
2 RTTs para trazer Cliente envia pedidos para todos
cada objeto objetos referenciados, assim que
(RTT = round trip recebe o HTML base .
time)
Menos RTTs, e menos
Transferncia de cada partida lenta.
objeto sofre de
partida lenta.

A maioria de browsers
usa conexes TCP paralelas.
24

Prof. Dr. Adriano Mauro Cansian 12


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Conexo no-persistente (1)


O cliente HTTP inicia uma conexo TCP com o servidor.

O cliente emite mensagem de requisio HTTP usurio atravs do socket


associado com a conexo do TCP que foi estabelecida.
Servidor HTTP recebe o request atravs do socket associado com a
conexo estabelecida, recupera o objeto (index.html) de seu
armazenamento, encapsula o objeto em uma mensagem HTTP de resposta,
e emite a mensagem de resposta ao cliente atravs do socket.
O servidor diz ao cliente para fechar a conexo TCP.

O cliente recebe a mensagem de resposta. A conexo TCP termina. A


mensagem indica que o objeto encapsulado um arquivo HTML. O cliente
extrai o arquivo da mensagem de resposta, analisa, e encontra referncias a
10 objetos do JPEG.
As primeiras quatro etapas so repetidas ento para cada um dos
objetos JPEG referenciados.

25

unesp - IBILCE - SJRP

Conexo no-persistente (2)


Quando o browser recebe uma pgina, mostra a pgina ao usurio.
Dois browsers diferentes podem interpretar (isto , mostrar ao
usurio) um webpage de maneiras um diferentes.
O HTTP no define como uma webpage interpretada por um cliente.
As especificaes do HTTP (RFC1945 e RFC2616) definem somente o protocolo
de comunicao entre o programa HTTP do cliente e o programa HTTP do
servidor.

Nas etapas das conexes no persistentes, cada conexo do TCP


fechada depois que o servidor envia o objeto: a conexo no
persiste para outros objetos.
Cada conexo TCP transporta exatamente uma mensagem de
pedido e uma mensagem de resposta. No nosso exemplo,
quando um usurio requisita uma pgina, 11 conexes TCP so
geradas.
(discutir conexes paralelas)

26

Prof. Dr. Adriano Mauro Cansian 13


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Round Trip Time (1)


Quantidade de tempo gasta entre cliente solicitar um arquivo
HTML at que o arquivo esteja recebido?
Tempo round-trip-time (RTT), o tempo gasto para um pacote
viajar do cliente ao servidor e ento voltar ao cliente. o tempo
de ida-e-volta.
RTT inclui os atrasos de propagao, de enfileiramento e de
processamento em routers e comutadores intermedirios.
Usurio clica num hyperlink. Isto faz com que o browser inicie uma
conexo do TCP entre o browser e o web server.
Envolve um three-way handshake: o cliente emite uma mensagem
TCP ao servidor, o servidor reconhece e responde com uma
mensagem. Finalmente, o cliente confirma de volta ao servidor.

27

unesp - IBILCE - SJRP

Round Trip Time (2)


Mais um RTT decorre aps as duas primeiras partes do
three-way handshake.
Aps ter terminado as primeiras duas partes do handshake, o
cliente emite a mensagem de requisio HTTP na conexo
TCP, e o TCP agrega a ltima confirmao (a terceira parte do
three-way handshake) na mensagem do pedido. Uma vez a
mensagem do pedido chega no usurio, o usurio emite o
arquivo HTML na conexo do TCP.
Esta interao HTTP request-response gasta outro RTT.

Assim, o tempo de resposta total dois RTTs mais o


tempo da transmisso do arquivo HTML pelo servidor.

28

Prof. Dr. Adriano Mauro Cansian 14


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Conexo persistente (1)


Cada objeto sofre dois RTTs:
um RTT para estabelecer a conexo TCP, e
um RTT para solicitar e receber um objeto.
Cada objeto sofre do partida lenta(slow start) do TCP.

Com as conexes persistentes, o servidor


deixa a conexo TCP aberta aps ter emitido
uma resposta.
Os pedidos e as respostas subseqentes entre o mesmos
cliente e servidor podem ser emitidos na mesma conexo.
Uma webpage inteira (no exemplo, o arquivo HTML base e
as 10 imagens) pode ser emitido sobre uma nica conexo
persistente do TCP.

29

unesp - IBILCE - SJRP

Conexo persistente (2)


Duas verses de conexes persistentes:
sem pipelining (paralelismo) e com pipelining.
Sem pipelining: o cliente emite um pedido novo
somente quando a resposta precedente foi recebida.
Com pipelining: o cliente emite um pedido assim
que encontrar uma referncia.
o default para HTTP/1.1.
Somente um RTT para todos os objetos
solicitados.

30

Prof. Dr. Adriano Mauro Cansian 15


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Mensagem http de requisio (1)

Dois tipos de mensagem http: pedido, resposta


Mensagem de pedido http:
ASCII (formato legvel por humanos).

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

Carriage return, (carriage return (CR), linefeed (LF) adicionais)


line feed
indica fim
de mensagem
31

unesp - IBILCE - SJRP

Mensagem http de requisio (2)

32

Prof. Dr. Adriano Mauro Cansian 16


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Mensagem http de resposta (1)


linha de status
(protocolo,
cdigo de status, HTTP/1.1 200 OK
frase de status) Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
linhas de Last-Modified: Mon, 22 Jun 1998 ...
cabealho Content-Length: 6821
Content-Type: text/html

dados dados dados dados ...


dados, p.ex.,
arquivo html
solicitado

33

unesp - IBILCE - SJRP

Mensagem http de resposta (2)

Formato geral de uma mensagem de RESPOSTA

34

Prof. Dr. Adriano Mauro Cansian 17


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Cdigos de status da resposta http


Aparecem na primeira linha da mensagem de
resposta cliente-servidor. Alguns cdigos tpicos:
200 OK
Sucesso. Objeto pedido segue mais adiante nesta mensagem.
301 Moved Permanently
Objeto pedido mudou de lugar, nova localizao especificado mais
adiante nesta mensagem (Location:)
400 Bad Request
Mensagem de pedido no entendida pelo servidor.
404 Not Found
Documento pedido no se encontra neste servidor.
505 HTTP Version Not Supported
Verso de http do pedido no aceita por este servidor.

35

unesp - IBILCE - SJRP

HTML (HyperText Markup Language)

HTML: uma linguagem simples para hipertexto


comeou como verso simples de SGML
construo bsica: cadias de texto anotadas

Construtores de formato operam sobre cadeias


<b> .. </b> bold (negrito)
<H1 ALIGN=CENTER> ..ttulo centrado .. </H1>
<BODY bgcolor=white text=black link=red ..> .. </BODY>

Vrios formatos
listas de bullets, listas ordenadas, listas de definio
tabelas
Frames
Etc... Etc...

36

Prof. Dr. Adriano Mauro Cansian 18


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Web: Formulrios e pginas dinmicas


(interao bidirecional e integrao com banco de dados)

Formulrios transmitem Forms: processados usando scripts


informao do cliente ao (programas que rodam no servidor
servidor. WWW)
HTTP permite enviar scripts permitem acesso a
formulrios ao servidor. diferentes servios.
Resposta enviada como pgina servidor WWW atua como
HTML dinmica. gateway universal.

GET/POST
formulrio
cliente servidor Sistema de
WWW resposta:
WWW informao
HTML 37

unesp - IBILCE - SJRP

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

Prof. Dr. Adriano Mauro Cansian 19


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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

unesp - IBILCE - SJRP

Web: GET condicional

cliente servidor

msg de pedido http


Meta: no enviar objeto se If-modified-since: objeto
cliente j tem (no cache) <date> no
verso atual. resposta http modificado
Cliente: especifica data da HTTP/1.1
cpia em cache no pedido 304 Not Modified
http
If-modified-since:
<date> msg de pedido http
Servidor: resposta no contm If-modified-since: objeto
objeto se a cpia no cache
<date> modificado
atual: resposta http
HTTP/1.1 200 OK
HTTP/1.1 304 Not
Modified <data>
40

Prof. Dr. Adriano Mauro Cansian 20


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Web: cache proxy


Meta: atender pedido do cliente sem envolver servidor de origem.

Usurio configura browser: Servidor


acessos WWW via de origem
procurador (proxy). cliente
Servidor
Cliente envia todos ped p
pedidos http ao ido proxy o htt
htt
res p did
procurador. pos
ta pe
http
Se objeto est no cache
do procurador, este o t p
t ped
oh ido
did
devolve imediatamente
pe res htt
na resposta http. pos p
ta
Seno, solicita objeto do htt

p
servidor de origem,
armazena e depois cliente
devolve resposta http ao Servidor
cliente. de origem

41

unesp - IBILCE - SJRP

Por que usar cache WWW ?


Servidores
Suposio: cache est de origem
prximo do cliente (por Internet
pblica
exemplo na mesma rede).
Tempo de resposta
menor. enlace de accesso
Diminui trfego aos 2 Mbps

servidores distantes, rede da


instituio
Muitas vezes o gargalo LAN 10 Mbps
o enlace (link) que liga a
rede da instituio at a
Internet. cache da
instituio

42

Prof. Dr. Adriano Mauro Cansian 21


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

FTP: o protocolo de transferncia de arquivos

transferncia
Interface cliente do arquivo FTP
do usurio FTP
servidor
FTP
usurio
na sistema de sistema de
estao arquivos arquivos
local remoto

Transferir arquivo de/para hospedeiro remoto


Modelo cliente/servidor
cliente: lado que inicia transferncia.

servidor: host remoto.

FTP - File Transfer Protocol: definido pelo [RFC 959]
Servidor FTP: atende na porta 21

43

unesp - IBILCE - SJRP

FTP: conexes separadas para controle e dados

Cliente FTP: TCP como


protocolo de transporte.
FTP: Outband control
So abertas duas (1) conexo de controle
conexes TCP paralelas: x TCP, porta 21 21
Controle: troca comandos,
respostas entre cliente, y 20
(2) conexo de dados
servidor (porta 21). cliente TCP, porta 20 servidor
controle fora da banda FTP FTP
Dados: dados de arquivo de/
para servidor (porta 20).
Servidor ftp mantm estado:
diretrio corrente, e autenticao
realizada.

44

Prof. Dr. Adriano Mauro Cansian 22


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

FTP: conexes separadas para controle e dados

Richard Stevens, TCP/IP Illustrated Vol. 1 Fig. 27.5

45

unesp - IBILCE - SJRP

FTP Active Open & Passive Open


8.03.2010
http://pintday.org/whitepapers/ftp.jpg

46

Prof. Dr. Adriano Mauro Cansian 23


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

FTP: comandos e respostas

Comandos tpicos: Cdigos de retorno tpicos


Enviados em texto ASCII cdigo e frase de status (como
pelo canal de controle. para http).
USER nome 331 Username OK,
PASS senha password required
LIST devolve lista de
125 data connection
already open;
arquivos no diretrio corrente
transfer starting
RETR arquivo recupera
425 Cant open data
(l) arquivo remoto
connection
STOR arquivo armazena
452 Error writing
(escreve) arquivo no host
file
remoto.

47

unesp - IBILCE - SJRP

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

Prof. Dr. Adriano Mauro Cansian 24


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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

unesp - IBILCE - SJRP

Correio Eletrnico: servidores


agente
de
Servidores de correio usurio
servidor agente
Caixa de correio contm de correio de
mensagens de chegada (ainda usurio
no lidas) p/ usurio. SMTP
servidor
Fila de mensagens contm de correio
mensagens de sada (a serem SMTP
enviadas).
Protocolo SMTP entre SMTP
servidores para transferir agente
mensagens de correio. servidor de
de correio usurio
Cliente: servidor de correio
que envia agente
Servidor: servidor de de
usurio
correio que recebe. agente
de
usurio
50

Prof. Dr. Adriano Mauro Cansian 25


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Correio Eletrnico: SMTP [RFC 821]

Usa TCP para a transferncia confivel de mensagens de


correio do cliente ao servidor. Porta 25/TCP
Transferncia direta: servidor remetente ao servidor
receptor.
Trs fases da transferncia:
Handshaking (cumprimento).
Transferncia das mensagens
Encerramento
Interao comando/resposta
Comandos: texto ASCII
Resposta: cdigo e frase de status

Mensagens precisam ser em ASCII de 7-bits.

51

unesp - IBILCE - SJRP

Interao SMTP tpica


S: 220 doces.br
C: HELO consumidor.br
S: 250 Hello consumidor.br, pleased to meet you
C: MAIL FROM: <ana@consumidor.br>
S: 250 ana@consumidor.br... Sender ok
C: RCPT TO: <bernardo@doces.br>
S: 250 bernardo@doces.br ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Eu gostaria de comprar alguns doces.
C: Voc tem uma lista de preos? Obrigada. Ana.
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 doces.br closing connection

52

Prof. Dr. Adriano Mauro Cansian 26


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Exerccio: experimente uma interao SMTP com seu


servidor de e-mail.

telnet nomedoservidor.algumlugar.br 25
Observe a resposta 220 do servidor
Entre comandos HELO, MAIL FROM, RCPT TO,
DATA, QUIT, HELP.

Estes comandos permitem que voc envie correio sem usar


um cliente (leitor de correio). Basta conhecer o formato
das mensagens do protocolo.
Pesquisar a respeito das mensagens de protocolo mais
usadas no SMTP.

53

unesp - IBILCE - SJRP

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

Prof. Dr. Adriano Mauro Cansian 27


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Formato de uma mensagem de e-mail

RFC 822: padro para


formato de mensagem: cabealho
linha em
Linhas de cabealho (header):
branco
To:
From:
Subject:
corpo
(NO so os comandos de smtp)
Corpo
a mensagem.
Somente de caracteres ASCII .
Termina com um . ponto

55

unesp - IBILCE - SJRP

Formato de uma mensagem: extenses para multimdia

MIME: multimedia mail extension, RFC 2045, 2056


Linhas adicionais no cabealho da mensagem declaram tipo do
contedo MIME.

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

Prof. Dr. Adriano Mauro Cansian 28


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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,

sub-tipos exemplos : mpeg,


octet-stream
quicktime
57

unesp - IBILCE - SJRP

Tipo Multiparte
From: ana@consumidor.br
To: bernardo@doces.br
Subject: Imagem de uma bela torta
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789

--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain

caro Bernardo,
Anexa a imagem de uma torta deliciosa.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg

base64 encoded data .....


.........................
......base64 encoded data
--98766789--
58

Prof. Dr. Adriano Mauro Cansian 29


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Protocolos de acesso ao correio


agente SMTP SMTP POP3 ou agente
de de
usurio IMAP usurio

servidor de correio servidor de correio


do remetente do receptor
SMTP: entrega/armazenamento no servidor do receptor.
Protocolo de accesso ao correio: recupera do servidor.
POP: Post Office Protocol [RFC 1939]
Autorizao (agente <-->servidor) e transferncia
IMAP: Internet Mail Access Protocol [RFC 1730]
Mais comandos e mais opes (mais complexo).
Manuseio de msgs armazenadas no servidor
Atravs de HTTP: Hotmail , Yahoo! Mail, Webmail, etc. (no
exatamente um protocolo de e-mail e sim um mecanismo)

59

unesp - IBILCE - SJRP

Protocolo POP3 S: +OK POP3 server ready


C: user ana
Fase de autorizao S: +OK
C: pass faminta
comandos do cliente: S: +OK user successfully logged on
user: declara nome
C: list
pass: senha
S: 1 498
servidor responde S: 2 912
+OK S: .
-ERR C: retr 1
S: <message 1 contents>
Fase de transao, cliente: S: .
list: lista nmeros das msgs C: dele 1
C: retr 2
retr: recupera msg por
S: <message 1 contents>
nmero
S: .
dele: apaga msg C: dele 2
quit C: quit
S: +OK POP3 server signing off
60

Prof. Dr. Adriano Mauro Cansian 30


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

DNS: Domain Name System (1)

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

Como mapear entre nome e endereo IP?

61

unesp - IBILCE - SJRP

DNS: Domain Name System (2)

(1) Uma base de dados distribuda implementada em uma


hierarquia de muitos servidores de nomes (nameservers).
(2) Um protocolo da camada de aplicao que permite
que os hosts e os servidores de nomes se comuniquem,
de modo a fornecer o servio de traduo resolver.
Resolver nome = traduzir nome em endereo IP.

Os servidores de nomes (nameservers) so freqentemente mquinas de


Unix que rodam o software Berkeley Internet Name Domain (Bind).
O protocolo do DNS funciona sobre UDP e usa a porta 53.

62

Prof. Dr. Adriano Mauro Cansian 31


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Servidores de nomes DNS


Por qu no centralizar o Nenhum servidor mantm
todos os mapeamento nome-
DNS? para-endereo IP.
Ponto nico de falha. Servidor de nomes local:
Cada provedor, empresa ou
Volume de trfego.

instituio tem servidor de
Base de dados nomes local (default)
Pedido DNS de um host vai
centralizada seria
primeiro ao servidor de nomes
distante. local.
Dificuldade de Servidor de nomes autoritativo:
Para o host: guarda nome,
Manuteno da BD.
endereo IP dele.
Pode realizar traduo nome/
endereo para este nome.
No escalvel!

63

unesp - IBILCE - SJRP

DNS: Servidores raiz (root servers)

Procurado por servidor


local que no consegue
resolver o nome.
Servidor raz:
Procura servidor
autoritativo se
mapeamento for
desconhecido.
Obtm traduo.
Devolve mapeamento
ao servidor local.
Existem cerca de uma
dzia de servidores raz
no mundo.

64

Prof. Dr. Adriano Mauro Cansian 32


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Exemplo simples do DNS


servidor de
nomes raiz
Host
2 4
rock.ibilce.unesp.br 3
5
requer endereo IP de
www.cs.columbia.edu
1. Contata servidor DNS local,
ns.ibilce.unesp.br
servidor local servidor autoritativo
2. ns.ibilce.unesp.br ns.ibilce.unesp.br cs.columbia.edu
contata servidor raiz, se
necessrio. 1 6
3. Servidor raiz contata servidor
autoritativo.
cs.columbia.edu, se solicitante
necessrio rock.ibilce.unesp.br www.cs.columbia.edu

65

unesp - IBILCE - SJRP

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

Prof. Dr. Adriano Mauro Cansian 33


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

DNS: consultas iteradas servidor de


nomes raz

Consulta recursiva: consulta


2
Transfere a 3 interativa
responsabilidade de
resoluo do nome para o 4
servidor de nomes
7
contatado.
Carga pesada? servidor local servidor intermedirio
ns.ibilce.unesp.br
saell.cc.columbia.edu
Consulta iterada: 5 6
Servidor consultado 1 8
responde com o nome de
um servidor de contato. servidor autoritativo
No conheo este nome, cs.columbia.edu
solicitante
mas pergunte para esse rock.ibilce.unesp.br
servidor
www.cs.columbia.edu
67

unesp - IBILCE - SJRP

DNS: uso de cache, atualizao de dados

Uma vez um servidor qualquer aprende um


mapeamento, ele o coloca numa cache local.
Futuras consultas so resolvidas usando dados da
cache.
Entradas no cache so sujeitas a temporizao
(desaparecem depois de certo tempo)
ttl = time to live (sobrevida).

68

Prof. Dr. Adriano Mauro Cansian 34


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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

unesp - IBILCE - SJRP

DNS: protocolo, mensagens


protocolo DNS: mensagens pedido e resposta, ambas com o mesmo
formato de mensagem

70

Prof. Dr. Adriano Mauro Cansian 35


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

DNS: protocolo, mensagens

campos nome, tipo


num pedido

RRs em resposta
ao pedido

registros para
servidores
autoritativos

info adicional
relevante que
pode ser usada

71

unesp - IBILCE - SJRP

Compartilhamento de arquivos

Aplicaes P2P

72

Prof. Dr. Adriano Mauro Cansian 36


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Compartilhamento de arquivos P2P


Exemplo:
Alice executa a aplicao cliente P2P em seu notebook.
Intermitentemente conecta-se Internet;
Obtm novo endereo IP para cada conexo.
Procura por um determinado arquivo de uma msica.
A aplicao exibe outros peers que possuem uma cpia da msica.
Alice escolhe um dos pares: Bob.
O arquivo copiado do PC de Bob para o notebook de Alice:
por exemplo via HTTP.
Enquanto Alice faz o download: outros usurios fazem upload da
mquina de Alice.
O peer Alice tanto um cliente Web como um servidor Web transiente.

Todos os pares so servidores = altamente escalveis!

unesp - IBILCE - SJRP

Modelo Cliente / Servidor


Modelo mais usado na Internet.
Dependente de servidores bem configurados em com
informao acessvel.
No explora o potencial de computao
distribuda proveniente da Rede.
A existncia de um ou milhares de computadores
indiferente na interao de um usurio tpico com a rede.
PCs clientes com capacidade considervel ficam
escondidos, formando um exrcito com alto
potencial.

Prof. Dr. Adriano Mauro Cansian 37


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Definio de sistema P2P (1)

unesp - IBILCE - SJRP

Definio de sistema P2P (1)

Classe de aplicaes que leva vantagem


de recursos disponveis nas bordas da
rede.
Quais recursos?
Armazenamento.
Tempo de CPU.
Bandwidth.
Contedo.
Presena humana.

Prof. Dr. Adriano Mauro Cansian 38


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Questes Fundamentais:

unesp - IBILCE - SJRP

Caractersticas P2P (1)

Sistemas distribudos sem controle


centralizado ou organizao
hierrquica.
Software executado em cada peer
equivalente em funcionalidade.
Quantidade explosiva e exponencial
de adeptos.

Prof. Dr. Adriano Mauro Cansian 39


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Caractersticas P2P (2)

Cada participante age como cliente e


servidor ao mesmo tempo (servent).
Cada cliente paga a sua
participao fornecendo acesso a
(alguns de) seus recursos.
Peering.

unesp - IBILCE - SJRP

Caractersticas P2P (3)


Sem coordenao central.
Sem banco de dados central.
Sem local nico de falha ou gargalo.
Nenhum ponto (peer) tem viso global do sistema.
Comportamento global definido por interaes
locais.
Todos os dados e servios so acessveis de
qualquer ponto.
Pontos so autnomos.
Pontos e conexes no so confiveis.

Prof. Dr. Adriano Mauro Cansian 40


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Principais vantagens

Escalabilidade
No h gargalo para crescimento.
Robustez
No h ponto de falha nico.
Flexibilidade
Auto-configurao / configurao
dinmica.

unesp - IBILCE - SJRP

Comparao entre Roteadores e


sistemas P2P
Descobrem e mantm topologia.
No so clientes nem servidores.
Continuamente falam uns com os outros.
So inerentemente tolerantes a falhas.
So autnomos.

Prof. Dr. Adriano Mauro Cansian 41


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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?

unesp - IBILCE - SJRP

Sistemas P2P: Requisitos


Descoberta de recursos/servios.
Baseada em: nome, endereo, rota, mtrica, etc...

Roteamento
Roteamento de aplicao: contedo, interesse, etc...
Roteamento entre super-ns: Kazaa, Morpheus,...
Roteamento baseado em capacidade (bandwidth)

Robustez e tolerncia a falhas (n e enlace).


Armazenamento distribudo e atualizaes.
Escalabilidade
Confiana nos pares (autenticao, autorizao)
Monitoramento de vizinhos.

Prof. Dr. Adriano Mauro Cansian 42


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

P2P X Redes de Cobertura (Overlay)

Overlay
Rede virtual: rede sobre outra rede (IP).
Os enlaces so conexes entre ns da rede.

P2P freqentemente utilizada para criar overlays.


Oferecendo servios que poderiam ser implementados na
camada IP.
Estratgia muito til para implantao.

Em certos casos, pode contornar barreiras


econmicas.
Exemplo: IP era um overlay (sobre a rede de telefonia)
Nem todos os overlays so P2P (AKAMAI).

unesp - IBILCE - SJRP

Redes Overlay
Rede Overlay
enlace virtual

enlace fsico

Rede Fsica

Prof. Dr. Adriano Mauro Cansian 43


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Modelos de Sistemas P2P


(Classificao 1)
Modelo Centralizado
ndice global mantido por um autoridade central.
Contato direto entre clientes e provedores.
Exemplo: Napster.

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.

unesp - IBILCE - SJRP

Modelos de Sistemas P2P


(Classificao 2)
Centralized Service Location (CSL)
Busca centralizada
Exemplo: Napster

Flooding-based Service Location (FSL)


Busca baseada em inundao
Exemplo: Gnutella

Distributed Hash Table-based Service Location (DHT)


Busca baseada em tabela de hash distribuda
Exemplos: Azureus, CAN, Pastry, Tapestry, Chord.

Prof. Dr. Adriano Mauro Cansian 44


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Modelos de Sistemas P2P


(Classificao 3)
Modelo Centralizado
Napster, intant mesengers (ICQ, MSN, etc...)
Modelo Descentralizado e Estruturado
DHT.
Bittorrent.

Modelo Descentralizado e No Estruturado.


Super-Ns: KaZaA
Inundao: Gnutella

unesp - IBILCE - SJRP

Aplicao: Troca de Mensagens

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)

Prof. Dr. Adriano Mauro Cansian 45


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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.

unesp - IBILCE - SJRP

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)

Prof. Dr. Adriano Mauro Cansian 46


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Aplicaes: Computao Distribuda

Idia de aproveitar recursos computacionais ociosos


no nova.
Grade Computacional (Grid)
Soluo de computao distribuda para engenharia e
cincias, baseada em compartilhamento de recursos em
larga escala.
Semelhanas e diferenas com P2P.
SETI@Home (http://setiathome.ssl.berkeley.edu)
The Search for Extraterrestrial Intelligence
Usurios executam partes da busca.

unesp - IBILCE - SJRP

SETI@Home

Prof. Dr. Adriano Mauro Cansian 47


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Questes de Projeto P2P

unesp - IBILCE - SJRP

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.

Prof. Dr. Adriano Mauro Cansian 48


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Contornando o DNS

Cadastro prprio
Napster, ICQ, Groove

Endereos IP de membros da rede.


Gnutella, KaZaA, Overnet
Endereos IP de servidores fixos.
SETI@Home.

unesp - IBILCE - SJRP

Contornando o Firewall: KaZaA


(normal)
Cliente KaZaA Cliente KaZaA
na sua rede Cliente responde Cliente inicia a na rede remota
ao pedido com o
arquivo solicitado 4 conexo com o
cliente que tem o
arquivo

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

Operao normal do KaZaA verso 2

Prof. Dr. Adriano Mauro Cansian 49


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Contornando o Firewall: KaZaA


(bloqueio entrada)

Cliente KaZaA Cliente KaZaA


na sua rede
Cliente inicia a na rede remota
conexo e envia
o arquivo
6

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

Operao quando o KaZaA bloqueado (porta 1214 na entrada)

unesp - IBILCE - SJRP

Contornando o Firewall: KaZaA


(bloqueio entrada e sada)

Cliente KaZaA Cliente KaZaA


na sua rede
Cliente inicia a na rede remota
conexo e envia
o arquivo
7

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

Operao quando o KaZaA bloqueado (porta 1214 entrada/sada)

Prof. Dr. Adriano Mauro Cansian 50


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Contornando o NAT (situao)


NATs so projetados para o modelo cliente/
servidor.
Clientes iniciam (active open) a conexo com
servidores bem conectados com endereos estveis e
nomes DNS.
Assimetria:
Mquinas internas podem iniciar conexo com
mquinas externas.
Mquinas externas NO podem iniciar conexo
com mquinas internas (mesmo sabendo endereo
IP e porta).

unesp - IBILCE - SJRP

Contornando NAT (tcnicas)


http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt

Intermediao (relaying).
Conexo reversa
Uma mquina tem endereo IP vlido.

Perfurao de buracos UDP (hole punching)


Variao: predio no nmero de porta
Abertura simultnea de conexo TCP
Requer sincronizao precisa de pacotes SYN e
predio do prximo nmero de porta
Uso do protocolo Midcom
http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt

Prof. Dr. Adriano Mauro Cansian 51


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Questo: Conectividade
Heterogeneidade de conexes dos peers
Tecnologia / capacidade (banda) / assimetria.

Muitos peers em conexes de baixa capacidade e


alta instabilidade.
Poucos peers em conexes de alta capacidade e
baixa instabilidade.
Indcios de que as redes P2P apresentem
caractersticas Small World
Distribuies de lei de potncia (Power Law)

unesp - IBILCE - SJRP

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.

Prof. Dr. Adriano Mauro Cansian 52


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Questo: Roteamento

Localizar informao em rede grande, voltil e


distribuda no simples.
Localizao e busca de informao dependem
do roteamento utilizado.
Abordagens comuns:
Modelo Centralizado
Modelo por Inundao
Modelo de Super-Ns
Modelo DHT

unesp - IBILCE - SJRP

Modelo Centralizado

Diretrio
central

Iron
Maiden ?

Prof. Dr. Adriano Mauro Cansian 53


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Modelo por Inundao

unesp - IBILCE - SJRP

Modelo por Inundao

Prof. Dr. Adriano Mauro Cansian 54


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Modelo de Super-Ns

Super-Ns

unesp - IBILCE - SJRP

Modelo DHT
Hash
Estrutura de dados importantes para desenvolvimento.

Hash distribudo na escala da Internet


Importante para sistemas distribudos grandes.
Sistemas P2P.
Espelhamento de servidores Web.

Prof. Dr. Adriano Mauro Cansian 55


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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.

unesp - IBILCE - SJRP

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.

Prof. Dr. Adriano Mauro Cansian 56


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

DHT: Roteamento

Para cada objeto, o n (os ns) cuja faixa


cobre o objeto deve ser alcanvel por um
caminho curto.
De qualquer outro n.
Em geral, qualquer funo aleatria de hash
boa suficiente.
Padro SHA-1 (coliso praticamente
impossvel)

unesp - IBILCE - SJRP

DHT: Idia Bsica

Prof. Dr. Adriano Mauro Cansian 57


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

DHT: Idia Bsica

insere
(K1,V1)

unesp - IBILCE - SJRP

DHT: Idia Bsica

insere
(K1,V1)

Prof. Dr. Adriano Mauro Cansian 58


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

DHT: Idia Bsica

unesp - IBILCE - SJRP

Aplicaes mais populares

118

Prof. Dr. Adriano Mauro Cansian 59


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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.

unesp - IBILCE - SJRP

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.

Prof. Dr. Adriano Mauro Cansian 60


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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.

unesp - IBILCE - SJRP

P2P: diretrio centralizado

Prof. Dr. Adriano Mauro Cansian 61


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Napster: funcionamento (1)

usurios

unesp - IBILCE - SJRP

Napster: funcionamento (2)

pedidos
e
resultados

usurio

Prof. Dr. Adriano Mauro Cansian 62


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Napster: funcionamento (3)

usurio

unesp - IBILCE - SJRP

Napster: funcionamento (4)

recupera
arquivos

usurio

Prof. Dr. Adriano Mauro Cansian 63


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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).

unesp - IBILCE - SJRP

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.

Prof. Dr. Adriano Mauro Cansian 64


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Gnutella (2)

A sua principal caracterstica a busca


distribuda.
Problema: Trfego gerado = Escalabilidade.
Despertou grande interesse na comunidade
acadmica.
No depende de servidor central.
Problema inicial: descobrir algum n que est na
rede. Depois, j est na rede.

unesp - IBILCE - SJRP

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

Prof. Dr. Adriano Mauro Cansian 65


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Query flooding: Gnutella


Rede de cobertura: grafo.
Aresta entre o par X e o Y se no h uma
conexo TCP
Todos os pares ativos e arestas esto na rede
de sobreposio.
Aresta no um enlace fsico
Um determinado par ser tipicamente conectado
a < 10 vizinhos na rede de sobreposio.

2 - 131

unesp - IBILCE - SJRP

Gnutella: protocolo

Mensagem de consulta
(query) enviada pelas
conexes TCP existentes
Os pares encaminham
a mensagem de consulta.
QueryHit (encontro)
enviado pelo
caminho reverso.

Para resolver problemas de escalabilidade: flooding de alcance


limitado.

Prof. Dr. Adriano Mauro Cansian 66


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Gnutella: conectando pares


Para conectar o par X, ele precisa encontrar algum
outro par na rede Gnutella: utiliza a lista de pares
candidatos.
X seqencialmente, tenta fazer conexo TCP com
os pares da lista, at estabelecer conexo com Y.
X envia mensagem de ping para Y;
Y encaminha a mensagem de ping aos vizinhos.

Todos os pares que recebem a mensagem de ping


respondem com mensagens de pong.
X recebe vrias mensagens de pong.
Ele pode ento estabelecer conexes TCP adicionais.

unesp - IBILCE - SJRP

Gnutella: Mecanismo de busca


7
1 A 4
Passos:
2
1. N 2 inicia busca do arquivo A

3 6

Prof. Dr. Adriano Mauro Cansian 67


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Gnutella: Mecanismo de busca


A
7
1 4

2 A

3 6
A

Passos:
5
1. N 2 inicia busca do arquivo A.
2. Envia mensagens a vizinhos.

unesp - IBILCE - SJRP

Gnutella: Mecanismo de busca


A A
7
1 4

A
3 6

A 5

Passos:
1. N 2 inicia busca do arquivo A.
2. Envia mensagens a vizinhos.
3. Vizinhos encaminham mensagem.

Prof. Dr. Adriano Mauro Cansian 68


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Gnutella: Mecanismo de busca


A:7 A

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.

unesp - IBILCE - SJRP

Gnutella: Mecanismo de busca


7
1 4

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.

Prof. Dr. Adriano Mauro Cansian 69


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Gnutella: Mecanismo de busca


7
1 4
A:7
2 A:5

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.

unesp - IBILCE - SJRP

Gnutella: Mecanismo de busca


download A 7
1 4

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.

Prof. Dr. Adriano Mauro Cansian 70


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Gnutella - Comentrios
Verses mais novas do protocolo Gnutella
utilizam conceito de super-ns para minimizar o
trfego de inundao.

unesp - IBILCE - SJRP

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).

Prof. Dr. Adriano Mauro Cansian 71


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Explorando heterogeneidade: KaZaA

Cada par ou um lder de


grupo ou est atribudo a
um lder de grupo.
Conexo TCP entre o par
e seu lder de grupo.
Conexes TCP entre
alguns pares de lderes de
grupo.
O lder de grupo
acompanha o contedo em
todos os seus discpulos.

unesp - IBILCE - SJRP

KaZaA funcionamento (1)


Cada arquivo possui um hash e um descritor.
O cliente envia a consulta de palavra-chave para o
seu lder de grupo.
O lder de grupo responde com os matches:
Para cada match: metadata, hash, endereo IP.
Se o lder de grupo encaminha a consulta para
outros lderes de grupo, eles respondem com os
encontros.
O cliente ento seleciona os arquivos para download
Requisies HTTP usando hash como identificador so
enviadas aos pares que contm o arquivo desejado.

Prof. Dr. Adriano Mauro Cansian 72


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

KaZaA funcionamento (2)

145

unesp - IBILCE - SJRP

Artifcios do KaZaA

Limitaes em uploads simultneos.


Requisita enfileiramento.
Incentiva prioridades.
Realiza downloads em paralelo.

2 - 146

Prof. Dr. Adriano Mauro Cansian 73


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

BitTorrent
Bram Cohen Abril de 2001.
Procolo aberto.
Descentralizado.
Modelo hbrido.
DHT (Kademlia).
Implementado pelo Azureus (atual Vuze)

147

unesp - IBILCE - SJRP

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

Prof. Dr. Adriano Mauro Cansian 74


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

BitTorrent- funcionamento

149

unesp - IBILCE - SJRP

Programao com sockets

Como funcionam as aplicaes cliente/servidor

150

Prof. Dr. Adriano Mauro Cansian 75


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Programao com sockets

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

unesp - IBILCE - SJRP

Programao com sockets usando TCP


Socket: uma porta entre o processo de aplicao e um
protocolo de transporte fim-a-fim (UDP ou TCP)
Servio TCP: transferncia confivel de bytes de um
processo para outro

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

Prof. Dr. Adriano Mauro Cansian 76


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Programao com sockets usando TCP


Cliente deve contactar servidor: Quando cliente cria socket: TCP
Processo servidor deve antes do cliente estabelece conexo ao
estar em execuo servidor TCP
Quando contactado pelo cliente,
Servidor deve antes ter criado
servidor TCP cria socket novo
socket (porta) que aguarda
processo servidor poder se
contato do cliente comunicar com o cliente.
Cliente contacta servidor por: Permite que o servidor

Criar socket TCP local ao converse com mltiplos


cliente clientes.
Especificar endereo IP,
nmero de porta do processo ponto de vista da aplicao
servidor TCP prov transferncia
confivel, ordenada de bytes
(tubo) entre cliente e servidor

153

unesp - IBILCE - SJRP

Programao com sockets usando TCP


Input stream: seqncia de bytes
Exemplo de aplicaao cliente- para dentro do processo.
servidor:
Cliente l linha da entrada Output stream: seqncia de bytes
padro (fluxo doUsurio), para fora do processo.
envia para servidor via socket
pparaServidor

(fluxo paraServidor).
doServidor

Servidor l linha do socket.


Servidor converte linha para
letra maiscula, e devolve para
o cliente.
doUsurio
Cliente l linha modificado do
socket (fluxo doServidor),
imprime-a socket do cliente

154

Prof. Dr. Adriano Mauro Cansian 77


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Interaes cliente/servidor com socket: TCP

Servidor (roda em idHosp) Cliente


cria socket,
porta=x, para
receber pedido:
socketRecepo =
ServerSocket ()

aguarda chegada de
TCP cria socket,
pedido de conexo setup da conexo abre conexo a idHosp, porta=x
socketCliente =
socketConexo =
Socket()
socketRecepo.accept()

Envia pedido usando


l pedido de socketCliente
socketConexo

escreve resposta
para socketConexo l resposta de
socketCliente
fecha
socketConexo fecha
socketCliente
155

unesp - IBILCE - SJRP

Exemplo: cliente Java TCP (1)


Contm classe para
streams de I/O
import java.io.*;
import java.net.*; Contm classes para
class ClienteTCP { suporte a rede

public static void main(String argv[]) throws Exception


{
String frase;
String fraseModificada;
Cria BufferedReader doUsuario =
fluxo de entrada new BufferedReader(new InputStreamReader(System.in));
Cria Socket socketCliente = new Socket(idHosp", 6789);
socket de cliente,
conexo ao servidor DataOutputStream paraServidor =
Cria new DataOutputStream(socketCliente.getOutputStream());
fluxo de sada
anexado ao socket
156

Prof. Dr. Adriano Mauro Cansian 78


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Exemplo: cliente Java TCP (2)

Cria BufferedReader doServidor =


fluxo de entrada new BufferedReader(new
ligado ao socket InputStreamReader(socketCliente.getInputStream()));

frase = doUsuario.readLine();
Envia linha
ao servidor paraServidor.writeBytes(frase + '\n');

L linha fraseModificada = doServidor.readLine();


do servidor
System.out.println(Do Servidor: " + fraseModificada);

socketCliente.close();

}
}
157

unesp - IBILCE - SJRP

Exemplo: servidor Java TCP (1)


import java.io.*;
import java.net.*;

class servidorTCP {

public static void main(String argv[]) throws Exception


{
String fraseCliente;
Cria socket StringfFraseMaiusculas;
para recepo
ServerSocket socketRecepcao = new ServerSocket(6789);
na porta 6789
while(true) {
Aguarda, no socket
para recepo, o Socket socketConexao = socketRecepcao.accept();
contato do cliente
BufferedReader doCliente =
Cria fluxo de new BufferedReader(new
entrada, ligado InputStreamReader(socketConexao.getInputStream()));
ao socket

158

Prof. Dr. Adriano Mauro Cansian 79


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Exemplo: servidor Java TCP (2)

Cria fluxo
de sada, ligado DataOutputStream paraCliente =
ao socket new DataOutputStream(socketConexo.getOutputStream());
L linha
do socket fraseCliente= doCliente.readLine();

fraseEmMaiusculas= fraseCliente.toUpperCase() + '\n';


Escreve linha paraClient.writeBytes(fraseEmMaiusculas);
para o socket }
}
} Final do lao while.
Volta ao incio e aguarda
conexo de outro cliente

159

unesp - IBILCE - SJRP

Programao com sockets usando UDP

UDP: no tem conexo entre


cliente e servidor.
No tem handshaking
Remetente coloca ponto de vista da aplicao
explicitamente endereo IP e
porta do destino. UDP prov transferncia
no confivel de grupos
Servidor deve extrair endereo
de bytes (datagramas)
IP, porta do remetente do
entre cliente e servidor
datagrama recebido
Dados transmitidos podem ser
recebidos fora de ordem, ou
perdidos.

160

Prof. Dr. Adriano Mauro Cansian 80


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Interaes cliente/servidor com socket: UDP

Servidor (executa em idHosp) Cliente

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

unesp - IBILCE - SJRP

Exemplo: cliente Java UDP (1)


import java.io.*;
import java.net.*;

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];

String frase = doUsuario.readLine();


dadosEnvio = frase.getBytes();
162

Prof. Dr. Adriano Mauro Cansian 81


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Exemplo: cliente Java UDP (2)


Cria datagrama
com dados para
enviar, DatagramPacket pacoteEnviado =
comprimento, new DatagramPacket(dadosEnvio, dadosEnvio.length,
endereo IP, porta IPAddress, 9876);

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());

System.out.println(Do Servidor:" + fraseModificada);


socketCliente.close();
}
}

163

unesp - IBILCE - SJRP

Exemplo: servidor Java UDP (1)


import java.io.*;
import java.net.*;

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

Prof. Dr. Adriano Mauro Cansian 82


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

Exemplo: servidor Java UDP (2)


String frase = new String(pacoteRecebido.getData());
Obtm endereo
InetAddress IPAddress = pacoteRecebido.getAddress();
IP e No. de porta
do remetente int port = pacoteRecebido.getPort();

String fraseEmMaiusculas = frase.toUpperCase();

Cria datagrama dadosEnviados = fraseEmMaiusculas.getBytes();


p/
DatagramPacket pacoteEnviado =
enviar ao new DatagramPacket(dadosEnviados,
cliente dadosEnviados.length, IPAddress, porta);

Escreve socketServidor.send(pacoteEnviado);
datagrama }
para o socket }
} Fim do lao while.
Volta ao incio e aguarda
chegar outro datagrama.
165

unesp - IBILCE - SJRP

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

Prof. Dr. Adriano Mauro Cansian 83


UNESP - IBILCE - SJRP - Curso de Redes de Computadores Captulo 2

unesp - IBILCE - SJRP

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

Prof. Dr. Adriano Mauro Cansian 84