Aplicações e protocolos da camada de aplicação
Aplicação: processos distribuídos
em comunicação
❍ executam em hospedeiros
no “espaço de usuário”
❍ trocam mensagens para
implementar aplicação
❍ p.ex., correio, transf. de
arquivo, WWW
Protocolos da camada de apl.
❍ uma “parte” da aplicação
❍ define mensagens trocadas
por apls e ações tomadas
❍ usam serviços providos por
protocolos de camadas
inferiores
Capítulo 2: Camada de Aplicação
Antônio Abelém
[email protected]
2: Camada de Aplicação
programa em execução num
hospedeiro.
❒ 2 processos no mesmo
hospedeiro se comunicam
usando communicação entre
processos definida pelo
sistema operacional (SO).
❒ 2 processos em
hospedeiros distintos se
comunicam usando um
protocolo da camada de
aplicação.
❒
❍
❍
2: Camada de Aplicação
2
Paradigma cliente-servidor (C-S)
Apl. de rede típica tem duas
partes: cliente and servidor
Um agente de usuário
(UA) é uma interface
entre o usuário e a
aplicação de rede.
❍
aplicação
transporte
rede
enlace
física
aplicação
transporte
rede
enlace
física
1
Aplicações de rede: algum jargão
❒ Um processo é um
aplicação
transporte
rede
enlace
física
WWW: browser
Correio:
leitor/compositor de
mensagens
streaming audio/video:
tocador de mídia
2: Camada de Aplicação
3
Cliente:
❒ inicia contato com o servidor
(“fala primeiro”)
❒ tipicamente solicita serviço do
servidor
❒ para WWW, cliente
implementado no browser; para
correio no leitor de mensagens
Servidor:
❒ provê ao cliente o serviço
requisitado
❒ p.ex., servidor WWW envia
página solicitada; servidor de
correio entrega mensagens
aplicação
transporte
rede
enlace
física
pedido
resposta
aplicação
transporte
rede
enlace
física
2: Camada de Aplicação
4
De que serviço de transporte uma
aplicação precisa?
Protocolos da camada de aplicação (cont).
Perda de dados
API: interface de
P: como um processo pode
programação de
“identificar”o outro
aplicações
processo com o qual
quer se comunicar?
❒ define interface entre
❍ endereço IP do
aplicação e camada de
hospedeiro do outro
transporte
processo
❒ socket (= tomada) : API
❍ “número de porta” da Internet
permite que o hospedeiro
❍
2 processos se comunicam
enviando dados para um
socket ou lendo dados de
um socket
❒ algumas apls (p.ex. áudio)
podem tolerar algumas
perdas
❒ outras (p.ex., transf. de
arquivos, telnet) requerem
transferência 100%
confiável
telefonia Internet, jogos
interativos) requerem
baixo retardo para serem
“viáveis”
2: Camada de Aplicação
5
Sensibilidade
temporal
Banda
serviço TCP:
❒
transferência de arqs
correio
documentos WWW
áudio/vídeo de
tempo real
áudio/vídeo gravado
jogos interativos
apls financeiras
sem perdas
sem perdas
sem perdas
tolerante
tolerante
tolerante
sem perdas
elástica
elástica
elástica
áudio: 5Kb-1Mb
vídeo:10Kb-5Mb
como anterior
> alguns Kbps
elástica
não
não
não
sim, 100’s mseg
sim, alguns segs
sim, 100’s mseg
sim e não
2: Camada de Aplicação
7
6
Serviços providos por protocolos de
transporte Internet
Requisitos do serviço de transporte de apls comuns
Perdas
multimídia) requerem
quantia mínima de banda
para serem “viáveis”
❒ outras apls (“apls elásticas”)
conseguem usar qq quantia
de banda disponível
❒ algumas apls (p.ex.,
… voltamos mais tarde a este assunto.
Aplicação
❒ algumas apls (p.ex.,
Temporização
receptor determine a
qual processo deve ser
entregue a mensagem
2: Camada de Aplicação
Largura de banda
orientado a conexão: setup
requerido entre cliente,
servidor
❒ transporte confiável entre
processos remetente e
receptor
❒ controle de fluxo: remetente
não vai “afogar” receptor
❒
controle de
congestionamento:
estrangular remetente quando
a rede carregada
❒ não provê: garantias
temporais ou de banda mínima
serviço UDP:
❒ transferência de dados não
confiável entre processos
remetente e receptor
❒ não provê: setup da conexão,
confiabilidade, controle de
fluxo, controle de
congestionamento, garantias
temporais ou de banda
mínima
P: Qual é o interesse em ter um
UDP?
2: Camada de Aplicação
8
Apls Internet: seus protocolos e seus
protocolos de transporte
Aplicação
Protocolo da
camada de apl
WWW: algum jargão
Protocolo de
transporte usado
❒
Página WWW:
❍
correio eletrônico
accesso terminal remoto
WWW
transferência de arquivos
streaming multimídia
servidor de arquivo remoto
telefonia Internet
smtp [RFC 821]
telnet [RFC 854]
http [RFC 2068]
ftp [RFC 959]
proprietário
(p.ex. RealNetworks)
NSF
proprietário
(p.ex., Vocaltec)
TCP
TCP
TCP
TCP
TCP ou UDP
❍
❒
❍
TCP ou UDP
tipicamente UDP
❒
consiste de “objetos”
endereçada por uma URL
Quase todas as páginas
WWW consistem de:
❍
❒
página base HTML, e
vários objetos
referenciados.
Agent de usuário para
WWW se chama de
browser:
❍
❍
❒
Servidor para WWW se
chama “servidor
WWW”:
❍
URL tem duas partes:
nome de hospedeiro, e
nome de caminho:
MS Internet Explorer
Netscape Communicator
❍
Apache (domínio público)
MS Internet Information
Server (IIS)
www.univ.br/algum-depto/pic.gif
2: Camada de Aplicação
2: Camada de Aplicação
9
WWW: o protocolo http
Mais sobre o protocolo http
http: hypertext transfer
protocol
http: serviço de
transporte TCP:
❒ protocolo da camada de
aplicação para WWW
❒ modelo cliente/servidor
❍
ped
PC executa
Explorer
htt
p
❒ cliente inicia conexão TCP
res
pos
ta
htt
p
cliente: browser que
pede, recebe, “visualiza”
objetos WWW
❍ servidor: servidor
WWW envia objetos em
resposta a pedidos
❒ http1.0: RFC 1945
❒ http1.1: RFC 2068
ido
p
htt
o
Servidor
did
ttp
pe
executando
ah
t
s
po
servidor
res
WWW
da UFPA
Mac executa
Navigator
2: Camada de Aplicação
11
(cria socket) ao servidor,
porta 80
❒ servidor aceita conexão TCP
do cliente
❒ mensagens http (mensagens
do protocolo da camada de
apl) trocadas entre browser
(cliente http) e servidore
WWW (servidor http)
❒ encerra conexão TCP
10
http é “sem estado”
❒ servidor não mantém
informação sobre
pedidos anteriores do
cliente
Nota
Protocolos que mantêm
“estado” são complexos!
❒ história passada (estado)
tem que ser guardada
❒ Caso caia servidor/cliente,
suas visões do “estado”
podem ser inconsistentes,
devem ser reconciliadas
2: Camada de Aplicação
12
Exemplo de http
Exemplo de http (cont.)
Supomos que usuário digita a URL
www.algumaUniv.br/algumDepartmento/inicial.index
(contém texto,
referências a 10
imagens jpeg)
4. servidor http encerra conexão
5. cliente http recebe mensagem
de resposta contendo arquivo
html, visualiza html.
Analisando arquivo html,
encontra 10 objetos jpeg
referenciados
1a. Cliente http inicia conexão
TCP a servidor http (processo)
a www.algumaUniv.br. Porta 80
é padrão para servidor http.
2. cliente http envia mensagem
de pedido de http (contendo
URL) através do socket da
conexão TCP
tempo
TCP .
1b. servidor http no hospedeiro
www.algumaUniv.br espera por
conexão TCP na porta 80.
“aceita” conexão, avisando ao
cliente
6. Passos 1 a 5 repetidos para
cada um dos 10 objetos jpeg
tempo
3. servidor http recebe mensagem
de pedido, formula mensagem
de resposta contendo objeto
solicitado
(algumDepartmento/inicial.index),
envia mensagem via socket
2: Camada de Aplicação
Conexões não persistente and persistente
14
formato de mensagem http: pedido
Persistente
❒ default for HTTP/1.1
❒ na mesma conexão TCP:
servidor analisa pedido,
responde, analisa novo
pedido,..
❒ Cliente envia pedidos
para todos objetos
referenciados assim
que recebe o HTML
base .
A maioria de browsers 1.0 ❒ Menos RTTs and menos
usa connexões TCP paralelas. partida lenta.
Não persistente
❒ HTTP/1.0
❒ servidor analisa
pedido, responde, e
encerra conexão TCP
❒ 2 RTTs para trazer
cada objeto
(RTT=round trip time)
❒ transferência de cada
objeto sofre de
partida lenta
2: Camada de Aplicação
2: Camada de Aplicação
13
Dois tipos de mensagem http: pedido, resposta
❒ mensagem de pedido http:
❒
❍
ASCII (formato legível por pessoas)
linha do pedido
(comandos GET,
POST, HEAD)
GET /somedir/page.html HTTP/1.0
User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
linhas do Accept-language:fr
cabeçalho
15
Carriage return,
line feed
indicate fim
de mensagem
(carriage return (CR), line feed(LF) adicionais)
2: Camada de Aplicação
16
formato de mensagem http: resposta
mensagem de pedido http: formato geral
linha de status
(protocolo,
código de status,
frase de status)
linhas de
cabeçalho
dados, p.ex.,
arquivo html
solicitado
2: Camada de Aplicação
❒ Meta: não enviar objeto se
sucesso, objeto pedido segue mais adiante nesta mensagem
cliente já tem (no cache)
versão atual
❒ cliente: especifica data da
cópia no cache no pedido
http
objeto pedido mudou de lugar, nova localização
especificado mais adiante nesta mensagem (Location:)
400 Bad Request
If-modified-since:
<date>
mensagem de pedido não entendida pelo servidor
❒ servidor: resposta não
404 Not Found
❍
contém objeto se cópia no
cache é atual:
documento pedido não se encontra neste servidor
505 HTTP Version Not Supported
❍
HTTP/1.0 304 Not
Modified
versão de http do pedido não usada por este servidor
2: Camada de Aplicação
18
servidor
cliente
301 Moved Permanently
❍
2: Camada de Aplicação
Interação usuário-servidor: GET condicional
Na primeira linha da mensagem de resposta
servidor->cliente. Alguns códigos típicos:
200 OK
❍
dados dados dados dados ...
17
códigos de status da resposta http
❍
HTTP/1.0 200 OK
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
19
msg de pedido http
If-modified-since:
<date>
resposta http
HTTP/1.0
304 Not Modified
objeto
não
modificado
msg de pedido http
If-modified-since:
<date>
resposta http
objeto
modificado
HTTP/1.1 200 OK
…
<data>
2: Camada de Aplicação
20
Cache WWW (servidor-procurador)
Por quê usar cache WWW?
Meta: atender pedido do cliente sem envolver servidor de origem
❒ usuário configura
browser: acessos WWW
via procurador
❒ cliente envia todos
pedidos http ao
procurador
❍
❍
se objeto estiver no
cache do procurador,
este o devolve
imediatamente na
resposta http
senão, solicita objeto do
servidor de origem,
depois devolve resposta
http ao cliente
Servidor
de origem
cliente
ped
ido
Servidorprocurador
htt
res
p
pos
ta
htt
p
p
t
t
oh
tp
did
ht
pe
sta
o
p
res
p
htt
ido
ttp
d
pe
ah
t
s
po
res
ped
ido
htt
res
p
pos
ta
htt
p
cliente
❍
Servidor
de origem
2: Camada de Aplicação
usuário
na
estação
transferência
do arquivo
Internet
pública
enlace de accesso
2 Mbps
rede da
instituição
muitas vezes é um
gargalo o enlace que liga
a rede da instituição ou
do provedor à Internet
LAN 10 Mbps
cache da
instituição
2: Camada de Aplicação
21
ftp: o protocolo de transferência
de arquivos
Interface cliente
do usuário FTP
FTP
Suposição: cache está
“próximo” do cliente
(p.ex., na mesma rede)
❒ tempo de resposta
menor: cache “mais
próximo” do cliente
❒ diminui tráfego aos
servidores distantes
Servidores
de origem
22
ftp: conexões separadas p/ controle, dados
❒ cliente ftp contata servidor
FTP
servidor
sistema de
arquivos
remoto
sistema de
arquivos
local
❒ transferir arquivo de/para hospedeiro remoto
❒ modelo cliente/servidor
cliente: lado que inicia transferência (pode ser de ou
para o sistema remoto)
❍ servidor: hospedeiro remoto
❒ ftp: RFC 959
❒ servidor ftp: porta 21
❍
2: Camada de Aplicação
23
ftp na porta 21,
especificando TCP como
protocolo de transporte
❒ são abertas duas conexões
TCP paralelas:
❍ controle: troca comandos,
respostas entre cliente,
servidor.
“controle fora da banda”
❍ dados: dados de arquivo
de/para servidor
❒ servidor ftp mantém
“estado”: directório corrente,
autenticação realizada
conexão de controle
TCP, porta 21
cliente
FTP
conexão de dados
TCP, porta 20
servidor
FTP
2: Camada de Aplicação
24
Ftp: comandos, respostas
Correio Eletrônico
Comandos típicos:
Códigos de retorno típicos
Três grandes componentes:
❒ enviados em texto ASCII pelo
❒ código e frase de status (como
❒ agentes de usuário (UA)
canal de controle
❒ USER nome
❒ PASS senha
❒ LIST devolve lista de arquivos
❒
❒
no directório corrente
❒ RETR arquivo recupera (lê)
❒
arquivo remoto
❒ STOR arquivo armazena
❒
(escreve) arquivo no hospedeiro
remoto
para http)
331 Username OK, password
required
125 data connection
already open; transfer
starting
425 Can’t open data
connection
452 Error writing file
2: Camada de Aplicação
❒ caixa de correio contém
mensagens de chegada
(ainda não lidas) p/ usuário
❒ fila de mensagens contém
mensagens de saída (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
usuário
SMTP
SMTP
SMTP
servidor
de correio
agente
de
usuário
SMTP
❒ simple mail transfer protocol:
smtp
Agente de Usuário
SMTP
❒ compor, editar, ler mensagens
de correio
❒ p.ex., Eudora, Outlook, elm,
Netscape Messenger
❒ mensagens de saída e chegando
são armazenadas no servidor
agente
de
usuário
servidor
de correio
SMTP
❒ a.k.a. “leitor de correio”
25
Correio Eletrônico: servidores de correio
Servidores de correio
❒ servidores de correio
servidor
de correio
agente
de
usuário
fila de
mensagens
de saída
caixa de
correio do usuário
servidor
de correio
agente
de
usuário
agente
de
usuário
agente
de
usuário
agente
de
usuário
2: Camada de Aplicação
26
Correio Eletrônico: smtp [RFC 821]
❒ usa tcp para a transferência confiável de msgs do correio
do cliente ao servidor, porta 25
❒ transferência direta: servidor remetente ao servidor
receptor
❒ três fases da transferência
❍ handshaking (cumprimento)
❍ transferência das mensagens
❍ encerramento
❒ interação comando/resposta
❍ comandos: texto ASCII
❍ resposta: código e frase de status
agente
de
usuário
servidor
de correio
agente
de
usuário
agente
de
usuário
2: Camada de Aplicação
❒
27
mensagens precisam ser em ASCII de 7-bits
2: Camada de Aplicação
28
smtp: últimas palavras
Interaction smtp típica
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:
220 doces.br
HELO consumidor.br
250 Hello consumidor.br, pleased to meet you
MAIL FROM: <[email protected]>
250 [email protected]... Sender ok
RCPT TO: <[email protected]>
250 [email protected] ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Voce gosta de chocolate?
Que tal sorvete?
.
250 Message accepted for delivery
QUIT
221 doces.br closing connection
2: Camada de Aplicação
❍
❍
❍
To:
From:
Subject:
Comparação com http
❒ http: pull (puxar)
❒ email: push (empurrar)
❒ ambos tem interação
comando/resposta, códigos
de status em ASCII
❒ http: cada object é
encapsulado em sua própria
mensagem de resposta
❒ smtp: múltiplos objetos de
mensagem enviados numa
mensagem de múltiplas
partes
2: Camada de Aplicação
30
Formato de uma mensagem: extensões para
multimídia
❒ MIME: multimedia mail extension, RFC 2045, 2056
cabeçalho
❒ linhas adicionais no cabeçalho da msg declaram tipo do
linha em
branco
conteúdo MIME
versão MIME
corpo
método usado
p/ codificar dados
diferentes dos comandos de
smtp!
tipo, subtipo de
dados multimídia,
declaração parâmetros
❒ corpo
❍
persistentes
❒ smtp requerque a mensagem
(cabeçalho e corpo) sejam em
ascii de 7-bits
❒ algumas cadeias de caracteres
não são permitidas numa
mensagem (p.ex., CRLF.CRLF).
Logo a mensagem pode ter que
ser codificada (normalmente
em base-64 ou “quoted
printable”)
❒ servidor smtp usa CRLF.CRLF
para reconhecer o final da
mensagem
29
Formato de uma mensagem
smtp: protocolo para trocar
msgs de correio
RFC 822: padrão para formato
de mensagem de texto:
❒ linhas de cabeçalho, p.ex.,
❒ smtp usa conexões
a “mensagem”, somente de
caracteres ASCII
Dados codificados
2: Camada de Aplicação
31
From: [email protected]
To: [email protected]
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 Aplicação
32
Tipo Multipart
Tipos MIME
From: [email protected]
To: [email protected]
Subject: Imagem de uma bela torta
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
Content-Type: tipo/subtipo; parâmetros
Text
Audio
❒ subtipos exemplos: plain,
❒ subtipos exemplos : basic
html
❒ charset=“iso-8859-1”,
ascii
Image
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
(8-bit codificado mu-law),
32kadpcm (codificação 32
kbps)
caro Bernardo,
Anexa a imagem de uma torta deliciosa.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
Application
❒ outros dados que precisam
❒ subtipos exemplos : jpeg,
gif
Video
❒ subtipos exemplos : mpeg,
ser processados por um
leitor para serem
“visualizados”
❒ subtipos exemplos :
msword, octet-stream
base64 encoded data .....
.........................
......base64 encoded data
--98766789--
quicktime
2: Camada de Aplicação
Protocolos de accesso ao correio
agente
de
usuário
SMTP
SMTP
POP3 ou
IMAP
2: Camada de Aplicação
33
Protocolo POP3
fase de autorização
agente
de
usuário
❒ comandos do cliente:
user: declara nome
❍ pass: senha
❒ servidor responde
❍ +OK
❍
servidor de correio
do remetente
servidor de correio
do receptor
❒ SMTP: entrega/armazenamento no servidor do receptor
❒ protocolo de accesso ao correio: recupera do servidor
❍
❍
❍
❍
POP: Post Office Protocol [RFC 1939]
• autorização (agente <-->servidor) e transferência
IMAP: Internet Mail Access Protocol [RFC 1730]
• mais comandos (mais complexo)
• manuseio de msgs armazenadas no servidor
HTTP: Hotmail , Yahoo! Mail, Webmail, etc.
2: Camada de Aplicação
-ERR
fase de transação, cliente:
❒ list: lista números das
msgs
❒ retr: recupera msg por
35
número
❒ dele: apaga msg
❒ quit
34
S:
C:
S:
C:
S:
+OK POP3 server ready
user ana
+OK
pass faminta
+OK user successfully logged
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 Aplicação
on
36
Nomes DNS
DNS: Domain Name System
Domain Name System:
Pessoas: muitos
identificadores:
❍
❍
❍
base de dados distribuída
❒
protocolo de camada de aplicação
CPF, nome, no. de
Passaporte
hospedeiros, roteadores
Internet :
endereço IP (32 bit) usado p/ endereçar
datagramas.
“nome”, e.g.,
marajo.ufpa.br - usado
por gente.
P: como mapear entre
nome e endereço IP?
❒
❒
implementada através de uma
hierarquia servidores de nomes.
permite que hospedeiros,
roteadores e servidores de nomes
se comuniquem para resolver
nomes (tradução endereço/nome)
❍ note: função imprescindível da
Internet implementada como
protocolo de camada de
aplicação
❍ complexidade na borda da rede
2: Camada de Aplicação
37
com
gov
edu
Raiz
br
...
us
...
ucla
...
com
petrobras
puc-rio
rdc
ufrj
...
...
inf
censud
tijuca
triton
...
bach
amazonas
tpd
❒
nome-n. ... .nome-2.nome-1
Conceitualmente, o nível mais alto (nome-1) permite
duas formas diferentes de nomeação:
❍
Organizacional
• com, edu, gov, int, mil, net e org
❍
Geográfica
• Código dos países: xx (código ISO de 2 letras - exceto uk )
❒
Exemplos:
❍
inf.puc-rio.br
jb.com.br microsoft.com purdue.edu
2: Camada de Aplicação
38
❒ Delegação de responsabilidades
❍ Não é apenas uma única entidade que gerencia
todos os rótulos na árvore hierárquica
❍ O inter-NIC gerencia o topo da árvore e delega
responsabilidades para as sub-árvores
restantes (denominadas de zonas)
.
.
.
nasa
•
Organização distribuída da
base de dados
DNS - Estrutura Hierárquica
.
Um nome de domínio é uma concatenação de nomes:
ecp
nilo
2: Camada de Aplicação
39
❒ O espaço de nomes particionado em zonas
❍ zonas facilitam organização federada e
hierárquica de autoridades de gerenciamento do
espaço de nomes
❍ zonas delegadas a organizações autorizadas
(p.ex: br ⇒ puc-rio ⇒ inf )
2: Camada de Aplicação
40
Zona x Domínio
Zona pucpuc-rio.br
Máquina responsável:
responsável:
vialáctea.rdc.pucvialáctea.rdc.puc-rio.br
139.82.1.2
ele
civ
Servidores de nomes DNS
Por quê não centralizar o ❒ Nenhum servidor mantém
todos os mapeamento nomeDNS?
para-endereço IP
❒ ponto único de falha
servidor de nomes local:
❒ volume de tráfego
❍ cada provedor, empresa tem
❒ base de dados
servidor de nomes local (default)
centralizada e distante
❍ pedido DNS de hospedeiro vai
primeiro ao servidor de nomes
❒ manutenção (da BD)
br
Zona inf.pucinf.puc-rio.br
Máquina responsável:
responsável:
exu.inf.pucexu.inf.puc-rio.br
139.82.16.3
puc-rio
inf
rdc
bach
odudua
tpd
local
ecp
triton
Domínio puc-rio.br
jatoba
Não é escalável!
nilo
servidor de nomes autoritativo:
❍
❍
2: Camada de Aplicação
p/ hospedeiro: guarda nome,
endereço IP dele
pode realizar tradução
nome/endereço para este nome
2: Camada de Aplicação
41
DNS: Servidores raíz
Implementação do DNS
❒ procurado por servidor
❒ A estrutura hierárquica é global e
local que não consegue
resolver o nome
❒ servidor raíz:
❍ procura servidor
autoritativo se
mapeamento
desconhecido
❍ obtém tradução
❍ devolve
mapeamento ao
servidor local
❒ ~ uma dúzia de
servidores raíz no
mundo
42
distribuída entre servidores de nomes
❒ resolução de nomes ⇒ uma pesquisa
distribuída
❒ Tipo da pesquisa:
recursiva: fornece resultado
❍ iterativa: fornece uma dica
❍
❒ Uso de cache
❍ guardar respostas localmente
❍ dados marcados com TTL (Time To Live)
2: Camada de Aplicação
43
2: Camada de Aplicação
44
Resolução de Nomes
nome lógico
nome
lógico
Módulo de
Resolução de
Nomes
Exemplo simples do DNS
hospedeiro tucuxi.ufpa.br
requer endereço IP de
www.cs.columbia.edu
FTP
FTP
Estabelece
conexão com
endereço IP
Endereço
IP
Estação Origem
❒
Estação Destino
Módulo Resolução de Nomes: consulta arquivos locais
ou um serviço de resolução de nomes 2: Camada de Aplicação
Exemplo de DNS
❒ pode não conhecer o
7
servidor de nomes
autoritativo
❒ pode conhecer
contactar para
descobrir o servidor
de nomes autoritativo
servidor local
marajo.ufpa.br
1
solicitante
8
solicitante
2
responsabilidade de
reolução do nome para
o servidor de nomes
contatado
❒ carga pesada?
www.cs.columbia.edu
consulta iterativa:
tucuxi.ufpa.br
www.cs.columbia.edu
47
responde com o nome
de um servidor de
contato
❒ “Não conheço este
nome, mas pergunte
para esse servidor”
46
servidor de
nomes raíz
consulta
iterativa
3
4
7
servidor local
marajo.ufpa.br
1
8
❒ servidor consultado
servidor autoritativo
cs.columbia.edu
servidor autoritativo
cs.columbia.edu
2: Camada de Aplicação
❒ transfere a
servidor intermediário
saell.cc.columbia.edu
5
4
4
6
tucuxi.ufpa.br
consulta recursiva:
3
2: Camada de Aplicação
1
DNS: consultas iterativas
6
2
servidor local
45
servidor de
nomes raíz
Servidor raíz:
servidor de nomes
intermediário: a quem
3. Servidor raíz contata
servidor autoritativo
cs.columbia.edu, se
necessário
IP
Inter-Rede
3
5
2. marajo.ufpa.br contata
marajo.ufpa.br
servidor raíz, se necessário
envia datagrama
IP p/ end. IP
IP
2
1. Contata servidor DNS local,
marajo.ufpa.br
TCP
TCP
servidor de
nomes raíz
solicitante
servidor intermediário
saell.cc.columbia.edu
5
6
servidor autoritativo
cs.columbia.edu
tucuxi.ufpa.br
www.cs.columbia.edu
2: Camada de Aplicação
48
Resolvedor (“Resolver”)
Elementos do DNS
❒ Cliente que acessa o Servidor de Nomes
❍ Funções já contidas nas bibliotecas do sistema
❒ Modelo Cliente-Servidor
❒ Informações (queries) podem ser solicitadas
❒ Parte do cliente
❍
de forma recursiva ou iterativa
❒ Abreviações de nomes
Resolvedor (“Resolver”)
❒ Parte do servidor
❍
❍
Servidor de nomes
Se o nome dado pelo usuário não é encontrado,
sufixos são agregados para verificar se usuário usou
uma abreviação
• amazonas=> nilo.ecp.inf.puc-rio.br; nilo.inf.puc-rio.br;
nilo.puc-rio.br
❍
Abreviação é facilidade oferecida opcionalmente por
clientes
• Incorporada ao DNS mas não faz parte do protocolo
2: Camada de Aplicação
❒
resultado
❒
recursiva
❒
Configuração Win2000:
❍
Servidor
inf.puc-rio.br
dica
UNIX: arquivo /etc/resolv.conf
nameserver 139.82.16.3
nameserver 139.82.1.2
domain
inf.puc-rio.br
search
inf.puc-rio.br tpd.inf.puc-rio.br ecp.inf.pucrio.br
puc-rio.br
Servidor
puc-rio.br
Interativa: fornece uma
Cliente
(resolvedor)
❒
Servidor
raíz
Servidor
br
Recursiva: fornece
50
Resolvedor (“Resolver”)
Exemplo de Consultas
iterativa
2: Camada de Aplicação
49
Start -> Settings -> Control Panel -> Network -> Protocols
-> (Selecionar TCP/IP Protocol) -> Properties -> DNS
Servidor
local
2: Camada de Aplicação
51
2: Camada de Aplicação
52
Servidor de Nomes
Tipos de Servidores
❒ Programas servidores que fornecem
❒ Primário: mantem as tabelas de configuração
mapeamento nome ⇒ endereço
❍
de DNS localmente
tb. mantêm informação sobre recursos do domínio
❒ Secundário (slave): recebe atualização do
❒ Servidores de nomes mantêm BDs de zonas
primário com informação sobre a zona
❒ Servidores replicam BDs para facilitar acesso
❍
❍
servidor primário mantém BD “autoritativa” da zona
secundários carregam suas BDs a partir do primário
(transferência de zona)
2: Camada de Aplicação
domínios consultados, sem nenhuma informação
local
2: Camada de Aplicação
53
54
Redundância no DNS
Sub-tipos de Servidores
❒
❒ Caching-only: Somente realiza cache dos
Forwarders - são servidores designados para receber e
Servidor Primário + Servidor(es) Secundário(s)
tratar todas as consultas para fora do site. Os outros
139.82.1.2
139.82.16.3
inf.pucinf.puc-rio.br
servidores primeiro consultam ele. Se após um tempo
pucpuc-rio.br
máximo este não responder, ai sim eles podem fazer a
consulta externa.
❒
Forwarder-only - É o único servidor que pode fazer
consultas fora do site. Todos os outros dependem
Asa
Asaasas
asasassa
assaasae
asae….
….
completamente dele para consultas externas.
2: Camada de Aplicação
...
Zona pucpuc-rio.br
(original)
55
Asa
asas
assa
asae
….
Asa
Asaasas
asasassa
assaasae
asae….
….
...
Asa
asas
assa
asae
….
Zona inf.pucinf.puc-rio.br
(original)
Zona inf.pucinf.puc-rio.br
(cópia)
cópia)
Asa
Asaasas
asasassa
assaasae
asae….
….
...
Asa
asas
assa
asae
….
Asa
Asaasas
asasassa
assaasae
asae….
….
...
Asa
asas
assa
asae
….
Zona pucpuc-rio.br
(cópia)
cópia)
2: Camada de Aplicação
56
Servidor de Nomes
❒ Servidor de Nomes (Name
❍ Unix
DNS: uso de cache, atualização de dados
Server)
uma vez um servidor qualquer aprende um
mapeamento, ele o coloca em cache local
❍ futuras consultas são resolvidas usando dados
da cache
❍ entradas no cache são sujeitas a temporização
(desaparecem depois de certo tempo)
ttl = time to live (sobrevida)
❒ estão sendo projetados pela IETF mecanismos
de atualização/notificação dos dados
❒
• Bind - um dos mais populares
• Processo: in.named
• Arquivos: named.conf (named.boot), root.servers, arquivos
com informações referentes a zona de responsabilidade do
servidor
❍
Win2000
• Microsoft DNS Server (Start -> Programs ->
Administrative Tools -> DNS Manager)
• Base de dados local armazenada em arquivos contidos no
diretório \Winnt\system32\Dns
❍
RFC 2136
❍
http://www.ietf.org/html.charters/dnsind-charter.html
❒ Respostas fornecidas podem ser
2: Camada de Aplicação
“autoritativas” ou “não-autoritativas”
DNS - Registros mais importantes
❒
2: Camada de Aplicação
57
Start of Authority (SOA):tem domínio, primário,
DNS - Registros mais importantes
❒
configuração
❒
este domínio
❍
❒
IN NS
exu.inf.puc-rio.br
exu.inf.puc-rio.br IN A 139.82.16.3
Canonical Name (CNAME): especificar “apelido”
❍
www.inf.puc-rio.br IN CNAME exu.inf.puc-rio.br
2: Camada de Aplicação
3.16.82.139.in-addr.arpa IN PTR exu.inf.puc-rio.br
❒
Host Information (HINFO): detalhes da estação
❒
Mail eXchanger (MX): apelidos para os servidores de
e-mail
Address (A): mapeamento nome ⇒ endereço
❍
❒
inf.puc-rio.br
Pointer (PTR): mapeamento reverso (end ⇒ nome)
❍
Name Server (NS): indica os servidores para
58
❍
inf.puc-rio.br
IN MX 0
exu.inf.puc-rio.br
❍
inf.puc-rio.br
IN MX 10
omega.lncc.br
❒ Servidores de e-mail podem pesquisar registros MX
em ordem de prioridade
59
2: Camada de Aplicação
60
DNS: protocolo, mensagens
DNS - Ferramentas de Diagnóstico
protocolo DNS: mensagens pedido e resposta, ambas
com o mesmo formato de mensagem
❒ nslookup
❍
Permite acesso as informações de DNS de um
domínio
cabeçalho de msg
❒ identification: ID de 16 bit
para pedido, resposta ao
pedido usa mesmo ID
❒ flags:
❍ pedido ou resposta
❍ recursão desejada
❍ recursão permitida
❍ resposta é autoritativa
• Estação responsável pela zona e e-mail do
administrador da zona
• Servidora de Mail da zona
• Mapeamento de nomes em endereços IP e vice-versa
• Informações sobre estações (HINFO)
• ...
2: Camada de Aplicação
2: Camada de Aplicação
61
62
Observações Relevantes sobre
DNS
DNS: protocolo, mensagens
❒ Dualidade sobre o protocolo de transporte
campos nome, tipo
num pedido
RRs em resposta
ao pedido
❍
consultas normalmente usam UDP (porta 53)
❍
sincronização de BDs usa TCP (porta 53)
❒ Desempenho
registros para
servidores autoritativos
info adicional
“relevante” que
pode ser usada
❍
acesso lento ao DNS pode atrasar toda comunicação
❍
erros em BDs do DNS podem causar falhas de coms.
❍
acesso ao servidor DNS pode se tornar um gargalo
❍
2: Camada de Aplicação
63
exemplo: servidor DNS atrás de um roteador
congestionado
2: Camada de Aplicação
64
Programação com sockets
Programação com sockets usando TCP
Meta: aprender a construir aplicação cliente/servidor
que se comunica usando sockets
socket
API Sockets
uma interface (uma
❍
❍
datagrama não confiável
fluxo de bytes, confiável
“porta”), local ao
hospedeiro, criada por e
pertencente à aplicação, e
controlado pelo SO,
através da qual um
processo de aplicação
pode tanto enviar como
receber mensagens
para/de outro processo
de aplicação
(remoto ou local)
2: Camada de Aplicação
controlado pelo
programador de
aplicação
controlado
pelo sistema
operacional
socket
TCP com
buffers,
variáveis
internet
estação ou
servidor
Cliente deve contactar servidor ❒ Quando cliente cria socket: TCP
do cliente estabelece conexão
❒ processo servidor deve antes
ao servidor TCP
estar em execução
❒ Quando contactado pelo cliente,
❒ servidor deve antes ter
servidor TCP cria socket novo
criado socket (porta) que
processo servidor poder se
aguarda contato do cliente
comunicar com o cliente
Cliente contacta servidor por:
❍ permite que o servidor
❒ criar socket TCP local ao
converse com múltiplos
cliente
clientes
❒ especificar endereço IP,
ponto de vista da aplicação
número de porta do processo
TCP provê transferência
servidor
confiável, ordenada de bytes
(“tubo”) entre cliente e servidor
67
socket
TCP com
buffers,
variáveis
controlado pelo
programador de
aplicação
controlado
pelo sistema
operacional
estação ou
servidor
2: Camada de Aplicação
65
Programação com sockets usando TCP
2: Camada de Aplicação
processo
processo
66
Programação com sockets usando TCP
Exemplo de apl cliente-servidor:
❒ cliente lê linha da entrada
padrão (fluxo doUsuário),
envia para servidor via socket
(fluxo paraServidor)
❒ servidor lê linha do socket
❒ servidor converte linha para
letra maiúscula, devolve para
o cliente
❒ cliente lê linha modificada do
socket (fluxo doServidor),
imprime-a
Input stream: sequence of
bytes into process
Output stream: sequence of
bytes out of process
doUsuário
doServidor
1981
❒ explicitamente criados,
usados e liberados por apls
❒ paradigma cliente/servidor
❒ dois tipos de serviço de
transporte via API Sockets
paraServidor
❒ apareceu em BSD4.1 UNIX,
Socket: uma porta entre o processo de aplicação e um
protocolo de transporte fim-a-fim (UDP ou TCP)
Serviço TCP: transferência confiável de bytes de um
processo para outro
socket do cliente
2: Camada de Aplicação
68
Interações cliente/servidor com socket: TCP
Servidor
(executa em idHosp)
Exemplo: cliente Java (TCP)
Cliente
import java.io.*;
import java.net.*;
class ClienteTCP {
cria socket,
porta=x, para
receber pedido:
socketRecepção =
ServerSocket ()
aguarda chegada de
setup
pedido de conexão
socketConexão =
socketRecepção.accept()
TCP
da conexão
public static void main(String argv[]) throws Exception
{
String frase;
String fraseModificada;
cria socket,
abre conexão a idHosp, porta=x
socketCliente =
Socket()
Cria
fluxo de entrada
Envia pedido usando
socketCliente
lê pedido de
socketConexão
escreve resposta
para socketConexão
Cria
socket de cliente,
conexão ao servidor
lê resposta de
socketCliente
fecha
socketConexão
fecha
socketCliente
2: Camada de Aplicação
Create
output stream
attached to socket
BufferedReader doUsuario =
new BufferedReader(new InputStreamReader(System.in));
Socket socketCliente = new Socket(”idHosp", 6789);
DataOutputStream paraServidor =
new DataOutputStream(socketCliente.getOutputStream());
2: Camada de Aplicação
69
Exemplo: cliente Java (TCP), cont.
70
Exemplo: servidor Java (TCP)
import java.io.*;
import java.net.*;
Cria
fluxo de entrada
ligado ao socket
BufferedReader doServidor =
new BufferedReader(new
InputStreamReader(socketCliente.getInputStream()));
frase = doUsuario.readLine();
Envia linha
ao servidor
Cria socket
para recepção
na porta 6789
paraServidor.writeBytes(frase + '\n');
fraseModificada = doServidor.readLine();
Lê linha
do servidor
class servidorTCP {
System.out.println(”Do Servidor: " + fraseModificada);
socketCliente.close();
Aguarda, no socket
para recepção, o
contato do cliente
Cria fluxo de
entrada, ligado
ao socket
}
}
2: Camada de Aplicação
71
public static void main(String argv[]) throws Exception
{
String fraseCliente;
StringfFraseMaiusculas;
ServerSocket socketRecepcao = new ServerSocket(6789);
while(true) {
Socket socketConexao = socketRecepcao.accept();
BufferedReader doCliente =
new BufferedReader(new
InputStreamReader(socketConexao.getInputStream()));
2: Camada de Aplicação
72
Exemplo: servidor Java (TCP), cont
Cria fluxo
de saída, ligado
ao socket
Programação com sockets usando UDP
DataOutputStream paraCliente =
new DataOutputStream(socketConexão.getOutputStream());
Lê linha
do socket
fraseCliente= doCliente.readLine();
fraseEmMaiusculas= fraseCliente.toUpperCase() + '\n';
Escreve linha
ao socket
paraClient.writeBytes(fraseEmMaiusculas);
}
}
}
Final do elo while,
volta ao início e aguarda
conexão de outro cliente
cria socket,
porta=x, para
pedido que chega:
socketServidor =
DatagramSocket()
lê pedido do
socketServidor
escreve resposa
ao socketServidor
especificando endereço
IP, número de porta
do cliente
UDP provê transferência
não confiável de grupos
de bytes (“datagramas”)
entre cliente e servidor
2: Camada de Aplicação
73
Interações cliente/servidor com socket: UDP
(executa em idHosp)
ponto de vista da aplicação
UDP: dados transmitidos
podem ser recebidos fora
de ordem, ou perdidos
2: Camada de Aplicação
Servidor
UDP: não tem “conexão” entre
cliente e servidor
❒ não tem “handshaking”
❒ remetente coloca
explicitamente endereço IP
e porta do destino
❒ servidor deve extrair
endereço IP, porta do
remetente do datagrama
recebido
74
Exemplo: cliente Java (UDP)
Cliente
import java.io.*;
import java.net.*;
cria socket,
socketCliente =
DatagramSocket()
Cria
fluxo de enrada
cria, endereça (idHosp, porta=x,
envia pedido em datagrama
usando socketCliente
Cria
socket de cliente
Traduz nome de
hospedeiro ao
endereço IP
usando DNS
lê resposa do
socketCliente
fecha
socketCliente
class clienteUDP {
public static void main(String args[]) throws Exception
{
BufferedReader do Usuario=
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket socketCliente = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName(”idHosp");
byte[] dadosEnvio = new byte[1024];
byte[] dadosRecebidos = new byte[1024];
String frase = doUsuario.readLine();
dadosEnvio = frase.getBytes();
2: Camada de Aplicação
75
2: Camada de Aplicação
76
Exemplo: cliente Java (UDP) cont.
Cria datagrama com
dados para enviar,
comprimento,
endereço IP, porta
Exemplo: servidor Java (UDP)
import java.io.*;
import java.net.*;
DatagramPacket pacoteEnviado =
new DatagramPacket(dadosEnvio, dadosEnvio.length,
IPAddress, 9876);
Envia datagrama
ao servidor
socketCliente.send(pacoteEnviado);
DatagramPacket pacoteRecebido =
new DatagramPacket(dadosRecebidos, dadosRecebidos.length);
Lê datagrama
do servidor
Cria socket
para datagramas
na porta 9876
String fraseModificada =
new String(pacoteRecebido.getData());
Aloca memória para
receber datagrama
System.out.println(”Do Servidor:" + fraseModificada);
socketCliente.close();
}
Recebe
datagrama
}
2: Camada de Aplicação
77
Exemplo: servidor Java (UDP), cont
String frase = new String(pacoteRecebido.getData());
InetAddress IPAddress = pacoteRecebido.getAddress();
int port = pacoteRecebido.getPort();
String fraseEmMaiusculas = frase.toUpperCase();
dadosEnviados = fraseEmMaiusculas.getBytes();
Cria datagrama p/
enviar ao cliente
DatagramPacket pacoteEnviado =
new DatagramPacket(dadosEnviados,
dadosEnviados.length, IPAddress, porta);
Escreve
datagrama
ao socket
socketServidor.send(pacoteEnviado);
}
}
}
Fim do elo while,
volta ao início e aguarda
chegar outro datagrama
DatagramSocket socketServidor = new DatagramSocket(9876);
byte[] dadosRecebidos = new byte[1024];
byte[] dadosEnviados = new byte[1024];
socketCliente.receive(pacoteRecebido);
Obtém endereço
IP, no. de porta
do remetente
class servidorUDP {
public static void main(String args[]) throws Exception
{
2: Camada de Aplicação
79
while(true)
{
DatagramPacket pacoteRecebido =
new DatagramPacket(dadosRecebidos,
dadosRecebidos.length);
socketServidor.receive(pacoteRecebido);
2: Camada de Aplicação
78
Download

Capítulo 2: Camada de Aplicação