Redes de
Computadores I
Prof. Mateus Raeder
Universidade do Vale do Rio dos Sinos
- São Leopoldo -
Sumário
• Camada de aplicação
• Protocolos de aplicação
– HTTP
– FTP
• Exercícios
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
Metas:
• Aprender aspectos
conceituais e de
implementação de
protocolos de aplicação
em redes
Conhecer...
• ...protocolos específicos:
– Paradigma cliente /servidor
– Modelos de serviço
• Aprender sobre protocolos
através do estudo de
protocolos populares do
nível da aplicação
–
–
–
–
–
http
ftp
smtp
pop
dns
• ...a programação de
aplicações de rede.
– Programação usando
sockets
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
• É a camada mais próxima dos usuários
• Nas demais camadas, existem 1 ou 2
protocolos principais
• Na camada de aplicação, existem vários
protocolos, um para cada tipo de serviço
– Além disso, um serviço de rede pode fazer uso
de mais de um protocolo
• Ex.: o serviço de e-mail pode utilizar os protocolos SMTP,
POP e IMAP
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
• Aplicações de rede são
a “razão de ser” de uma
rede de computadores
application
transport
network
data link
physical
– Qual a necessidade de
projetar uma rede se não
existissem aplicações que
fossem usá-la?
• Aplicações de rede são
distribuídas em dois ou
mais sistemas finais
application
transport
network
data link
physical
application
transport
network
data link
physical
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
• Aplicações comunicamse através de troca de
mensagens
application
transport
network
data link
physical
– Ex.: Correio eletrônico,
transferência de arquivos,
WWW, login remoto, voz,
etc...
– As aplicações de rede têm
protocolos da camada de
aplicação que definem
detalhes desta comunicação
via troca de mensagens
application
transport
network
data link
physical
application
transport
network
data link
physical
Redes de Computadores I – Prof. Mateus Raeder
Protocolos de aplicação
• Protocolos da camada de aplicação:
– Não são a aplicação.
– APENAS uma “parte” da aplicação.
– Define mensagens trocadas por aplicações e ações tomadas
em sua resposta.
– Usam serviços providos por protocolos de camadas inferiores
Os processos em dois sistemas diferentes comunicam-se entre si,
trocando mensagens através da rede de computadores.
Um processo de emissão cria e emite mensagens na rede; um
processo de recepção recebe estas mensagens e responde
possivelmente emitindo mensagens de volta.
Redes de Computadores I – Prof. Mateus Raeder
Como os processos trocam mensagens
• Um protocolo da camada de aplicação define como os
processos de aplicação, funcionando em sistemas de
extremidade diferentes, trocam mensagens.
• Detalhadamente, um protocolo da camada de aplicação
define:
– Os tipos de mensagens trocadas, por exemplo, mensagens do
pedido e mensagens de resposta.
– A sintaxe dos vários tipos de mensagem, tais como os campos
na mensagem e como os campos são delineados.
– A semântica dos campos, isto é, o significado da informação nos
campos.
– As regras para determinar quando e como um processo emite
mensagens e responde às mensagens.
Redes de Computadores I – Prof. Mateus Raeder
Aplicações de rede
• Um processo é um programa
que roda num host.
– Dois processos no mesmo
host se comunicam usando
comunicação entre
processos (interprocess
comunnication), definida
pelo sistema operacional
(SO).
– Dois processos em hosts
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 (player) de mídia
Redes de Computadores I – Prof. Mateus Raeder
Paradigma cliente-servidor
• Existem 2 figuras: cliente e servidor
– Cliente: solicita um serviço
• Ex.: leitor de correio eletrônico
– Servidor: recebe, processa e responde
• Ex.: servidor de correio
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
• API - Aplication Program Interface:
– Interface de programação de aplicações
• Define a interface entre a aplicação e
camada de transporte.
• Socket (= tomada) : API da Internet
– Dois processos se comunicam enviando dados
para um socket , ou lendo dados de um socket.
Redes de Computadores I – Prof. Mateus Raeder
Comunicação pelos sockets (1)
• Os dois processos comunicam-se entre si emitindo e
recebendo mensagens através de seus sockets.
• O socket de um processo pode ser pensado como do porta
do processo:
– Um processo emite e recebe mensagens da rede, através
de seus sockets.
– Quando um processo quer emitir uma mensagem a um
outro processo em um outro host, empurra a mensagem
para fora de sua porta.
– O processo supõe que há um infra-estrutura de transporte
no outro lado da porta, a qual transportará a mensagem
até a porta do processo do destino.
Redes de Computadores I – Prof. Mateus Raeder
Como um processo identifica outro ?
• Pergunta: Como um processo pode “identificar”o outro
processo com o qual quer se comunicar?
• Endereço IP do host do outro processo.
– Por enquanto: basta saber que o IP ADDRESS é um valor de 32bits que identifica unicamente o sistema de extremidade. Mais
precisamente, identifica unicamente a interface (placa) que
conecta esse host à Internet. Ex. 200.145.9.9
• “Número de porta” : permite que o hospedeiro receptor
determine a qual processo deve ser entregue a mensagem.
Exemplo: Porta 80/TCP.
• Ex. 200.145.9.9:80 (Ver RFC 1700 - Portas well-known)
Redes de Computadores I – Prof. Mateus Raeder
Que serviços de transporte a aplicação precisa?
• Quando se desenvolve uma aplicação,
deve-se escolher um dos protocolos
disponíveis do transporte.
– Como você faz esta escolha?
• Estuda-se os serviços fornecidos pelos protocolos
disponíveis do transporte, e escolhe-se o protocolo
com os serviços que melhor se adaptem às
necessidades de sua aplicação.
Redes de Computadores I – Prof. Mateus Raeder
Que serviços de transporte a aplicação precisa?
Perda de dados:
• Algumas aplicações (por
exemplo áudio) podem
tolerar algumas perdas.
• Outras (por exemplo,
transferência de
arquivos, telnet) exigem
transferência 100%
confiável
Temporização:
• Algumas aplicações
(por exemplo,
telefonia em Internet,
jogos interativos)
requerem baixo
retardo para serem
“viáveis”.
Largura de banda:
• Algumas aplicações (por exemplo , multimídia) requerem
quantia mínima de banda para serem “viáveis”.
• Outras aplicações (“elásticas”) conseguem usar qualquer
quantia de banda disponível.
Redes de Computadores I – Prof. Mateus Raeder
Requisitos do serviço de transporte de
aplicações comuns
Aplicação
Perdas
Banda
Sensibilidade temporal
transferência de arqs
sem perdas
elástica
não
correio
sem perdas
elástica
não
documentos WWW
sem perdas
elástica
não
áudio/vídeo de tempo
real
tolerante
áudio: 5Kb-1Mb |
vídeo:10Kb-5Mb
sim, décimos de seg.
áudio/vídeo gravado
tolerante
como anterior
sim, alguns seg.
jogos interativos
tolerante
> alguns Kbps
sim, décimos de seg.
apps financeiras
sem perdas
elástica
sim e não
Redes de Computadores I – Prof. Mateus Raeder
Serviços providos por protocolos de
transporte Internet
• Serviço TCP:
• Serviço UDP:
– Orientado a conexão:
estabelecimento exigido
entre cliente e servidor.
– Transporte confiável entre
processos emissor e
receptor.
– Controle de fluxo: emissor
não vai “afogar” receptor.
– Controle de
congestionamento:
estrangular emissor quando
a rede está carregada.
– Não orientado a conexão
– Transferência de dados
não confiável entre
processos remetente e
receptor.
– Não provê:
estabelecimento da
conexão, confiabilidade,
controle de fluxo, controle
de congestionamento,
garantias temporais ou de
banda mínima.
– Pergunta-se: Qual é o
interesse em ter um UDP?
Redes de Computadores I – Prof. Mateus Raeder
Aplicações Internet: seus protocolos e
seus protocolos de transporte
Aplicação
Protocolo da camada
de app.
Protocolo de
transporte usado
Correio eletrônico
smtp [RFC 821]
TCP
Acesso terminal
remoto
telnet [RFC 854]
TCP
WWW
http [RFC 2068]
TCP
Transferência de
arquivos
ftp [RFC 959]
TCP
streaming multimídia
proprietário (Ex:
RealNetworks)
TCP ou UDP
Servidor de arquivo
remoto
NFS
TCP ou UDP
Telefonia Internet
proprietário (Ex:
Volcatec)
tipicamente UDP
Redes de Computadores I – Prof. Mateus Raeder
Os principais protocolos de
aplicação
HTTP e FTP
Redes de Computadores I – Prof. Mateus Raeder
WWW
• Página WWW:
– Consiste de “objetos”
– Endereçada por um URL Universal Resource Locator.
• Quase todas as páginas
WWW consistem de:
• Agente de usuário para
WWW se chama de browser:
– MS Internet Explorer.
– Firefox.
• Servidor para WWW se
chama “servidor WWW”:
– Página base HTML, e
– Vários objetos referenciados.
• URL tem duas partes:
– Apache (domínio público).
– MS Internet Information Server
(IIS).
– nome de hospedeiro, e nome
de caminho:
• www.inf.unisinos.br/imgs/logo.gif
Redes de Computadores I – Prof. Mateus Raeder
WWW: o protocolo http
• http: HyperText Transfer Protocol
– Protocolo da camada de
aplicação para WWW.
– Modelo cliente-servidor
• cliente: browser que
solicita, recebe
(“visualiza”) objetos
WWW.
• servidor: servidor WWW
envia objetos em
resposta a pedidos.
– http1.0: RFC 1945
– http1.1: RFC 2068
PC running
Explorer
Server
running
Apache Web
server
Mac running
Safari
Redes de Computadores I – Prof. Mateus Raeder
Mais sobre o protocolo http
• Usa serviço de transporte TCP:
– 1.) Cliente inicia conexão TCP
(cria socket) ao servidor, na
porta 80.
– 2.) Servidor aceita conexão
TCP do cliente.
– 3.) Troca mensagens http
(mensagens do protocolo da
camada de aplicação) entre
browser (cliente http) e
servidor WWW (servidor http).
– 4.) Encerra conexão TCP.
• http é “sem estado”
(stateless)
– Servidor não mantém
informação sobre pedidos
anteriores do cliente.
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
Redes de Computadores I – Prof. Mateus Raeder
Exemplo de http
Supondo que um usuário digita a URL www.inf.unisinos.br/index.html
(Ex: contém texto,
referências a 10
imagens jpeg)
1a. Cliente http inicia conexão TCP
ao servidor http (processo) em
www.inf.unisinos.br
Porta 80 é padrão para servidor http.
1b. servidor http no hospedeiro
www.inf.unisinos.br espera por
conexão TCP na porta 80. “Aceita”
conexão, avisando ao cliente
2. cliente http envia mensagem de
pedido de http (contendo URL)
através do socket da conexão TCP
3. servidor http recebe mensagem de
pedido, formula mensagem de resposta
contendo objeto solicitado
(index.html), e envia mensagem via
socket.
...
TEMPO
Redes de Computadores I – Prof. Mateus Raeder
Exemplo de http (continuação)
4. servidor http encerra conexão TCP .
5. cliente http recebe mensagem
de resposta contendo arquivo
html “inicial.html”, e visualiza
Html. Analisando arquivo html,
encontra 10 objetos jpeg
referenciados.
6. Passos 1 a 5 repetidos para
cada um dos 10 objetos jpeg
E então, continua...
TEMPO
Redes de Computadores I – Prof. Mateus Raeder
Conexões não-persistente e persistente
• Não persistente:
• Persistente:
– HTTP/1.0
– Servidor analisa pedido,
responde, e encerra
conexão TCP.
– 2 RTTs para trazer cada
objeto (RTT = round trip
Time  tempo de
viagem de ida e volta)
– Default for HTTP/1.1
– Na mesma conexão
TCP:
• servidor analisa pedido,
responde, analisa novo
pedido, etc...
– Cliente envia pedidos
para todos objetos
referenciados, assim que
recebe o HTML base .
– Menos RTTs.
– Consexão é encerrada
depois de determinado
tempo sem uso
Redes de Computadores I – Prof. Mateus Raeder
Conexão não-persistente (1)
1.
2.
3.
4.
5.
6.
O cliente HTTP inicia uma conexão TCP com o servidor.
O cliente emite mensagem de requisição HTTP através do socket
associado com a conexão do TCP que foi estabelecida.
Servidor HTTP recebe o request através do socket associado com a
conexão estabelecida, recupera o objeto /ai/inicial.html de seu
armazenamento, encapsula o objeto em uma mensagem HTTP de
resposta, e emite a mensagem de resposta através do socket.
O servidor diz ao cliente para fechar a conexão TCP.
O cliente recebe a mensagem de resposta. A conexão TCP
termina. A mensagem indica que o objeto encapsulado é um
arquivo HTML. O cliente extrai o arquivo da mensagem de resposta,
analisa, e encontra referências a 10 objetos do JPEG.
As primeiras quatro etapas são repetidas então para cada um dos
objetos JPEG referenciados.
Redes de Computadores I – Prof. Mateus Raeder
Conexão não-persistente (2)
• Cada conexão TCP transporta exatamente uma mensagem de
pedido e uma mensagem de resposta. No nosso exemplo, quando
um usuário requisita página, 11 conexões TCP são geradas.
• Nas etapas das conexões não persistentes, cada conexão do TCP é
fechada depois que o servidor envia o objeto: a conexão não
persiste para outros objetos.
• Quando o browser recebe uma página, mostra a página ao usuário.
Dois browsers diferentes podem interpretar (isto é, mostrar ao
usuário) um Web page de maneiras um diferentes. O HTTP não tem
nada ver como um Web page é interpretado por um cliente.
• As especificações do HTTP (RFC1945 e RFC2616) definem somente o
protocolo de comunicação entre o programa HTTP do cliente e o
programa HTTP do servidor.
Redes de Computadores I – Prof. Mateus Raeder
RTT (Round Trip Time)
• Definição: tempo que um
pacote leva para ser enviado
e retornar ao cliente;
• Tempo de resposta:
initiate TCP
– Um RTT para iniciar a
connection
conexão TCP;
RTT
– Um RTT para enviar requisição
request
HTTP e receber os primeiros
file
bytes da resposta;
RTT
• Tempo de transmissão do arquivo
– Total: 2RTT + tempo de transmissão
time to
transmit
file
file
received
time
time
Redes de Computadores I – Prof. Mateus Raeder
Conexão persistente
• Problemas do HTTP não persistente:
– Gasta 2RTT para cada objeto
– OS deve alocar recursos para cada conexão TCP
– Browsers costumam abrir conexões paralelas
• HTTP persistente
– Servidor deixa as conexões abertas após enviar a resposta
– Mensagens HTTP seguintes são enviadas usando esta conexão
Redes de Computadores I – Prof. Mateus Raeder
Conexão persistente
• Persistente sem paralelismo
– Cliente envia nova requisição apenas quando a mensagem
anterior tiver sido recebida
– Um RTT para cada objeto referenciado
• Persistente com paralelismo
– Padrão no HTTP/1.1
– Cliente envia requisições no momento em que encontra
objetos referenciados
– Pouco maior que um RTT para todos os objetos referenciados
Redes de Computadores I – Prof. Mateus Raeder
Download

camada de aplicação para WWW.