Redes de Computadores II
Prof. Celio Trois
www.inf.ufsm.br/~trois/redes2
Camada de Aplicação
Conceitos e Definições
Aplicações de Rede
Uma aplicação é um programa executado em um computador
hospedeiro.
Aplicações no mesmo hospedeiro podem se comunicar usando
processos de comunicação definidos pelo sistema operacional
(SO).
Aplicações em hospedeiros distintos se comunicam usando um
protocolo da camada de aplicação, normalmente esta comunicação
dar-se-á através da rede.
Aplicações e Protocolos da Camada de Aplicação
Aplicação de rede: processos
distribuídos que se comunicam
 executam em hospedeiros no
“espaço de usuário”
 utilizam a rede como forma de
comunicação
 ex.: correio, transf. de arquivo,
navegação web
Protocolos da camada de apl.
 uma “parte” da aplicação
 define mensagens trocadas por
apls e ações tomadas
 ex.: smtp, ftp, http
 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
Protocolos da Camada de Aplicação
API
Define interface entre aplicação e camada de transporte
API : socket

2 processos se comunicam enviando dados para um socket ou
lendo dados de um socket
Como um processo pode “identificar” o outro processo
com o qual quer se comunicar?
Endereço IP do hospedeiro do outro processo
porta” - permite que o hospedeiro receptor determine a qual
processo deve ser entregue a mensagem
Paradigma Cliente-Servidor
Apl. de rede típica tem duas
partes: cliente e servidor
Cliente:
 inicia contato com o servidor
 tipicamente solicita serviço do
servidor
 ex.: cliente utilizando um browser
Servidor:
 provê ao cliente o serviço
requisitado
 ex.: servidor web envia página
solicitada
aplicação
transport
e
rede
enlace
física
pedido
resposta
aplicação
transporte
rede
enlace
física
De que serviço de transporte uma aplicação
precisa?
Perda de dados
Latência
Largura de banda
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
Latência
algumas apls (p.ex., telefonia Internet, jogos interativos) requerem baixo
retardo para serem “viáveis”
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
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
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
Sensibilidade
temporal
não
não
não
sim, 100 mseg
sim, alguns segs
sim, 100 mseg
sim e não
Serviços providos por protocolos de
transporte Internet
Serviço TCP:
Orientado a conexão: setup
requerido entre cliente, servidor
Transporte confiável entre
processos remetente e receptor
Controle de fluxo: remetente
não vai sobrecarregar receptor
Controle de
congestionamento: estrangular
remetente quando a rede
carregada
Não provê: garantias temporais
ou de banda mínima
Serviço UDP:
Não orientado à conexão:
transferência de dados não
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
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
WWW
Página WWW:


consiste de “objetos”
endereçada por uma URL
Quase todas as páginas
WWW consistem de:


página base HTML
vários objetos referenciados
URL tem duas partes
(obrigatórias): nome de
hospedeiro, e nome de
caminho:
www.ufsm.br/algum-depto/pic.gif
Agente de Usuário (AU)
para WWW se chama de
browser:



MS Internet Explorer
Netscape Communicator
Mozilla Firefox
Servidor para WWW se
chama “servidor WWW”:


Apache (domínio público)
MS Internet Information
Server (IIS)
URIs e URLs
URIs são conhecidas por muitos nomes:
Endereços WWW, Identificadores Documento
Universal, Identificadores de Recursos
Universal, e, finalmente, a combinação de
Uniform Resource Locator (URL) e Names
(URN).
URIs são simplesmente strings formatadas
que identificam - através do nome,
localização, ou qualquer outra característica um recurso de rede.
URI – RFC 2068 pg 19 e 20
Uniform Resource Identifiers
URI = ( absoluteURI | relativeURI ) [ "#" fragment ]
absoluteURI
relativeURI
net_path
abs_path
rel_path
= scheme ":" *( uchar | reserved )
= net_path | abs_path | rel_path
= "//" net_loc [ abs_path ]
= "/" rel_path
= [ path ] [ ";" params ] [ "?" query ]
path
= fsegment *( "/" segment )
fsegment
= 1*pchar
segment
= *pchar
params
param
= param *( ";" param )
= *( pchar | "/" )
http_URL
host
port
scheme
net_loc
= 1*( ALPHA | DIGIT | "+" | "-" | "." )
= *( pchar | ";" | "?" )
query
fragment
= *( uchar | reserved )
= *( uchar | reserved )
pchar
= uchar | ":" | "@" | "&" | "=" | "+"
uchar
= unreserved | escape
unreserved = ALPHA | DIGIT | safe | extra | national
escape
reserved
extra
safe
unsafe
national
= "%" HEX HEX
= ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+"
= "!" | "*" | "'" | "(" | ")" | ","
= "$" | "-" | "_" | "."
= CTL | SP | <"> | "#" | "%" | "<" | ">"
= <any OCTET excluding ALPHA, DIGIT,
reserved, extra, safe, and unsafe>
= "http:" "//" host [ ":" port ] [ abs_path ]
= <A legal Internet host domain name
or IP address (in dotted-decimal form),
as defined by Section 2.1 of RFC 1123>
= *DIGIT
URL – RFC 1738
Uniform Resource Locators
URL = <scheme>:<scheme-specific-part>
scheme
ftp, http, etc.
scheme-specific-part
//<user>:<password>@<host>:<port>/<url-path>
WWW: 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
ped
ido
htt
PC executa res
p
pos
Explorer
ta
htt
p
ttp
h
ido
ttp Servidor
d
h
e
p
executando
sta
o
p
servidor
res
WWW
do NCSA
Mac executa
Navigator
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
Protocolos que mantêm
“estado” são complexos!
 história passada (estado)
http é “sem estado”
tem que ser guardada
servidor não mantém informação
 Caso caia servidor/cliente,
sobre pedidos anteriores do cliente
suas visões do “estado”
podem ser inconsistentes,
devem ser reconciliadas
Exemplo de http
Supomos que usuário digita a URL portal.redes.ufsm.br/index.html
1a. Cliente http inicia conexão TCP
ao servidor http (processo) no
endereço portal.redes.ufsm.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
1b. Servidor http no hospedeiro
portal.redes.ufsm.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 (/index.html), envia
mensagem via socket
tempo
Exemplo de http (cont.)
4. Servidor http encerra conexão
5. Cliente http recebe mensagem
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
TCP.
Conexões não persistente and persistente
Persistente
Não persistente
default para HTTP/1.1
HTTP/1.0
na mesma conexão TCP:
servidor analisa pedido,
servidor analisa pedido,
responde, and encerra
responde, analisa novo
conexão TCP
pedido,..
2 RTTs para trazer cada
Cliente envia pedidos
objeto
para todos objetos
(RTT=round trip time)
referenciados assim que
transferência de cada
recebe o HTML base.
objeto sofre de “partida
lenta”
A maioria de browsers 1.0
usa connexões TCP paralelas.
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)
mensagem de pedido http: formato geral
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 ...
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
Experimente você com http (do lado cliente)
1. Use cliente telnet para seu servidor WWW favorito:
telnet www.ufsm.br 80
Abre conexão TCP para a porta 80
Qualquer coisa digitada é enviada para a
porta 80 do www.ufsm.br
2. Digite um pedido GET http:
GET /~trois/index.html HTTP/1.0
3. Examine a mensagem de resposta enviado pelo servidor http !
Digitando isto (deve teclar
ENTER duas vezes), está enviando
este pedido GET mínimo (porém
completo) ao servidor http
Alguma informação sobre 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
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>
Download

Aplicação