Академический Документы
Профессиональный Документы
Культура Документы
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
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
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)
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é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
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:
Camada de aplicação 18
Cookies
primavera.lx.it.pt www.amazon.com
GET
Set-cookie: 1458279
GET
Cookie: 1458279
Camada de aplicação 20
Vantagem dos servidores proxy
Servidores
origem
Servidor
proxy
Camada de aplicação 21
Get condicional
primavera.lx.it.pt 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
Camada de aplicação 23
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
--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
Camada de aplicação 31
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
Camada de aplicação 34
Hierarquia DNS
Serv. domínio
Serv. raíz de topo
Serv. autorizado
(cs)
physics ee cs ist fmv
Serv.
autorizado
(physics) Camada de aplicação 35
Servidores de nomes
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
e NASA Mt View, CA
f Internet Software C. Palo Alto,
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
Servidor CDN
Pedido HTTP para próximo do cliente
www.cdn.com/www.aaa.com/desporto/tenis/federer.gif
Camada de aplicação 42
Peer-to-peer
Camada de aplicação 43
NF F
DCS = max ,
cs d i Internet
d3
c1 c3
d1 d2
c2
Camada de aplicação 44
P2P: Directório centralizado
• 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
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
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()
fork() close()
listenfd
close() connfd
connfd
Camada de aplicação 49
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