Part I: Introduction

Download Report

Transcript Part I: Introduction

Capítulo 2: Camada de Aplicação
Metas do capítulo:

Mais metas do capítulo
aspectos conceituais e de  protocolos específicos:
implementação de
 http
protocolos de aplicação
 ftp
em redes
 smtp
 paradigma cliente
 pop
servidor
 dns
 modelos de serviço
 aprenda sobre protocolos  a programação de
através do estudo de
aplicações de rede
protocolos populares do
 programação usando sockets
nível da aplicação
2: Camada de Aplicação
1
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 a aplicação
 p.ex., correio, transf. de
arquivo, WWW
Protocolos da camada de aplicação
 uma “parte” da aplicação
 define mensagens trocadas
por apls e ações tomadas
 usam serviços providos por
protocolos de camadas
inferiores
aplicação
transporte
rede
enlace
física
aplicação
transporte
rede
enlace
física
aplicação
transporte
rede
enlace
física
2: Camada de Aplicação
2
Aplicações de rede: algum jargão
 Um processo é um
programa que executa num
hospedeiro.
 2 processos no mesmo
hospedeiro se comunicam
usando comunicação entre
processos definida pelo
sistema operacional (SO).
 2 processos em
hospedeiros distintos se
comunicam usando um
protocolo da camada de
aplicação.
 Um agente de usuário
(UA) é uma interface
entre o usuário e a
aplicação de rede.



WWW: browser
Correio:
leitor/compositor de
mensagens
streaming audio/video:
tocador de mídia
2: Camada de Aplicação
3
Paradigma cliente-servidor (C-S)
Apl. de rede típica tem duas
partes: cliente e servidor
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
Protocolos da camada de aplicação (cont).
API: interface de
programação de
aplicações
 define interface entre
aplicação e camada de
transporte
 socket (= tomada): API
da Internet

2 processos se comunicam
enviando dados para um
socket ou lendo dados de
um socket
P: como um processo pode
“identificar”o outro
processo com o qual
quer se comunicar?


endereço IP do
hospedeiro do outro
processo
“número de porta” permite que o hospedeiro
receptor determine a
qual processo deve ser
entregue a mensagem
… voltamos mais tarde a este assunto.
2: Camada de Aplicação
5
De que serviço de transporte uma
aplicação precisa?
Perda de dados
 algumas apls (p.ex. áudio)
podem tolerar algumas
perdas
 outras (p.ex., transf. de
arquivos, telnet) requerem
transferência 100%
confiável
Largura de banda
 algumas apls (p.ex.,
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
Temporização
 algumas apls (p.ex.,
telefonia Internet, jogos
interativos) requerem
baixo retardo para serem
“viáveis”
2: Camada de Aplicação
6
Requisitos do serviço de transporte de apls comuns
Aplicação
transferência de arqs
correio
documentos WWW
áudio/vídeo de
tempo real
áudio/vídeo gravado
jogos interativos
apls financeiras
Sensibilidade
temporal
Perdas
Banda
sem perdas
sem perdas
sem perdas
tolerante
elástica
elástica
elástica
áudio: 5Kb-1Mb
vídeo:10Kb-5Mb
como anterior
> alguns Kbps
elástica
tolerante
tolerante
sem perdas
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
Serviços providos por protocolos de
transporte Internet
serviço TCP:
serviço UDP:

 transferência de dados não
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
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
correio eletrônico
accesso terminal remoto
WWW
transferência de arquivos
streaming multimídia
servidor de arquivo remoto
telefonia Internet
Protocolo da
camada de apl
Protocolo de
transporte usado
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
2: Camada de Aplicação
9
WWW: algum jargão
 Página WWW:
 consiste de “objetos”
 endereçada por uma URL
 Agent de usuário para
WWW se chama de
browser:

 Quase todas as páginas
WWW consistem de:


página base HTML, e
vários objetos
referenciados.

MS Internet Explorer
Netscape Communicator
 Servidor para WWW se
 URL tem duas partes:
nome de hospedeiro, e
nome de caminho:
chama “servidor
WWW”:


Apache (domínio público)
MS Internet Information
Server (IIS)
www.univ.br/algum-depto/pic.gif
2: Camada de Aplicação
10
WWW: o protocolo http
http: hypertext transfer
protocol
 protocolo da camada de
aplicação para WWW
 modelo cliente/servidor
 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
PC executa
Explorer
Servidor
executando
servidor
WWW
do NCSA
Mac executa
Navigator
2: Camada de Aplicação
11
Mais sobre o protocolo http
http: serviço de
transporte TCP:
 cliente inicia conexão TCP
(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
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
Supomos que usuário digita a URL
www.algumaUniv.br/algumDepartmento/inicial.index
(contém texto,
referências a 10
imagens jpeg)
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
1b. servidor http no hospedeiro
www.algumaUniv.br espera por
conexão TCP na porta 80.
“aceita” conexão, avisando ao
cliente
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
13
Exemplo de http (cont.)
4. servidor http encerra conexão
5. cliente http recebe mensagem
TCP .
de resposta contendo arquivo
html, visualiza html.
Analisando arquivo html,
encontra 10 objetos jpeg
referenciados
6. Passos 1 a 5 repetidos para
cada um dos 10 objetos jpeg
tempo
2: Camada de Aplicação
14
Conexões não persistente and persistente
Não persistente
 HTTP/1.0
 servidor analisa
pedido, responde, and
encerra conexão TCP
 2 RTTs para trazer
cada objeto
(RTT=round trip time)
 transferência de cada
objeto sofre de
partida lenta
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 .
 Menos RTTs and menos
partida lenta.
A maioria de browsers 1.0
usa connexões TCP paralelas.
2: Camada de Aplicação
15
formato de mensagem http: pedido
 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
Carriage return,
line feed
indicate fim
de mensagem
(carriage return (CR), line feed(LF) adicionais)
2: Camada de Aplicação
16
mensagem de pedido http: formato geral
2: Camada de Aplicação
17
formato de mensagem http: resposta
linha de status
(protocolo,
código de status,
frase de status)
linhas de
cabeçalho
dados, p.ex.,
arquivo html
solicitado
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
dados dados dados dados ...
2: Camada de Aplicação
18
códigos de status da resposta http
Na primeira linha da mensagem de resposta
servidor->cliente. Alguns códigos típicos:
200 OK

sucesso, objeto pedido segue mais adiante nesta mensagem
301 Moved Permanently

objeto pedido mudou de lugar, nova localização
especificado mais adiante nesta mensagem (Location:)
400 Bad Request

mensagem de pedido não entendida pelo servidor
404 Not Found

documento pedido não se encontra neste servidor
505 HTTP Version Not Supported

versão de http do pedido não usada por este servidor
2: Camada de Aplicação
19
Experimente você com http (do lado cliente)
1. Use cliente telnet para seu servidor WWW favorito:
telnet www.ic.uff.br 80 Abre conexão TCP para a porta 80
(porta padrão do servidor http) a www.ic.uff.br.
Qualquer coisa digitada é enviada para a
porta 80 do www.ic.uff.br
2. Digite um pedido GET http:
GET /~michael/index.html HTTP/1.0
Digitando isto (deve teclar
ENTER duas vezes), está enviando
este pedido GET mínimo (porém
completo) ao servidor http
3. Examine a mensagem de resposta enviado pelo
servidor http !
2: Camada de Aplicação
20
HTML (HyperText Markup Language)
 HTML: uma linguagem simples para hipertexto
 começou como versão simples de SGML
 construção básica: cadéias de texto anotadas
 Construtores de formato operam sobre cadéias
 <b> .. </b>
bold (negrito)
 <H1 ALIGN=CENTER> ..título centrado .. </H1>
 <BODY bgcolor=white text=black link=red ..> .. </BODY>
 vários formatos
 listas de bullets, listas ordenadas, listas de definição
 tabelas
 frames
2: Camada de Aplicação
21
Encadeamento de referências
 Referências <A HREF=LinkRef> ... </A>
 a componentes do documento local
<A HREF=“importante”> clique para uma dica </A>
 a documentos no servidor local
<A HREF=“../index.htm”> voltar ao sumário </A>
 a documentos em outros servidores
<A HREF=“http://www.uff.br”> saiba sobre a UFF </A>
 Multimídia
 imagem embutida: <IMG SRC=“eclipse”>
 imagem externa:
<A HREF=“eclipse.gif”> imagem maior </A>
 vídeo Mpeg <A HREF=“ByeByeBrasil.mpg”> um bom filme </A>
 som
<A HREF=“http://www.sons.br/aniv.au”> feliz niver </A>
2: Camada de Aplicação
22
Formulários e interação bidirecional
 Formulários transmitem
informação do cliente ao
servidor
 HTTP permite enviar
formulários ao servidor
 Resposta enviada como
página HTML dinâmica
cliente
WWW
GET/POST
formulário
resposta:
HTML
 Formulários processados usando
scripts CGI (programas que
executam no servidor WWW)
 CGI - Common Gateway
Interface
 scripts CGI escondem
acesso a diferentes serviços
 servidor WWW atua como
gateway universal
servidor
WWW
Sistema de
informação
2: Camada de Aplicação
23
Interação usuário-servidor: autenticação
Meta da autenticação: controle de
acesso aos documentos do
servidor
cliente
servidor
msg de pedido http comum
 sem estado: cliente deve
apresentar autorização com
401: authorization req.
cada pedido
WWW authenticate:
 autorização: tipicamente nome,
senha
msg de pedido http comum
 authorization: linha de
+ Authorization:line
cabeçalho no pedido
msg de resposta http comum
 se não for apresentada
autorização, servidor nega
accesso, e coloca no
cabeçalho da resposta
msg de pedido http comum
WWW authenticate:
+ Authorization:line
tempo
msg de resposta http comum
Browser guarda nome e senha para
evitar que sejam pedidos ao usuário a cada acesso.
2: Camada de Aplicação
24
Interação usuário-servidor: cookies
servidor
cliente
 servidor envia “cookie” ao
cliente na msg de resposta
Set-cookie: 1678453
msg de pedido http comum
resposta http comum+
Set-cookie: #
 cliente apresenta cookie
nos pedidos posteriores
cookie: 1678453
 servidor casa cookie-
apresentado com a info
guardada no servidor
 autenticação
 lembrando preferências
do usuário, opções
anteriores
msg de pedido http comum
Ação
específica
msg de resposta http comum do cookie
cookie: #
msg de pedido http comum
Ação
específica
msg de resposta http comum do cookie
cookie: #
2: Camada de Aplicação
25
Interação usuário-servidor: GET condicional
servidor
cliente
 Meta: não enviar objeto se
cliente já tem (no cache)
versão atual
 cliente: especifica data da
cópia no cache no pedido
http
If-modified-since:
<date>
 servidor: resposta não
contém objeto se cópia no
cache é atual:
HTTP/1.0 304 Not
Modified
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
26
Cache WWW (servidor-procurador)
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 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
cliente
cliente
Servidor
de origem
Servidorprocurador
Servidor
de origem
2: Camada de Aplicação
27
Por quê usar cache WWW?
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

muitas vezes é um
gargalo o enlace que liga
a rede da instituição ou
do provedor à Internet
Servidores
de origem
Internet
pública
enlace de accesso
2 Mbps
rede da
instituição
LAN 10 Mbps
cache da
instituição
2: Camada de Aplicação
28
ftp: o protocolo de transferência
de arquivos
usuário
na
estação
Interface cliente
do usuário FTP
FTP
transferência
do arquivo
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
29
ftp: conexões separadas p/ controle, dados
 cliente ftp contata servidor
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
30
Ftp: comandos, respostas
Comandos típicos:
Códigos de retorno típicos
 enviados em texto ASCII pelo
 código e frase de status (como
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
31
Correio Eletrônico
Três grandes componentes:
 agentes de usuário (UA)
 servidores de correio
servidor
de correio
 simple mail transfer protocol:
agente
de
usuário
SMTP
smtp
Agente de Usuário
SMTP
 a.k.a. “leitor de correio”
 compor, editar, ler mensagens
de correio
servidor
de correio
 p.ex., Eudora, Outlook, elm,
Netscape Messenger
 mensagens de saída e chegando
são armazenadas no servidor
agente
de
usuário
SMTP
fila de
mensagens
de saída
caixa de
correio do usuário
agente
de
usuário
servidor
de correio
agente
de
usuário
agente
de
usuário
agente
de
usuário
2: Camada de Aplicação
32
Redes de computadores
Prof. Nelson Fonseca
2: Camada de Aplicação
33
Correio Eletrônico: servidores de correio
Servidores de correio
 caixa de correio contém
servidor
de correio
agente
de
usuário
mensagens de chegada
(ainda não lidas) p/ usuário
SMTP
 fila de mensagens contém
mensagens de saída (a serem
enviadas)
SMTP
 protocolo smtp entre
servidores de correio para
SMTP
transferir mensagens de
servidor
correio
de correio
 cliente: servidor de
correio que envia
agente
de
 “servidor”: servidor de
usuário
correio que recebe
agente
de
usuário
agente
de
usuário
servidor
de correio
agente
de
usuário
2: Camada de Aplicação
34
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
 mensagens precisam ser em ASCII de 7-bits
2: Camada de Aplicação
35
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
36
Experimente você uma interação smtp :
 telnet nomedoservidor 25
 veja resposta 220 do servidor
 entre comandos HELO, MAIL FROM, RCPT TO,
DATA, QUIT
estes comandos permite que você envie correio sem
usar um cliente (leitor de correio)
2: Camada de Aplicação
37
smtp: últimas palavras
 smtp usa conexões
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
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
38
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.,



To:
From:
Subject:
cabeçalho
linha em
branco
corpo
diferentes dos comandos de
smtp!
 corpo

a “mensagem”, somente de
caracteres ASCII
2: Camada de Aplicação
39
Formato de uma mensagem: extensões para
multimídia
 MIME: multimedia mail extension, RFC 2045, 2056
 linhas adicionais no cabeçalho da msg declaram tipo do
conteúdo MIME
versão MIME
método usado
p/ codificar dados
tipo, subtipo de
dados multimídia,
declaração parâmetros
Dados codificados
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
40
Tipos MIME
Content-Type: tipo/subtipo; parâmetros
Text
 subtipos exemplos: plain,
html
 charset=“iso-8859-1”,
ascii
Image
 subtipos exemplos : jpeg,
gif
Video
 subtipos exemplos : mpeg,
Audio
 subtipos exemplos : basic
(8-bit codificado mu-law),
32kadpcm (codificação 32
kbps)
Application
 outros dados que precisam
ser processados por um
leitor para serem
“visualizados”
 subtipos exemplos :
msword, octet-stream
quicktime
2: Camada de Aplicação
41
Tipo Multipart
From: [email protected]
To: [email protected]
Subject: Imagem de uma bela torta
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
caro Bernardo,
Anexa a imagem de uma torta deliciosa.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
--98766789--
2: Camada de Aplicação
42
Protocolos de accesso ao correio
agente
de
usuário
SMTP
SMTP
servidor de correio
do remetente
POP3 ou
IMAP
agente
de
usuário
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
43
Protocolo POP3
fase de autorização
 comandos do cliente:
user: declara nome
 pass: senha
 servidor responde
 +OK
 -ERR

fase de transação, cliente:
 list: lista números das
msgs
 retr: recupera msg por
número
 dele: apaga msg
 quit
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
44