Você está na página 1de 26

Camada de aplicação

 Conceitos, implementação de protocolos da camada


de aplicação
• Paradigma cliente-servidor
• Modelos de serviço
 Protocolos da camada de aplicação
• HTTP
• FTP
• SMTP, POP
• DNS
 CDN
 P2P
 Programação de protocolos da camada de aplicação
• Interface de sockets

Camada de aplicação 1

Aplicações em rede
 Processo é um programa a ser executado numa
máquina
 Na mesma máquina – comunicação entre-processos
(sistema operativo)
 Em máquinas distintas – protocolo da camada de
aplicação
 Agente de utilizador (user agent)
• Interface com o utilizador e com a rede
• Implementa o protocolo da camada de aplicação
• WWW: browser
• email: leitor de correio (mail reader)

Camada de aplicação 2
Paradigma cliente-servidor
 Em geral, protocolo da camada de aplicação tem
duas componentes: cliente e servidor
 Cliente
• Inicia o contacto com o servidor
• Solicita pedidos ao servidor
• WWW: cliente é implementado no browser
• email: cliente (SMTP e POP) é implementado no leitor de
correio
 Servidor
• Fornece os serviços solicitados pelo cliente
• WWW: servidor Web entrega páginas solicitadas
• Email: servidor entrega correio ao destinatário

Camada de aplicação 3

Endereçamento e API
 Identificação de um processo
• Endereço IP identifica a estação onde reside o processo
• Porto identifica processo dentro de uma estação
 Portos
• Portos bem-conhecidos (0-1023): servidor
• HTTP – 80; SMTP – 25;SSH - 22
• Portos efémeros: cliente
 Interface entre a camada de aplicação e a camada de
transporte (Application Programming Interface, API)
• Camada de aplicação escreve e lê em sockets

Camada de aplicação 4
Requisitos das aplicações
 Perdas
• Tolerante a perdas: áudio
• Intolerante a perdas: transferência de ficheiros
 Atrasos
• Tolerante a atrasos: transferência de ficheiros, WWW ?
• Intolerante a atrasos: VoIP, jogos distribuídos
 Entrega sequencial dos pacotes
 Largura de banda
• Aplicações elásticas: transferência de ficheiros
• Aplicações de tempo-real: multimedia

Camada de aplicação 5

Requisitos: exemplos
Largura de
Aplicação Perdas banda Atrasos

Transferência ficheiros não elástica tolerante


email não elastica tolerante
Documentos Web não elástica tolerante
áudio/vídeo tempo-real tolerante áudio: 5kb-1Mb não, 100’s ms
vídeo:10kb-5Mb
áudio/vídeo armazenado tolerante como o anterior não, seg
Jogos interactivos tolerante ordem dos kbit/s não, 100’s ms
Mensagens instantâneas não elástica sim e não !

Camada de aplicação 6
Serviços fornecidos pela camada
de transporte
 Transmission Control Protocol (TCP)
• Orientado à sessão (connection-oriented)
• Transferência fiável
• Entrega sequencial
• Controlo de fluxo e de congestão
• Não dá garantias de atraso
• Não dá garantias de largura de banda
 User Datagram Protocol (UDP)
• Não é orientado à sessão
• Não dá garantias às aplicações

Camada de aplicação 7

Aplicações e serviços: exemplos

Protocolo da camada Camada de


Aplicação de aplicação transporte

email SMTP [RFC 821] TCP


Acesso remoto Telnet [RFC 854] TCP
WWW HTTP [RFC 2616] TCP
Transferência de ficheiros FTP [RFC 959] TCP
streaming multimedia HTTP, RTP [RFC 3550] TCP ou UDP
Ficheiros em rede NFS TCP ou UDP
VoIP SIP, RTP, proprietário Tipicamente UDP

Camada de aplicação 8
Hypertext Transport Protocol
(HTTP)
 O protocolo da camada de
aplicação da WWW Ped
ido
HT
 Cliente PC com Re
spo
TP
Explorer sta
• Browser que solicita, recebe e HT
TP
apresenta objectos
 Servidor TT
P
oH TP Servidor
• Envia objectos em resposta a did HT
Pe t a Apache
pedidos os
sp
Re
• Não guarda informação de
estado sobre pedidos anteriores
PC com
 Porto bem-conhecido: 80 Firefox
 Camada de transporte: TCP

Camada de aplicação 9

HTTP: exemplo
http://www.ist.utl.pt/index.html Servidor HTTP
Browser www.ist.utl.pt
Escuta sessões TCP
Sessão TCP
Porto 80
www.ist.utl.pt
Porto 80
Aceita sessão
Pedido
URL: index.html
Resposta
OK: index.html
Fecha sessão

Recebe pedido
Mostra página
Identifica imagens

Camada de aplicação 10
Persistência
 Não persistente
• HTTP/1.0
• Servidor fecha a sessão TCP depois de satisfazer o pedido
• 2 x RTT até à recepção do objecto
• Browsers podem abrir sessões paralelas
 Persistente
• HTTP/1.1
• Múltiplos pedidos na mesma sessão TCP
• Browser envia pedidos logo que os identifica (pipelining)
• Mais rápido do que com sessões não-persistentes

Camada de aplicação 11

Pedido: exemplo
Linha de pedido
(GET, HEAD, POST)

GET /index.html HTTP/1.1


Accept: text/html, image/gif, image/jpg
Accept-Language: en-us
User-agent: Mozilla/4.0
Host: www.ist.utl.pt

Linhas de
cabeçalho
cr + lf

Camada de aplicação 12
Anatomia de um pedido
Linha de
Método URL Versão cr lf pedido
Nome do cabeçalho : Valor cr lf
Linhas de
cabeçalhos
Nome do cabeçalho : Valor cr lf
cr lf

Corpo da
mensagem

Camada de aplicação 13

Resposta: exemplo
Linha de resposta Corpo da
mensagem
HTTP/1.1 200 OK
Date: Fri, 22 Feb 2001 13:20:50 GMT
Server: Apache/1.3.6 (Unix)
Content-type: text/html
Content-Length: 327

<HTML>
<TITLE>Instituto Superior T&eacute;cnico<TITLE>

Linhas de cr + lf
cabeçalho

Camada de aplicação 14
Anatomia de uma resposta
Linha de
Versão Código Expressão cr lf resposta
Nome do cabeçalho : Valor cr lf
Linhas de
cabeçalhos
Nome do cabeçalho : Valor cr lf
cr lf

Corpo da
mensagem

Camada de aplicação 15

POST e Common Gateway


Interface (CGI)
 Geração de conteúdo dinâmico
 Browser apresenta um formulário
 Pedido do browser ao servidor
• Método POST
• URL de um cgi a ser executado no servidor
• Corpo da mensagem contem os dados introduzidos no
formulário
 Servidor executa o cgi
 Servidor envia o resultado ao browser

Camada de aplicação 16
Códigos de resposta
 200 OK
• Pedido bem sucedido. Objecto no corpo da mensagem
 301 Moved Permanently
• Localização do objecto foi alterada. Nova URL indicada no
cabeçalho Location:
 304 Not Modified
• Objecto não foi modificado desde a data contida no cabeçalho
If-modified-since
 400 Bad Request
• Erro genérico. Pedido não é entendido pelo servidor
 404 Not Found
• O documento não existe no servidor
 505 HTTP Version Not Supported

Camada de aplicação 17

Cabeçalhos
 Pedidos  Respostas
• Host: • Date:
• User-Agent: • Server:
• Accept: (text/*, image/gif) • Last-Modified:
• If-Modified-Since:

 Comuns a pedidos e respostas


• Content-Type:
• Content-Length:
• Transfer-Encoding: chunked
• Connection: close

Camada de aplicação 18
Cookies
primavera.lx.it.pt www.amazon.com

GET

Set-cookie: 1458279
GET
Cookie: 1458279

www.amazon.com parâmetros utilizador


GET
1458279 Cookie: 1458279 1458279

Servidores proxy (Web cache)


 Utilizador configura o
browser para usar o Servidor
servidor proxy original

 Browser faz pedido ao Ped


Servidor
ido proxy TP
servidor proxy HT HT
R
cliente espo TP ed ido TP
sta P HT
• Se servidor proxy tiver HT posta
TP s
Re
objecto, envia-o ao cliente TP
T
Caso contrário, faz o pedido oH P
• did TT
Pe t aH
ao servidor origem, recebe o os
sp
objecto, envia-o ao cliente Re

• Servidor proxy guarda o cliente


Servidor
objecto em cache
original

Camada de aplicação 20
Vantagem dos servidores proxy
Servidores
origem

 Dimensão média de um Internet


pedido, E(B)
 Taxa de sucesso, α
 Débito de pedidos, r Ligação a 15 Mb/s
 Débito do canal, c
Ethernet
local
100 Mbps LAN
ρ = (1 − α)rE(B)/c

Servidor
proxy

Camada de aplicação 21

Get condicional
primavera.lx.it.pt www.books.com

GET /novels HTTP/1.1


Host: www.books.com

HTTP/1.1 200 OK
Date: Sat, 20 Mar 2010 15:30:00
Last-Modified: Mon, 15 Mar 2010 10:00:00

GET /novels HTTP/1.1


Host: www.books.com
If-Modified-Since: Mon, 15 Mar 2010 10:00:00 HTTP/1.1 304 Not Modified
Date: Sun, 21 Mar 2010 17:50:37
File Transfer Protocol (FTP)
Transferência de
ficheiros
Interface Cliente Servidor
FTP FTP FTP
utilizador
Sistema de Sistema
ficheiros de ficheiros
local remoto

 Transferência de ficheiros de e para uma estação


remota (inicializada pelo cliente)
 Porto bem-conhecido: 21 (controlo) e 20 (dados)
 Camada de transporte: TCP
 Servidor guarda informação de estado

Camada de aplicação 23

Sessão de controlo e dados


 Sessão de controlo
• Envio de comando e
recepção de respostas Sessão de controlo
no porto 21
 Sessão de dados
• Uma por cada ficheiro
transferido (end-of-file) Cliente Sessão de dados Servidor
• O servidor inicia o no porto 20
FTP FTP
estabelecimento da sessão
para a transferência de
dados (modo activo)

Camada de aplicação 24
Comandos e respostas FTP
 Comandos  Respostas
• USER username • 331 Username OK,
• PASS password password required
• LISTdir : lista de ficheiros na • 125 data connection already
directoria actual open
• RETR ficheiro: buscar (get) • 425 Can’t open data
• STOR ficheiro: colocar (put) connection
• PORT n: porto onde o • 452 Error writing file
cliente escuta o pedido de
sessão de dados do
servidor

Camada de aplicação 25

Correio electrónico
Mailbox de utilizador
Fila de mensagens
 Componentes Agente a enviar
de utilizador
• Agentes de utilizador
Servidor
(leitores de correio) Agente
de mail
de utilizador
• Servidores de correio
• Simple Mail Transfer SMTP Servidor
Protocol (SMTP) de mail Agente
SMTP de utilizador

SMTP
Servidor Agente
de mail de utilizador

Agente
de utilizador
Agente
de utilizador
Camada de aplicação 26
Simple Mail Transfer Protocol
(SMTP)
 Porto bem-conhecido: 25
 Camada de transporte: TCP
 Servidor de correio
• Actua como cliente quando envia mensagens
• Actua como servidor quando recebe mensagens
 Cliente
• Comandos
• Mensagem (Cabeçalhos + corpo)
 Servidor
• Respostas

Camada de aplicação 27

SMTP: exemplo
S: 220 destino.pt
C: HELO origem.pt
S: 250 Hello origem.pt, pleased to meet you
C: MAIL FROM: <fernando@origem.pt>
S: 250 fernando@origem.pt... Sender ok
C: RCPT TO: <luis@destino.pt>
S: 250 luis@destino.pt ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: From: <fernando@origem.pt>
C:
C: Deus quer, o homem sonha, a obra nasce
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 destino.pt closing connection
Camada de aplicação 28
Anatomia das mensagens de
email
 Mensagens codificadas em Cabeçalho cr lf
ASCII de 7-bits (enviados
em grupos de 8 bits)
 Cabeçalhos
• Received: Cabeçalho cr lf
• From:
• To:
cr lf
• Subject:
 Corpo da mensagem
termina com cr+lf.cr+lf Corpo
 Conteúdo do corpo não
pode incluir sequência de cr lf
caracteres cr+lf.cr+lf
. cr lf
Camada de aplicação 29

Multipurpose Internet Mail


Extensions (MIME)
 Cabeçalhos para transmitir mensagens de vários
tipos, não apenas texto ASCII
 Codificação do corpo da mensagem em ASCII de 6
bits ( “.” é sempre excluído)
From: fernado@origem.pt
Versão MIME To: luis@destino.pt
Subject: Imagem
Método de
MIME-Version: 1.0
codificação Content-Transfer-Encoding: base64
do corpo Content-Type: image/jpeg

Tipo de dados base64 encoded data .....


.........................
......base64 encoded data
Dados codificados
Camada de aplicação 30
Tipo Multipart
From: fernando@origem.pt
To: luis@destino.pt
Subject: Imagem
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789

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

Caro Luís,
Junto segue a imagem de que te falei.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg

base64 encoded data .....


.........................
......base64 encoded data

Camada de aplicação 31

Post Office Protocol – v3


SMTP SMTP POP3 Agente
Agente
de utilizador
de utilizador

Servidor Servidor

 POP3
• Recuperação de mensagens do servidor do destino
• Autenticação

Camada de aplicação 32
Delimitação de mensagens na
camada de aplicação
 Terminação da sessão de transporte
• Uma sessão por mensagem
• FTP, HTTP 1.0
 Indicação do número de bytes enviados
• Várias mensagens por sessão de transporte
• HTTP 1.1
 Sequência de caracteres de terminação
• Várias mensagens por sessão de transporte
• Análise de cada byte recebido
• Em geral, corpo necessita de codificação
• SMTP (cr+lf.cr+lf)

Camada de aplicação 33

Domain Name System (DNS)


 Serviço de directório
• Tradução entre o nome de uma máquina e seu endereço IP
 DNS
• Base de dados distribuída, implementada numa estrutura
hierárquica de servidores de nomes
• Protocolo da camada de aplicação envolvendo estações e
servidores de nomes
 Outros serviços
• Nomes alternativos: mnemónicas
• Endereços IP alternativos: replicação de servidores,
distribuição da carga na Internet

Camada de aplicação 34
Hierarquia DNS
Serv. domínio
Serv. raíz de topo

edu gov com mil uk pt

mit umass cisco google utl com

Serv. autorizado
(cs)
physics ee cs ist fmv

www deec dei

Serv.
autorizado
(physics) Camada de aplicação 35

Servidores de nomes

 Servidor de DNS local (local DNS server)

 Servidor de DNS autorizados (authoritative name


server)

• Servidor de DNS raiz (root DNS server)

• Servidor de DNS de domínio-de-topo (top-level domain DNS


server, TLD DNS server)

Camada de aplicação 36
DNS: exemplo
Root DNS server
h.root-servers.net
2
dns de edu
3
4
local DNS server TLD DNS server
alfa.ist.utl.pt dns.edu
5
dns de umass.edu
6
dijkstra.cs.umass.edu?
1 8 7
IP de authoritative DNS server
dijkstra.cs.umass.edu dns.umass.edu
tejo.ist.utl.pt

dijkstra.cs.umass.edu

Camada de aplicação 37

Servidores de nomes raiz


a NSI Herndon, VA
c PSInet Herndon, VA k RIPE London
d U Maryland College Park, MD i NORDUnet Stockholm
g DISA Vienna, VA
h ARL Aberdeen, MD
j NSI (TBD) Herndon, VA m WIDE Tokyo

e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA

b USC-ISI Marina del Rey, CA


l ICANN Marina del Rey, CA

13 servidores de
nomes raíz, no total

Camada de aplicação 38
Registos DNS
 Registos (Resource Records, RR) da forma
(name, value, type, TTL)

 Type=A  Type=CNAME
• name - nome de estação • name – nome alternativo
• value – endereço IP da • value – nome canónico
estação  Type=MX
 Type=NS • name –nome alternativo
• name – domínio • value – servidor de mail
• value – nome de
servidor DNS autorizado

Camada de aplicação 39

Mensagens do protocolo
DNS
 Mensagens de interrogação e resposta, ambas com
o mesmo formato

Camada de aplicação 40
Redes de distribuição de
conteúdos (CDN)
Servidor origem USA
 Os fornecedores de
conteúdos são os
clientes dos CDNs
 Os CDNs instalam Nó de distribuição CDN
centenas de servidores
CDNs espalhados pelo
mundo (em ISP de tier
baixo)
 Os CDNs replicam
Servidor CDN
conteúdos dos seus America S. Servidor CDN
Servidor CDN Asia
clientes pelos seus Europa
servidores
Camada de aplicação 41

Exemplo
Servidor original
Pedido HTTP para
1 www.aaa.com/desporto/desporto.html

2 Pedido DNS para Servidor idóneo de


www.cdn.com www.cdn.com
3

Servidor CDN
Pedido HTTP para próximo do cliente
www.cdn.com/www.aaa.com/desporto/tenis/federer.gif

Servidor original entrega HTML com


www.aaa.com/desporto/tenis/federer.gif
Substituido por
www.cdn.com/www.aaa.com/desporto/tenis/federer.gif

Camada de aplicação 42
Peer-to-peer

Peer to peer Cliente servidor


 Estações comunicam  Estações comunicam
directamente entre si com servidor central
 Estações estão ligadas  Servidor sempre
intermitentemente ligado
 Escalabilidade  Menos escalável
 Cada estação alberga  Uma estação alberga
processos clientes e processos clientes
servidores

Camada de aplicação 43

Distribuição de ficheiros P2P


 
 F F NF 
DP2P = max  , , N 
 cs d i cs + ∑ ci 
cs  i =1 

 NF F 
DCS = max  , 
 cs d i  Internet
d3
c1 c3
d1 d2
c2

Camada de aplicação 44
P2P: Directório centralizado

 Quando um par se Directório


liga ao directório centralizado
1
oferece Pares

• Endereço IP 1

• Conteúdos
1 3

2 1
 Par pede IPs
correspondentes a
3
conteúdos ao
directório

Camada de aplicação 45

P2P: Directório distribuído


 Pares formam uma rede
dinâmica de sessões TCP
 Par que procura conteúdo
difunde uma pergunta
 Cada nó que recebe uma
pergunta
• Responde se tem o
conteúdo
• Propaga pergunta se não
tem
 Perguntas têm TTL para
limitar difusão
Camada de aplicação 46
Sockets

Aplicação processo processo Aplicação


socket socket
TCP TCP
Sistema Sistema
operativo ou internet ou
operativo
UDP UDP

 API de sockets
• Interface entre a camada de aplicação e a camada de transporte
• Interface através da qual um processo aplicacional envia e
recebe mensagens para/de outros processos aplicacionais
 Tipos de sockets
• Stream – TCP
• Datagram - UDP

Camada de aplicação 47

Interacção cliente/servidor: TCP


socket() Servidor
Cliente Estabelecimento bind()
da sessão TCP
socket() listen()

connect()
accept() Bloqueado à espera
que seja estabelecida
write()
sessão TCP
read()

write()
read()

close() read()
close()
Fecho da
sessão TCP
Camada de aplicação 48
Servidores concorrentes
listenfd
connect() listenfd connect()
connfd

accept()

connect() listenfd connect() listenfd


connfd

fork() close()
listenfd
close() connfd
connfd

Camada de aplicação 49

Interacção cliente/servidor: UDP

Cliente Servidor
socket()

socket()
bind()

sendto()
recvfrom()

sendto()
recvfrom()

close()

Camada de aplicação 50
Sockets TCP vs. sockets UDP
 Porto local, porto remoto,  Porto local, endereço IP local
endereço IP local, endereço
IP remoto
 read() e write()
 sendto() e recvfrom()
 Porto remoto e endereço IP
 Fluxo de bytes remoto passados à aplicação
 Preserva fronteira entre
 Bytes lidos com read() mensagens
podem corresponder a vários  Cada mensagem lida com
write(); bytes escritos com recvfrom() corresponde a
write() podem ter de ser
um e um só sendto()
lidos com vários read()
 Nenhum byte é perdido  Uma mensagem pode ser
perdida

Camada de aplicação 51