Sei sulla pagina 1di 22

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

‰ 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

1
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
• Porta identifica processo dentro de uma estação

‰ Portas
• Portas bem-conhecidas (0-1023): servidor
• HTTP – 80; SMTP – 25;SSH - 22
• Portas aleatórias: cliente (acima de 1024)

‰ 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

2
Requisitos das aplicações
‰ Perdas
• Tolerante a perdas: áudio
• Intolerante a perdas: transferência de arquivos

‰ Atrasos
• Tolerante a atrasos: transferência de arquivos, WWW
• Intolerante a atrasos: VoIP, jogos distribuídos

‰ Entrega sequencial dos pacotes


‰ Largura de banda
• Aplicações tolerantes: transferência de ficheiros
• Aplicações de tempo-real: multimidia

Camada de aplicação 5

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

Transferência arquivos não variável tolerante


email não variável tolerante
Páginas Web não variável 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
Aplicações financeiras não variável sim e não !

Camada de aplicação 6

3
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

‰ 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 2068] TCP
Transferência de ficheiros FTP [RFC 959] TCP
streaming multimedia proprietário TCP ou UDP
Ficheiros em rede NFS TCP ou UDP
VoIP proprietário Tipicamente UDP

Camada de aplicação 8

4
Hypertext Transport Protocol
(HTTP)
‰ O protocolo da camada de
aplicação da WWW Ped
ido
HT
‰ Cliente PC com Re
sp o
TP
Explorer st a
• Browser que solicita, recebe e HT
TP
apresenta objectos
‰ Servidor TT
P
id oH TP Servidor
• Envia dados em resposta aos Pe
d HT Apache
s ta
pedidos o
sp
Re
• Não guarda informação de
estado sobre pedidos anteriores
PC com
‰ Porta usada: 80 Netscape
‰ 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
Porta 80
www.ist.utl.pt
Porta +1024
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

5
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

6
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

7
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

8
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

9
Cookies
‰ Informação de estado permite manter correlação
entre pedidos de um utilizador para um mesmo
servidor
‰ Cabeçalho na primeira resposta do servidor
• Set-cookie: 1458279
‰ Entrada numa base de dados do servidor
‰ Ficheiro na estação do utilizador
• Associação servidor-cookie

‰ Cabeçalhos nos pedidos sucessivos do utilizador


• Cookie: 1458279

Camada de aplicação 19

Servidores proxy (Web cache)


‰ Utilizador configura o
browser para usar o Servidor
servidor proxy original

‰ Browser faz pedido ao Ped


Servidor
ido proxy TTP
servidor proxy HT oH
clienteRespo TP
Ped
i d
TTP
st a s t aH
• Se servidor proxy tiver HT
TP sp o
Re
objecto, envia-o ao cliente TP
T
Caso contrário, faz o pedido oH TP
• did HT
Pe ta
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

10
Vantagem dos servidores proxy
Servidores
origem
‰ Melhor tempo de
resposta, em geral
Internet
‰ Diminui o tráfego com
destino em servidores
distantes Ligação a 1.5 Mbps

Ethernet
local
10 Mbps LAN

Servidor
proxy

Camada de aplicação 21

File Transfer Protocol (FTP)


Transferência de
ficheiros
Interface Cliente Servidor
FTP FTP FTP
utilizador
Sistema de Sistema
arquivos de arquivos
local remoto

‰ Transferência de arquivos de e para uma estação


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

Camada de aplicação 22

11
Sessão de controle e dados
‰ Sessão de controle
• Envio de comando e
recepção de respostas Sessão de controle
na porta 21
‰ Sessão de dados
• Uma por cada arquivo
transferido (end-of-file) Cliente Sessão de dados Servidor
• O servidor inicia o na porta 20
FTP FTP
estabelecimento da sessão
para a transferência de
dados (modo ativo)

Camada de aplicação 23

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 24

12
Correio eletrónico
Mailbox do usuário
Fila de mensagens
‰ Componentes Agente a enviar
de utilizador
• Clientes
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 25

Simple Mail Transfer Protocol


(SMTP)
‰ Porta bem-conhecido: 25
‰ Camada de transporte: TCP
‰ Servidor de correio
• Atua como cliente quando envia mensagens
• Atua como servidor quando recebe mensagens

‰ Cliente
• Comandos
• Mensagem (Cabeçalhos + corpo)

‰ Servidor
• Respostas

Camada de aplicação 26

13
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: 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 27

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 28

14
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
ou 7 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 29

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 Luis,
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 30

15
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 31

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 32

16
Domain Name System (DNS)
‰ Serviço de diretó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

Camada de aplicação 33

Hierarquia DNS
Serv. domínio
Serv. raíz de topo

edu gov com mil uk pt

mit umass cisco google utl com

Serv. intermédio
(cs)
physics ee cs ist fmv

deec dei

Serv. idóneo
(physics)
Camada de aplicação 34

17
Servidores de nomes
‰ Servidor de DNS local (local DNS server)

‰ Servidor de DNS raiz (root DNS server)

‰ Servidor de DNS de domínio-de-topo (top-level


domain DNS server, TLD DNS server)

‰ Servidor de DNS intermédio (intermiediate DNS


server)

‰ Servidor de DNS autorativo (authoritative name server)

Camada de aplicação 35

DNS: exemplo
Root DNS server
h.root-servers.net
2
3
4
local DNS server TLD DNS server
alfa.ist.utl.pt dns.edu
5

1 8 7
authoritative DNS server
dns.umass.edu
tejo.ist.utl.pt

dijkstra.cs.umass.edu

Camada de aplicação 36

18
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 37

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 idóneo

Camada de aplicação 38

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

Camada de aplicação 39

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 40

20
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 41

Servidores concorrentes
listenfd
connect() listenfd connect()
connfd

accept()

connect() listenfd connect() listenfd


connfd

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

Camada de aplicação 42

21
Interação cliente/servidor: UDP

Cliente Servidor
socket()

socket()
bind()

sendto()
recvfrom()

sendto()
recvfrom()

close()

Camada de aplicação 43

Sockets TCP vs. sockets UDP


‰ Porta local, porta remota, ‰ Porta local
endereço IP local
‰ read() e write() ‰ sendto() e recvfrom()
‰ Porta remota e endereço IP
remoto passados à aplicação
‰ Fluxo de bytes ‰ Preserva fronteira entre
mensagens
‰ Bytes lidos com read() ‰ Cada mensagem lida com
podem corresponder a vários recvfrom() corresponde a
write(); bytes escritos com um e um só sendto()
write() podem ter de ser
lidos com vários read()
‰ Nenhum byte é perdido ‰ Uma mensagem pode ser
perdida

Camada de aplicação 44

22

Potrebbero piacerti anche