Professional Documents
Culture Documents
2: Camada de Aplicao
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede
2.2 A Web e o HTTP
2.3 Transferncia de
arquivo: FTP
2.4 Correio Eletrnico
na Internet
2.5 DNS: o servio de
diretrio da Internet
desenvolvimento de
aplicaes com TCP
2.8 Programao de
sockets com UDP
2: Camada de Aplicao
modelos de servio da
camada de transporte
paradigma cliente
servidor
paradigma peer-to
peer
atravs do estudo de
protocolos populares da
camada de aplicao:
HTTP
FTP
SMTP/ POP3/ IMAP
DNS
2: Camada de Aplicao
Mensagens
instantneas
Login em computador
remoto como Telnet e
SSH
Compartilhamento de
arquivos P2P
Jogos multiusurios
em rede
Streaming de vdeos
armazenados
(YouTube, Hulu,
Netflix)
Telefonia por IP
(Skype)
Videoconferncia em
tempo real
Busca
...
...
2: Camada de Aplicao
Executam em (diferentes)
sistemas finais
Comunicam-se atravs da rede
p.ex., servidor Web se comunica
com o navegador
aplicao
transporte
rede
enlace
fsica
Programas no relacionados
ao ncleo da rede
aplicao
transporte
rede
enlace
fsica
2: Camada de Aplicao
aplicao
transporte
rede
enlace
fsica
2: Camada de Aplicao
Arquitetura cliente-servidor
Servidor:
Sempre ligado
Endereo IP permanente
Escalabilidade com data
centers
Clientes:
Comunicam-se com o servidor
Podem estar conectados
cliente/servidor
intermitentemente
Podem ter endereos IP
dinmicos
No se comunicam diretamente
com outros clientes
2: Camada de Aplicao
Arquitetura P2P
No h servidor sempre ligado
peer-peer
comunicam diretamente
Pares solicitam servios de
outros pares e em troca
proveem servios para outros
parceiros:
Autoescalabilidade novos
pares trazem nova capacidade
de servio assim como novas
demandas por servios.
intermitentemente e mudam
endereos IP
Gerenciamento complexo
2: Camada de Aplicao
Sockets
Os processos enviam/ recebem mensagens
processo
socket
aplicao
processo
transporte
transporte
rede
rede
enlace
fsica
Internet
enlace
Controlado pelo
desenvolvedor
da aplicao
controlado
pelo SO
fsica
2: Camada de Aplicao
10
Endereamento de processos
Para que um processo
o endereo IP quanto os
nmeros das portas
associadas com o processo
no hospedeiro .
Exemplo de nmeros de
portas:
Servidor HTTP: 80
Servidor de Correio: 25
posteriormente.
2: Camada de Aplicao
11
Os protocolos da camada de
aplicao definem
Tipos de mensagens
trocadas:
ex. mensagens de
requisio e resposta
Protocolos abertos:
definidos em RFCs
Permitem a
interoperao
ex, HTTP e SMTP
Protocolos proprietrios:
Ex., Skype
significado da informao
nos campos
processos enviam e
respondem s mensagens
2: Camada de Aplicao
12
Vazo (throughput)
Segurana
Temporizao (sensibilidade a
atrasos)
2: Camada de Aplicao
13
Sensibilidade
ao atraso
Aplicao Perdas
transferncia de arqs
correio
documentos Web
udio/vdeo em
tempo real
udio/vdeo gravado
jogos interativos
mensagem instantnea
elstica
elstica
elstica
udio: 5kbps-1Mbps
vdeo:10kbps-5Mbps
Igual acima
tolerante
Alguns kbps-10Mbps
tolerante
sem perdas elstica
sem perdas
sem perdas
sem perdas
tolerante
no
no
no
sim, 100s mseg
sim, alguns segs
sim, 100s mseg
sim e no
2: Camada de Aplicao
14
Servio UDP:
transferncia de dados no
15
Protocolo da
camada de apl
Protocolo de
transporte usado
TCP
TCP
TCP
TCP
TCP ou UDP
TCP ou UDP
2: Camada de Aplicao
16
17
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede
2.2 A Web e o HTTP
2.3 Transferncia de
arquivo: FTP
2.4 Correio Eletrnico
na Internet
2.5 DNS: o servio de
diretrio da Internet
desenvolvimento de
aplicaes com TCP
2.8 Programao de
sockets com UDP
2: Camada de Aplicao
18
A Web e o HTTP
Primeiro uma reviso...
Pginas Web consistem de objetos
um objeto pode ser um arquivo HTML, uma imagem
JPEG, um applet Java, um arquivo de udio,
Pginas Web consistem de um arquivo base HTML
que inclui vrios objetos referenciados
Cada objeto enderevel por uma URL
Exemplo de URL:
www.someschool.edu/someDept/pic.gif
nome do hospedeiro
nome do caminho
2: Camada de Aplicao
19
Protocolo HTTP
HTTP: hypertext
transfer protocol
protocolo da camada de
aplicao da Web
modelo cliente/servidor
cliente: browser que
pede, recebe (usando o
protocolo HTTP) e
visualiza objetos Web
servidor: servidor Web
envia (usando o
protocolo HTTP)
objetos em resposta a
pedidos
ped
ido
htt
PC executando res
p
pos
Explorer
ta
htt
p
ttp
h
ido
tp Servidor
d
t
e
h
p
executando
sta
o
p
servidor
res
Web Apache
iphone executando
o navegador Safari
2: Camada de Aplicao
20
informao sobre
pedidos anteriores do
cliente
Nota
21
Conexes HTTP
HTTP no persistente
No mximo um objeto
enviado numa
conexo TCP
A conexo ento
encerrada
Baixar mltiplos
HTTP persistente
Mltiplos objetos
podem ser enviados
sobre uma nica
conexo TCP entre
cliente e servidor
2: Camada de Aplicao
22
www.algumaUniv.br/algumDepartmento/inicial.index
(contm texto,
referncias a 10
imagens jpeg)
tempo
mensagem de pedido de
http (contendo URL)
atravs do socket da
conexo TCP. A mensagem
indica que o cliente deseja
receber o objeto
algumDepartamento/inicial.
index
2: Camada de Aplicao
23
tempo
2: Camada de Aplicao
24
Inicia a conexo
TCP
RTT
solicita
arquivo
tempo para
transmitir
o arquivo
RTT
arquivo
recebido
tempo
2: Camada de Aplicao
tempo
25
HTTP persistente
Problemas com o HTTP no
persistente:
requer 2 RTTs para cada
objeto
SO aloca recursos do
hospedeiro (overhead) para
cada conexo TCP
os browser
freqentemente abrem
conexes TCP paralelas
para recuperar os objetos
referenciados
HTTP persistente
o servidor deixa a conexo
aberta aps enviar a
resposta
mensagens HTTP seguintes
entre o mesmo
cliente/servidor so
enviadas nesta conexo
aberta
o cliente envia os pedidos
logo que encontra um
objeto referenciado
pode ser necessrio apenas
um RTT para todos os
objetos referenciados
2: Camada de Aplicao
26
requisio, resposta
indicam fim
de mensagem
2: Camada de Aplicao
27
2: Camada de Aplicao
28
2: Camada de Aplicao
29
Tipos de mtodos
HTTP/1.0
GET
POST
HEAD
HTTP/1.1
GET, POST, HEAD
PUT
Upload de arquivo
contido no corpo da
mensagem para o
caminho especificado no
campo URL
DELETE
Exclui arquivo
especificado no campo
URL
2: Camada de Aplicao
30
dados, p.ex.,
arquivo html
solicitado
2: Camada de Aplicao
31
32
33
1) linha de cabealho do
cookie na mensagem de
resposta HTTP
2) linha de cabealho do
cookie na mensagem de
pedido HTTP
3) arquivo do cookie mantido
no host do usurio e
gerenciado pelo browser
do usurio
4) BD de retaguarda no stio
Web
Exemplo:
Suzana acessa a
Internet sempre do
mesmo PC
Ela visita um stio
especfico de comrcio
eletrnico pela primeira
vez
Quando os pedidos
iniciais HTTP chegam no
stio, o stio cria
uma ID nica
uma entrada para a ID no
BD de retaguarda
2: Camada de Aplicao
34
ebay: 8734
arquivo de
Cookies
amazon: 1678
ebay: 8734
cookie: 1678
resposta usual http
servidor de ntrad
a
resposta usual http +
cria a ID 1678 retag no B
ua
rd D
Set-cookie: 1678 para o usurio
a
cookie: 1678
resposta usual http
ao
especfica
do cookie
so
aces
ac
es
so
arquivo de
Cookies
servidor
ao
especfica
do cookie
2: Camada de Aplicao
35
Cookies (continuao)
nota
2: Camada de Aplicao
36
se objeto estiver no
cache do proxy, este o
devolve imediatamente
na resposta HTTP
seno, solicita objeto do
servidor de origem,
depois devolve resposta
HTTP ao cliente
cliente
Servidor
de origem
Servidor
proxy
ped
ido
ht t
res
p
pos
ta
htt
p
ttp
h
ido
t tp
d
h
e
p
s ta
o
p
res
ttp
h
o
t tp
did
h
e
p
sta
o
p
res
cliente
Servidor
de origem
2: Camada de Aplicao
37
38
Servidores
de origem
Internet
pblica
enlace de acesso
1,5 Mbps
rede da
instituio
LAN 10 Mbps
2: Camada de Aplicao
39
Servidores
de origem
Internet
pblica
enlace de acesso
10 Mbps
rede da
instituio
LAN 10 Mbps
2: Camada de Aplicao
40
Servidores
de origem
Internet
pblica
enlace de acesso
1,5 Mbps
rede da
instituio
LAN 10 Mbps
cache
institucional
2: Camada de Aplicao
41
GET condicional
Meta: no enviar objeto se
servidor: resposta no
servidor
cache
msg de pedido http
If-modified-since:
<date>
resposta http
HTTP/1.0
304 Not Modified
objeto
no
modificado
resposta http
objeto
modificado
HTTP/1.1 200 OK
<data>
2: Camada de Aplicao
42
HTTP/2
Aprovado pela IESG (Internet
em Fevereiro de 2015
https://tools.ietf.org/html/draft-ietf-httpbis-http2-17
Objetivos:
43
2: Camada de Aplicao
44
2: Camada de Aplicao
45
HTTP/2: Quadros
Tipos:
HEADERS, DATA, PRIORITY, RST_STREAM,
SETTINGS, PUSH_PROMISE, PING,
GOAWAY, WINDOW_UPDATE,
CONTINUATION
2: Camada de Aplicao
46
HTTP/2: Multiplexao
2: Camada de Aplicao
47
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede
2.2 A Web e o HTTP
2.3 Transferncia de
arquivo: FTP
2.4 Correio Eletrnico
na Internet
2.5 DNS: o servio de
diretrio da Internet
desenvolvimento de
aplicaes com TCP
2.8 Programao de
sockets com UDP
2: Camada de Aplicao
48
usurio
na
estao
Interface cliente
do usurio FTP
FTP
transferncia
do arquivo
servidor
FTP
sistema de
arquivos
remoto
sistema de
arquivos
local
2: Camada de Aplicao
49
conexo de controle
TCP, porta 21
cliente
FTP
conexo de dados
TCP, porta 20
servidor
FTP
50
para http)
331 Username OK, password
required
125 data connection
already open; transfer
starting
425 Cant open data
connection
452 Error writing file
2: Camada de Aplicao
51
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede
2.2 A Web e o HTTP
2.3 Transferncia de
arquivo: FTP
2.4 Correio Eletrnico
na Internet
2.5 DNS: o servio de
diretrio da Internet
desenvolvimento de
aplicaes com TCP
2.8 Programao de
sockets com UDP
2: Camada de Aplicao
52
Correio Eletrnico
Trs grandes componentes:
agentes de usurio (UA)
servidores de correio
servidor
de correio
SMTP
SMTP
Agente de Usurio
a.k.a. leitor de correio
compor, editar, ler mensagens
de correio
p.ex., Outlook, Thunderbird,
cliente de mail do iPhone
mensagens de sada e chegando
so armazenadas no servidor
agente
de
usurio
SMTP
fila de
mensagens
de sada
caixa de
correio do usurio
agente
de
usurio
servidor
de correio
SMTP
servidor
de correio
agente
de
usurio
agente
de
usurio
agente
de
usurio
agente
de
usurio
2: Camada de Aplicao
53
mensagens de chegada
(ainda no lidas) p/ usurio
fila de mensagens contm
mensagens de sada (a serem
enviadas)
protocolo SMTP entre
servidores de correio para
transferir mensagens de
correio
cliente: servidor de
correio que envia
servidor: servidor de
correio que recebe
servidor
de correio
agente
de
usurio
SMTP
SMTP
agente
de
usurio
servidor
de correio
SMTP
servidor
de correio
agente
de
usurio
agente
de
usurio
agente
de
usurio
2: Camada de Aplicao
54
Correio Eletrnico:
SMTP [RFC 2821]
usa TCP para a transferncia confivel de msgs do correio do
55
Gerncia da Porta 25
http://antispam.br/
2: Camada de Aplicao
56
2: Camada de Aplicao
57
220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <alice@crepes.fr>
250 alice@crepes.fr ... Sender ok
RCPT TO: <bob@hamburger.edu>
250 bob@hamburger.edu ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
2: Camada de Aplicao
58
DATA, QUIT
2: Camada de Aplicao
59
persistentes
SMTP requer que a mensagem
(cabealho e corpo) sejam em
ASCII de 7-bits
servidor SMTP usa
CRLF.CRLF para reconhecer o
final da mensagem
comando/resposta, cdigos
de status em ASCII
60
cabealho
linha em
branco
corpo
corpo
a mensagem, somente de
caracteres ASCII
2: Camada de Aplicao
61
verso MIME
mtodo usado
p/ codificar dados
tipo, subtipo de
dados multimdia,
declarao parmetros
Dados codificados
From: ana@consumidor.br
To: bernardo@doces.br
Subject: Imagem de uma bela torta
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
2: Camada de Aplicao
62
Tipos MIME
Content-Type: tipo/subtipo; parmetros
Text
html
charset=iso-8859-1,
ascii
Image
gif
Video
Audio
Application
quicktime
2: Camada de Aplicao
63
Tipo Multipart
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
Dear Bob,
Please find a picture of a crepe.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
--98766789-2: Camada de Aplicao
64
SMTP
SMTP
servidor de correio
do remetente
POP3 ou
IMAP
agente
de
usurio
servidor de correio
do receptor
65
Protocolo POP3
fase de autorizao
comandos do cliente:
S:
C:
S:
C:
S:
C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:
list
1 498
2 912
.
retr 1
<message 1 contents>
.
dele 1
retr 2
<message 1 contents>
.
dele 2
quit
+OK POP3 server signing off
2: Camada de Aplicao
66
on
IMAP
Mantm todas as
mensagens num nico
lugar: o servidor
Permite ao usurio
organizar as mensagens
em pastas
O IMAP mantm o estado
do usurio entre sesses:
67
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede
2.2 A Web e o HTTP
2.3 Transferncia de
arquivo: FTP
2.4 Correio Eletrnico
na Internet
2.5 DNS: o servio de
diretrio da Internet
desenvolvimento de
aplicaes com TCP
2.8 Programao de
sockets com UDP
2: Camada de Aplicao
68
hospedeiros, roteadores
Internet :
2: Camada de Aplicao
69
DNS (cont.)
Servios DNS
Traduo de nome de
hospedeiro para IP
Apelidos para
hospedeiros (aliasing)
Apelidos para
servidores de e-mail
Distribuio de carga
70
yahoo.com amazon.com
DNS serversDNS servers
poly.edu
umass.edu
pbs.org
DNS servers DNS serversDNS servers
71
nome
servidor raiz:
procura servidor oficial se mapeamento desconhecido
obtm traduo
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)
13 servidores de
nome raiz em todo o
mundo
2: Camada de Aplicao
72
2: Camada de Aplicao
73
Domnios
Registrados
por DPN
(Domnio de
Primeiro Nvel)
06/02/13
2: Camada de Aplicao
74
2: Camada de Aplicao
75
Exemplo de resoluo
de nome pelo DNS
servidor raiz
Hospedeiro em
cis.poly.edu quer
endereo IP para
gaia.cs.umass.edu
consulta interativa:
servidor consultado
responde com o nome
de um servidor de
contato
No conheo este
nome, mas pergunte
para esse servidor
3
4
servidor TLD
5
servidor local
dns.poly.edu
6
servidor com autoridade
dns.cs.umass.edu
solicitante
cis.poly.edu
gaia.cs.umass.edu
2: Camada de Aplicao
76
Exemplo de resoluo
de nome pelo DNS servidor DNS raiz
2
consulta recursiva:
transfere a
3
7
responsabilidade de
resoluo do nome
para o servidor de
nomes contatado
servidor DNS local
carga pesada?
dns.poly.edu
solicitante
6
servidor TLD
5
8
servidor DNS com autoridade
dns.cs.umass.edu
cis.poly.edu
gaia.cs.umass.edu
2: Camada de Aplicao
77
http://www.ietf.org/html.charters/dnsext-charter.html
2: Camada de Aplicao
78
Registros DNS
DNS: BD distribudo contendo registros de recursos (RR)
formato RR: (nome, valor, tipo, ttl)
Tipo=A
nome nome de hospedeiro
valor o seu endereo IP
Tipo=NS
Tipo=CNAME
nome nome alternativo
(alias) para algum nome
cannico (verdadeiro)
valor o nome cannico
Tipo=MX
nome domnio
valor nome do servidor de
correio para este domnio
2: Camada de Aplicao
79
2: Camada de Aplicao
80
2: Camada de Aplicao
81
Utopia
Registra o nome netutopia.com.br em uma entidade
registradora (e.x., Registro.br)
82
Ataques ao DNS
Ataques DDoS
Bombardeia os servidores
raiz com trfego
At o momento no
tiveram sucesso
Filtragem do trfego
Servidores DNS locais
cacheiam os IPs dos
servidores TLD,
permitindo que os
servidores razes no
sejam consultados
TLD
Potencialmente mais
perigoso
Ataques de redirecionamento
Pessoa no meio
Intercepta as consultas
Envenenamento do DNS
83
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede
2.2 A Web e o HTTP
2.3 Transferncia de
arquivo: FTP
2.4 Correio Eletrnico
na Internet
2.5 DNS: o servio de
diretrio da Internet
desenvolvimento de
aplicaes com TCP
2.8 Programao de
sockets com UDP
2: Camada de Aplicao
84
par-par
Exemplos:
Distribuio de arquivos
(BitTorrent)
Streaming (KanKan)
VoIP (Skype)
2: Camada de Aplicao
85
Servidor
Arquivo,
tamanho F
us
dN
uN
u1 d1
u2
d2
Rede (com
banda abundante)
2: Camada de Aplicao
86
us
di
rede
ui
87
us
di
network
ui
88
2: Camada de Aplicao
89
torrente: grupo de
pares trocando
blocos de um arquivo
Alice chega
obtm lista de
parceiros do tracker
e comea a trocar blocos
de arquivos com os
parceiros na torrente
2: Camada de Aplicao
90
2: Camada de Aplicao
91
optimistically unchoked
o par recm escolhido pode se
unir aos 4 mais
2: Camada de Aplicao
92
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
93
exemplos:
de pares
um par consulta a DHT com a chave
2: Camada de Aplicao
94
2: Camada de Aplicao
95
Identificadores DHT
designa um identificador inteiro a cada par
mesma faixa
para encontrar a chave inteira, aplica a
funo de hash chave original.
2: Camada de Aplicao
96
mais prxima.
conveno de leitura: o mais prximo o
sucessor imediato da chave.
Ex., n=4; pares: 1,3,4,5,8,10,12,14
chave = 13, ento par sucessor = 14
chave = 15, ento par sucessor = 1
2: Camada de Aplicao
97
15
4
12
5
10
antecessor imediatos.
rede sobreposta (overlay)
2: Camada de Aplicao
98
0001
0011
1110
0100
1110
1110
Quem
responsvel pela
chave 1110 ?
1110
0101
1110
1010
1000
2: Camada de Aplicao
99
Quem responsvel
pela chave 1110?
3
15
4
12
5
10
100
Peer churn
1
podem chegar e
sair (churn)
cada para conhece o
3
15
endereo dos seus dois
sucessores
4
cada par periodicamente
12
envia um ping aos seus
5
dois sucessores para
10
verificar se esto vivos
8
se o sucessor imediato
exemplo: par 5 sai abruptamente
sair,
escolha
prximo
par 4 detecta a sada do par
5; torna
8 ooseu
como
o sucessor
sucessor imediato; perguntasucessor
a 8 quem
o seu
imediato.imediato de 8
sucessor imediato; torna o sucessor
como o seu segundo sucessor.
o que fazer caso o par 13 resolva entrar?
2: Camada de Aplicao
101
Supernode
(SN)
2: Camada de Aplicao
102
Soluo:
Intermedirio escolhido,
usando os SNs de Alice e de
Bob.
Cada par inicia sesso com o
intermedirio
Pares podem se comunicar
atravs de NATs atravs do
intermedirio
2: Camada de Aplicao
103
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede
2.2 A Web e o HTTP
2.3 Transferncia de
arquivo: FTP
2.4 Correio Eletrnico
na Internet
2.5 DNS: o servio de
diretrio da Internet
desenvolvimento de
aplicaes com TCP
2.8 Programao de
sockets com UDP
2: Camada de Aplicao
104
em 1981
so explicitamente criados,
usados e liberados por apls
paradigma cliente/servidor
dois tipos de servio de
transporte via API Sockets
datagrama no confivel
fluxo de bytes, confivel
porta), local ao
hospedeiro, criada por e
pertencente aplicao, e
controlado pelo SO,
atravs da qual um
processo de aplicao
pode tanto enviar como
receber mensagens
para/de outro processo
de aplicao
(remoto ou local)
2: Camada de Aplicao
105
controlado pelo
desenvolvedor de
aplicao
controlado
pelo sistema
operacional
processo
socket
TCP com
buffers,
variveis
estao ou
servidor
internet
processo
socket
TCP com
buffers,
variveis
controlado pelo
desenvolvedor de
aplicao
controlado
pelo sistema
operacional
estao ou
servidor
2: Camada de Aplicao
106
107
2: Camada de Aplicao
108
seqncia de caracteres
que fluem de ou para um
processo.
Um fluxo de entrada
conectado a alguma fonte
de entrada para o processo,
por exemplo, teclado ou
socket.
Um fluxo de sada
conectado a uma fonte de
sada, por exemplo, um
monitor ou um socket.
2: Camada de Aplicao
109
2.
3.
4.
input
stream
Processo
Process
cliente
Fluxo de entrada:
Seqncia de bytes
recebidos pelo
processo
Fluxo de sada:
Seqncia de bytes
transmitidos pelo
processo
output
stream
outToServer
1.
inFromServer
monitor
inFromUser
keyboard
input
stream
Socket
clientSocket
cliente TCP socketTCP
to network
from network
2: Camada de Aplicao
110
Cliente
cria socket,
porta=x, para
receber pedido:
socketRecepo =
ServerSocket ()
TCP
aguarda chegada de
pedido de conexo
setup
socketConexo =
socketRecepo.accept()
l pedido de
socketConexo
escreve resposta
para socketConexo
fecha
socketConexo
da conexo
cria socket,
abre conexo a nomeHosp, porta=x
socketCliente =
Socket()
Envia pedido usando
socketCliente
l resposta de
socketCliente
fecha
socketCliente
2: Camada de Aplicao
111
Cria
fluxo de entrada
Cria
socket de cliente,
conexo ao servidor
Cria
fluxo de sada
ligado ao socket
import java.io.*;
import java.net.*;
class ClienteTCP {
public static void main(String argv[]) throws Exception
{
String frase;
String fraseModificada;
BufferedReader doUsuario =
new BufferedReader(new InputStreamReader(System.in));
Socket socketCliente = new Socket(nomeHosp", 6789);
DataOutputStream paraServidor =
new DataOutputStream(socketCliente.getOutputStream());
2: Camada de Aplicao
112
BufferedReader doServidor =
new BufferedReader(new
InputStreamReader(socketCliente.getInputStream()));
frase = doUsuario.readLine();
Envia linha
ao servidor
paraServidor.writeBytes(frase + '\n');
fraseModificada = doServidor.readLine();
L linha
do servidor
}
}
2: Camada de Aplicao
113
Cria socket
para recepo
na porta 6789
Aguarda, no socket
para recepo, o
contato do cliente
Cria fluxo de
entrada, ligado
ao socket
2: Camada de Aplicao
114
DataOutputStream paraCliente =
new DataOutputStream(socketConexo.getOutputStream());
fraseCliente= doCliente.readLine();
fraseEmMaiusculas= fraseCliente.toUpperCase() + '\n';
Escreve linha
ao socket
paraCliente.writeBytes(fraseEmMaiusculas);
}
}
115
no h necessidade de
especificar nem o nome
do servidor nem a porta
2: Camada de Aplicao
116
2: Camada de Aplicao
117
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede
2.2 A Web e o HTTP
2.3 Transferncia de
arquivo: FTP
2.4 Correio Eletrnico
na Internet
2.5 DNS: o servio de
diretrio da Internet
desenvolvimento de
aplicaes com TCP
2.8 Programao de
sockets com UDP
2: Camada de Aplicao
118
119
l pedido do
socketServidor
escreve resposta
ao socketServidor
especificando endereo
IP, nmero de porta
do cliente
Cliente
cria socket,
socketCliente =
DatagramSocket()
cria, enderea (nomeHosp, porta=x,
envia pedido em datagrama
usando socketCliente
l resposta do
socketCliente
fecha
socketCliente
2: Camada de Aplicao
120
UDP
2: Camada de Aplicao
121
Cria
fluxo de entrada
Cria
socket de cliente
Traduz nome de
hospedeiro ao
endereo IP
usando DNS
class clienteUDP {
public static void main(String args[]) throws Exception
{
BufferedReader doUsuario=
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket socketCliente = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName(nomeHosp");
byte[] dadosEnvio = new byte[1024];
byte[] dadosRecebidos = new byte[1024];
String frase = doUsuario.readLine();
dadosEnvio = frase.getBytes();
2: Camada de Aplicao
122
Cria datagrama
com dados para
enviar,
comprimento,
endereo IP, porta
Envia datagrama
ao servidor
L datagrama
do servidor
DatagramPacket pacoteEnviado =
new DatagramPacket(dadosEnvio, dadosEnvio.length,
IPAddress, 9876);
socketCliente.send(pacoteEnviado);
DatagramPacket pacoteRecebido =
new DatagramPacket(dadosRecebidos, dadosRecebidos.length);
socketCliente.receive(pacoteRecebido);
String fraseModificada =
new String(pacoteRecebido.getData());
System.out.println(Do Servidor:" + fraseModificada);
socketCliente.close();
}
}
2: Camada de Aplicao
123
2: Camada de Aplicao
124
Servidor UDP
2: Camada de Aplicao
125
Cria socket
para datagramas
na porta 9876
class servidorUDP {
public static void main(String args[]) throws Exception
{
DatagramSocket socketServidor = new DatagramSocket(9876);
byte[] dadosRecebidos = new byte[1024];
byte[] dadosEnviados = new byte[1024];
while(true)
{
DatagramPacket pacoteRecebido =
new DatagramPacket(dadosRecebidos,
dadosRecebidos.length);
socketServidor.receive(pacoteRecebido);
2: Camada de Aplicao
126
Obtm endereo
IP, no. de porta
do remetente
Cria datagrama p/
enviar ao cliente
Escreve
datagrama
no socket
}
DatagramPacket pacoteEnviado =
new DatagramPacket(dadosEnviados,
dadosEnviados.length, IPAddress, porta);
socketServidor.send(pacoteEnviado);
}
}
127
l mensagem do socket
UDP, obtendo endereo do
cliente (IP e porta do
cliente)
retorna string em
maisculas para este cliente
2: Camada de Aplicao
128
Captulo 2: Resumo
Nosso estudo sobre aplicaes de rede est agora
completo!
Protocolos especficos:
Arquiteturas de aplicaes
cliente-servidor
P2P
aplicaes:
Modelos de servio de
HTTP
FTP
SMTP, POP, IMAP
DNS
P2P: BitTorrent, DHT
Programao de sockets
transporte da Internet
orientado conexo,
confivel: TCP
no confivel, datagramas:
UDP
2: Camada de Aplicao
129
Captulo 2: Resumo
Mais importante: aprendemos sobre protocolos
troca tpica de mensagens
pedido/resposta
formatos de mensagens:
Temas importantes:
msgs de controle vs. dados
na banda, fora da banda
centralizado vs.
descentralizado
s/ estado vs. c/ estado
transferncia de msgs
confivel vs. no confivel
complexidade na borda da
rede
2: Camada de Aplicao
130