1
Camada de aplicação 1
Camada de aplicaçãoConceitos, 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 2
Aplicações em rede
Processo é um programa a ser executado numa máquinaNa 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)
2
Camada de aplicação 3
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 4
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
3
Camada de aplicação 5
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 pacotesLargura de banda
• Aplicações tolerantes: transferência de ficheiros• Aplicações de tempo-real: multimidia
Camada de aplicação 6
Requisitos: exemplos
Aplicação
Transferência arquivosemail
Páginas Webáudio/vídeo tempo-real
áudio/vídeo armazenadoJogos interactivos
Aplicações financeiras
Perdas
nãonãonãotolerante
tolerantetolerantenão
Largura de banda
variávelvariávelvariáveláudio: 5kb-1Mbvídeo:10kb-5Mbcomo o anterior ordem dos kbit/s variável
Atrasos
tolerantetolerantetolerantenão, 100’s ms
não, segnão, 100’s mssim e não !
4
Camada de aplicação 7
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 8
Aplicações e serviços: exemplos
Aplicação
emailAcesso remoto
WWW Transferência de ficheiros
streaming multimediaFicheiros em rede
VoIP
Protocolo da camada de aplicação
SMTP [RFC 821]Telnet [RFC 854]HTTP [RFC 2068]FTP [RFC 959]proprietárioNFSproprietário
Camada de transporte
TCPTCPTCPTCPTCP ou UDPTCP ou UDPTipicamente UDP
5
Camada de aplicação 9
Hypertext Transport Protocol(HTTP)
O protocolo da camada de aplicação da WWWCliente
• Browser que solicita, recebe e apresenta objectos
Servidor• Envia dados em resposta aos
pedidos• Não guarda informação de
estado sobre pedidos anteriores
Porta usada: 80Camada de transporte: TCP
PC com Explorer
Servidor Apache
PC comNetscape
Pedido HTTP
Pedido HTTP
Resposta HTTP
Resposta HTTP
Camada de aplicação 10
HTTP: exemplo
Sessão TCPwww.ist.utl.ptPorta +1024
Escuta sessões TCPPorta 80
Aceita sessãoPedidoURL: index.html
Resposta OK: index.htmlFecha sessão
Recebe pedidoMostra páginaIdentifica imagens
BrowserServidor HTTPwww.ist.utl.pt
http://www.ist.utl.pt/index.html
6
Camada de aplicação 11
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 12
Pedido: exemplo
GET /index.html HTTP/1.1Accept: text/html, image/gif, image/jpgAccept-Language: en-usUser-agent: Mozilla/4.0Host: www.ist.utl.pt
Linha de pedido(GET, HEAD, POST)
Linhas decabeçalho cr + lf
7
Camada de aplicação 13
Anatomia de um pedido
Método URL VersãoNome do cabeçalho
Nome do cabeçalho
Valor
Valor
cr lflf
lflf
cr
crcr
:
:
Linha de pedido
Linhas decabeçalhos
Corpo damensagem
Camada de aplicação 14
Resposta: exemplo
HTTP/1.1 200 OKDate: Fri, 22 Feb 2001 13:20:50 GMTServer: Apache/1.3.6 (Unix)Content-type: text/htmlContent-Length: 327
<HTML><TITLE>Instituto Superior Técnico<TITLE>
Linha de resposta
Linhas de cabeçalho
Corpo damensagem
cr + lf
8
Camada de aplicação 15
Anatomia de uma resposta
Versão Código ExpressãoNome do cabeçalho
Nome do cabeçalho
Valor
Valor
cr lflf
lflf
cr
crcr
:
:
Linha de resposta
Linhas decabeçalhos
Corpo damensagem
Camada de aplicação 16
POST e Common Gateway Interface (CGI)
Geração de conteúdo dinâmicoBrowser apresenta um formulárioPedido 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 cgiServidor envia o resultado ao browser
9
Camada de aplicação 17
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 18
Cabeçalhos
Pedidos• Host:• User-Agent:• Accept: (text/*, image/gif)• If-Modified-Since:
Respostas• Date:• Server:• Last-Modified:
Comuns a pedidos e respostas• Content-Type:• Content-Length:• Transfer-Encoding: chunked• Connection: close
10
Camada de aplicação 19
Cookies
Informação de estado permite manter correlação entre pedidos de um utilizador para um mesmo servidorCabeçalho na primeira resposta do servidor
• Set-cookie: 1458279
Entrada numa base de dados do servidorFicheiro na estação do utilizador
• Associação servidor-cookie
Cabeçalhos nos pedidos sucessivos do utilizador• Cookie: 1458279
Camada de aplicação 20
Servidores proxy (Web cache)
Utilizador configura o browser para usar o servidor proxyBrowser faz pedido ao servidor proxy
• Se servidor proxy tiver objecto, envia-o ao cliente
• Caso contrário, faz o pedido ao servidor origem, recebe o objecto, envia-o ao cliente
• Servidor proxy guarda o objecto em cache
cliente
Servidorproxy
cliente
Pedido HTTP
Pedido HTTP
Resposta HTTP
Resposta HTTP
Pedido HTTP
Resposta HTTP
Servidororiginal
Servidororiginal
11
Camada de aplicação 21
Vantagem dos servidores proxy
Melhor tempo de resposta, em geralDiminui o tráfego com destino em servidores distantes
Servidoresorigem
Internet
Ethernet local 10 Mbps LAN
Ligação a 1.5 Mbps
Servidorproxy
Camada de aplicação 22
File Transfer Protocol (FTP)
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: TCPServidor guarda informação de estado
Transferência de ficheiros
Servidor FTP
Interface FTP
ClienteFTP
Sistema de arquivoslocal
Sistema de arquivosremoto
utilizador
12
Camada de aplicação 23
Sessão de controle e dados
Sessão de controle• Envio de comando e
recepção de respostas
Sessão de dados• Uma por cada arquivo
transferido (end-of-file)• O servidor inicia o
estabelecimento da sessão para a transferência de dados (modo ativo)
ClienteFTP
ServidorFTP
Sessão de controlena porta 21
Sessão de dadosna porta 20
Camada de aplicação 24
Comandos e respostas FTP
Comandos• USER username• PASS password• LISTdir : lista de ficheiros na
directoria actual• RETR ficheiro: buscar (get)• STOR ficheiro: colocar (put) • PORT n: porto onde o
cliente escuta o pedido de sessão de dados do servidor
Respostas• 331 Username OK,
password required• 125 data connection already
open• 425 Can’t open data
connection• 452 Error writing file
13
Camada de aplicação 25
Correio eletrónico
Componentes• Clientes
(leitores de correio)• Servidores de correio• Simple Mail Transfer
Protocol (SMTP)Servidorde mail
Agente de utilizador
Agente de utilizador
Agente de utilizador
Servidorde mail
Agente de utilizador
Agente de utilizador
Servidorde mail
Agentede utilizador
SMTP
SMTP
SMTP
Mailbox do usuárioFila de mensagensa enviar
Camada de aplicação 26
Simple Mail Transfer Protocol (SMTP)
Porta bem-conhecido: 25Camada de transporte: TCPServidor de correio
• Atua como cliente quando envia mensagens• Atua como servidor quando recebe mensagens
Cliente• Comandos• Mensagem (Cabeçalhos + corpo)
Servidor• Respostas
14
Camada de aplicação 27
SMTP: exemploS: 220 destino.ptC: HELO origem.pt S: 250 Hello origem.pt, pleased to meet youC: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender okC: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itselfC: Deus quer, o homem sonha, a obra nasceC: . S: 250 Message accepted for deliveryC: QUIT S: 221 destino.pt closing connection
Camada de aplicação 28
Anatomia das mensagens de email
Mensagens codificadas em ASCII de 7-bits (enviados em grupos de 8 bits)Cabeçalhos
• Received:• From:• To:• Subject:
Corpo da mensagem termina com cr+lf.cr+lfConteúdo do corpo não pode incluir sequência de caracteres cr+lf.cr+lf
Cabeçalho
Corpo
cr lf
cr lf
cr lf
cr lf
cr lf.
Cabeçalho
15
Camada de aplicação 29
Multipurpose Internet Mail Extensions (MIME)
Cabeçalhos para transmitir mensagens de vários tipos, não apenas texto ASCIICodificação do corpo da mensagem em ASCII de 6 ou 7 bits ( “.” é sempre excluído)
From: [email protected] To: [email protected] Subject: Imagem MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg
base64 encoded data ..... ......................... ......base64 encoded data
Método de codificação do corpo
Versão MIME
Dados codificados
Tipo de dados
Camada de aplicação 30
Tipo MultipartFrom: [email protected] To: [email protected] Subject: ImagemMIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789
--98766789Content-Transfer-Encoding: quoted-printableContent-Type: text/plain
Caro Luis, Junto segue a imagem de que te falei.--98766789Content-Transfer-Encoding: base64Content-Type: image/jpeg
base64 encoded data ..... ......................... ......base64 encoded data
16
Camada de aplicação 31
Post Office Protocol – v3
POP3• Recuperação de mensagens do servidor do destino• Autenticação
Agentede utilizador
Servidor
Agentede utilizador
SMTP SMTP POP3
Servidor
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)
17
Camada de aplicação 33
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 34
Hierarquia DNS
edu gov com mil uk pt
mit umass cisco google utl com
physics ee cs fmvist
deec dei
Serv. domínio de topoServ. raíz
Serv. idóneo(physics)
Serv. intermédio(cs)
18
Camada de aplicação 35
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 36
DNS: exemplo
tejo.ist.utl.pt
dijkstra.cs.umass.edu
Root DNS serverh.root-servers.net
local DNS serveralfa.ist.utl.pt
1
2
4
authoritative DNS serverdns.umass.edu
TLD DNS serverdns.edu
3
8
5
6
7
19
Camada de aplicação 37
Servidores de nomes raiz
b USC-ISI Marina del Rey, CAl ICANN Marina del Rey, CA
e NASA Mt View, CAf Internet Software C. Palo Alto, CA
i NORDUnet Stockholmk RIPE London
m WIDE Tokyo
a NSI Herndon, VAc PSInet Herndon, VAd U Maryland College Park, MDg DISA Vienna, VAh ARL Aberdeen, MDj NSI (TBD) Herndon, VA
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• name - nome de estação• value – endereço IP da
estação
Type=NS• name – domínio• value – nome de
servidor DNS idóneo
Type=CNAME• name – nome alternativo• value – nome canónico
Type=MX• name –nome alternativo• value – servidor de mail
20
Camada de aplicação 39
Mensagens do protocoloDNS
Mensagens de interrogação e resposta, ambas com o mesmo formato
Camada de aplicação 40
Sockets
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 aplicacionaisTipos de sockets
• Stream – TCP• Datagram - UDP
processo
TCP ou
UDP
socketAplicação
Sistema operativo
processo
socketAplicação
Sistema operativointernet
TCPou
UDP
21
Camada de aplicação 41
Interacção cliente/servidor: TCPsocket()
bind()
listen()
accept()
read()
write()
close()
read()
socket()
connect()
write()
read()
close()
Estabelecimento da sessão TCP
Bloqueado à espera que seja estabelecida
sessão TCP
Fecho da sessão TCP
ServidorCliente
Camada de aplicação 42
Servidores concorrentes
connect()
connect() connect()
listenfd
listenfdconnfd
listenfdconnfd
listenfd
connfd
connect()listenfdconnfd
accept()
fork() close()close()
22
Camada de aplicação 43
Interação cliente/servidor: UDP
socket()
bind()
recvfrom()
sendto()
socket()
sendto()
recvfrom()
close()
ServidorCliente
Camada de aplicação 44
Sockets TCP vs. sockets UDPPorta local, porta remota, endereço IP localread() e write()
Fluxo de bytes
Bytes lidos com read()podem corresponder a vários write(); bytes escritos com write() podem ter de ser lidos com vários read()Nenhum byte é perdido
Porta local
sendto() e recvfrom()Porta remota e endereço IP remoto passados à aplicaçãoPreserva fronteira entre mensagens
Cada mensagem lida com recvfrom() corresponde a um e um só sendto()
Uma mensagem pode ser perdida
Recommended