RC_aula_3

Propaganda
Redes de Computadores
DCC/UFJ
Capítulo 2 – Camada de
Aplicação
Material fortemente baseado nos slides do livro: Computer Networking:
A Top-Down Approach Featuring the Internet. Os slides foram
disponibilizados pelos autores James F. Kurose e Keith W. Ross
All material copyright 1996-2009
J.F Kurose and K.W. Ross, All Rights Reserved
2: Application Layer
1
Capítulo 2: Camada de Aplicação
 2.1 Princípios das
aplicações de rede
 2.2 Web e HTTP
 2.3 FTP
 2.4 Email

 2.6 Aplicações P2P
 2.7 Programação de
Sockets com TCP
 2.8 Programação de
Sockets com UDP
SMTP, POP3, IMAP
 2.5 DNS
2: Application Layer
2
Capítulo 2: Camada de Aplicação
Objetivos:
 Aspectos conceituais e
de implementação de
protocolos de aplicações
em redes
 Modelos de serviços
da camada de
transporte
 Paradigma clienteservidor
 Paradigma peer-topeer
 aprender um pouco
sobre protocolos,
examinando
protocolos populares
da camada de
aplicação




HTTP
FTP
SMTP / POP3 / IMAP
DNS
 Programação de
aplicações em redes
 socket API
2: Application Layer
3
Algumas Aplicações de Rede
 e-mail
 Voz sobre IP
 web
 Video conferência em
 Login remoto
tempo real
 Computação em grade
 Compartilhamento de

 Mensagem instantânea
arquivos P2P
 Jogos
 Vídeo armazenado


2: Application Layer
4
Criando uma aplicação de Rede
escrever programas que



Rodam em (diferentes)
sistemas finais
Comunicação através da
rede
e.g., software do servidor
web que se comunica com o
browser
Não existe necessidade de
escrever software para
os dispositivos no núcleo
da rede

application
transport
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
Dispositivos do núcleo da
rede não executam
aplicações de ‘usuários’
2: Application Layer
5
Capítulo 2: Camada de Aplicação
 2.1 Princípios das
aplicações de rede
 2.2 Web e HTTP
 2.3 FTP
 2.4 Email

 2.6 Aplicações P2P
 2.7 Programação de
Sockets com TCP
 2.8 Programação de
Sockets com UDP
SMTP, POP3, IMAP
 2.5 DNS
2: Application Layer
6
Arquiteturas das Aplicações de
Redes
 Cliente-Servidor
 Peer-to-peer (P2P)
 Híbrida: cliente-servidor e P2P
2: Application Layer
7
Arquitetura Cliente-Servidor
cliente/servidor
servidor:
 Sempre um sistema
final em
funcionamento
 Endereco IP
permanente
 Conjunto de
servidores -> server
farms
clientes:



Comunicam com o servidor
Podem ter endereço IP
dinâmico
Não existe comunicação
2: Application
Layer
8
direta entre
clientes
Arquitetura P2P Pura
 Não existe um servidor
sempre em funcionamento
 Sistemas finais podem se
comunicar diretamente uns peer-peer
com os outros
 Peers se conectam e
desconectam e podem mudar
os endereços IP
Altamente escalável, mas de
difícil gerenciamento
2: Application Layer
9
Arquiteturas Híbridas
Skype
 Aplicação P2P de voz sobre IP
 Servidor central: encontrar o endereço IP
 Conexão cliente-cliente: direta (sem passar pelo
servidor)
Mensagem Instantânea
 Conversa entre dois usuários usa paradigma P2P
 Serviço centralizado: detecção da presença
localização de um cliente
• Usuário registra seu IP no servidor central
quando fica online
• Usuário contacta um servidor central para
encontrar o IP de seus buddies
2: Application Layer
10
Comunicação entre processos
Processos : programas em
execução em um sistema
final.
 Em um mesmo host dois
processos se comunicam
usando comunicação
entre processos
(definida pelo SO).
 Processos em
diferentes sistemas
finais, se comunicam
através de trocas de
mensagens
Processo Cliente:
processo que inicia a
comunicação
Processo Servidor:
processo que espera
para ser contactado
 Aplicações com
arquitetura P2P
possuem processo
cliente e processo
servidor
2: Application Layer
11
Sockets
 Processo envia/recebe
mensagens para/de seu
socket
 Socket análogo a uma
porta


Processo envia mensagens
pela porta
Processo que envia msgs se
apoia na infraestrutura de
transporte que remete a
mensagem ao socket ligado
ao processo remoto
host or
server
host or
server
process
controlled by
app developer
process
socket
socket
TCP with
buffers,
variables
Internet
TCP with
buffers,
variables
controlled
by OS
 API: (1) escolha do protocolo de transporte; (2)
habilidade para definir alguns parâmetros
2: Application Layer
12
Endereçando Processos
 Para receber
mensagens, processo
tem que ter um
identificador
 O dispositivo do
sistema final possui um
endereço IP de 32 bits
 Q: o endereço IP de um
sistema final é
suficiente para
identificar também um
processo?
 identificador inclui o
endereço IP e o número
da porta associada ao
processo rodando no
sistema final
 Exemplo de portas:


Servidor HTTP : 80
Servidor Mail: 25
 Para enviar mensagens
HTTP para o servidor
gaia.cs.umass.edu :


Endereço IP :
128.119.245.12
Porta: 80
2: Application Layer
13
Protocolos da Camada de Aplicação
definem
 Tipos de mensagens
trocadas

e.g., requisições, respostas
 Sintaxe da Mensagem:

Quais são os campos das
mensagens e como os
campos são delimitados
 Semântica da Mensagem

Significado das informações
nos campos
 Regras para quando e como
Protocolos de domínio
público:
 Definidos em RFCs
 Permitem
interoperabilidade
 e.g., HTTP, SMTP
Protocolos proprietários:
 e.g., Skype
os processos enviam e
respondem mensagens
2: Application Layer
14
De que serviços uma aplicação necessita?
Perda de pacotes
 Algumas apl. (e.g., audio) podem
tolerar alguma perda
 Outras apl. (e.g., ftp, telnet)
requerem 100% de
transferência confiável dos
dados
Atraso
 Algumas apl. (e.g.,
VoIP, jogos
interativos) requerem
baixo atraso para
serem “eficazes”
Vazão
 Algumas apl. (e.g.,
multimedia) requerem
quantidade mínima de
vazão para serem
“eficazes”
 Outras apl. (“apl.
elásticas”) utilizam a
vazão que conseguem
Segurança
 Integridade dos dados,
…
2: Application Layer
15
Requisições que as aplicações fazem a camada
de Transporte
Data loss
Throughput
Time Sensitive
file transfer
e-mail
Web documents
real-time audio/video
no loss
no loss
no loss
loss-tolerant
no
no
no
yes, 100’s msec
stored audio/video
interactive games
instant messaging
loss-tolerant
loss-tolerant
no loss
elastic
elastic
elastic
audio: 5kbps-1Mbps
video:10kbps-5Mbps
same as above
few kbps up
elastic
Application
yes, few secs
yes, 100’s msec
yes and no
2: Application Layer
16
Serviços da camada de transporte
Serviços TCP:
 Orientado a conexão :




servidor e clientes devem se
conectar
Transporte confiável entre os
procesos que estão enviando e
recebendo mensagens
Controle de fluxo: origem
nunca vai sobrecarregar o
destino
Controle de
congestionamento: diminui a
taxa de envio da origem,
quando a rede está
congestionada
Não provê: atraso e vazão
mínimos, segurança
Serviços UDP:
 Transferência não
confiável entre os
processos de origem e
destino
 Não provê conexão
inicial, confiabilidade,
controle de fluxo,
vazão e atraso
mínimos ou segurança
Q: Para que existe UDP?
2: Application Layer
17
Aplicações na Internet: aplicação e protocolos de
transporte
Aplicação
e-mail
acesso a terminal remoto
Web
transferência de arquivos
streaming multimedia
telefonia Internet
Protocolo da camada
de Aplicação
Protocolo de
Transporte
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
HTTP (eg Youtube),
RTP [RFC 1889]
SIP, RTP, proprietário
(e.g., Skype)
TCP
TCP
TCP
TCP
TCP or UDP
tipicamente UDP
2: Application Layer
18
Capítulo 2: Camada de Aplicação
 2.1 Princípios das
aplicações de rede
 2.2 Web e HTTP
 2.3 FTP
 2.4 Email

 2.6 Aplicações P2P
 2.7 Programação de
Sockets com TCP
 2.8 Programação de
Sockets com UDP
SMTP, POP3, IMAP
 2.5 DNS
2: Application Layer
19
Web e HTTP
Alguns termos conhecidos
 Página Web consiste em um grupo de objetos
 Objeto pode ser um arquivo HTML, imagem JPEG,
applet Java, arquivo de audio,…
 Páginas Web consistem de um arquivo HTML base
com um conjunto de referências a objetos
 Cada objeto é endereçável a partir de uma URL
 Exemplo URL:
www.someschool.edu/someDept/pic.gif
Nome do host
Caminho do objeto
2: Application Layer
20
HTTP
HTTP: hypertext
transfer protocol
 Protocolo da camada de
aplicação para Web
 Modelo cliente/servidor
 Cliente: browser que
requisita, recebe e
disponibiliza objetos
Web
 Servidor : Servidor
Web envia objetos em
reposta a requisições
PC running
Explorer
Server
running
Apache Web
server
Mac running
Navigator
2: Application Layer
21
HTTP (cont.)
Usa TCP:
 Cliente inicializa uma
conexão TCP com o servidor,
através da porta 80
 Servidor aceita a conexão
TCP
 Mensagens HTTP messages
(application-layer protocol
messages) são trocadas
entre o browser (cliente
HTTP) e o servidor Web
Web (servidor HTTP)
 Conexão TCP é fechada
HTTP é sem estado
 Servidor não mantém
informações sobre
requisições passadas
dos clientes
Nota
Protocolos que guardam
estados são complexos!
Passado deve ser mantido
Se o servidor ou cliente caem,
o estados podem ficar
inconsistentes, e devem
ser refeitos
2: Application Layer
22
Conexões HTTP
Não persistente
 No máximo um objeto
é enviado a cada
conexão TCP
Persistente
 Vários objetos podem
ser enviados em uma
única conexão entre o
cliente e o servidor
2: Application Layer
23
HTTP Não persistente
(contem texto,
referências a 10 imagens jpeg
URL www.someSchool.edu/someDepartment/home.index
1a. Cliente HTTP inicializa uma
conexão TCP com o servidor
HTTP (processo) em
www.someSchool.edu na porta
80
2. Cliente HTTP envia uma
mensagem de requisição HTTP
(com a URL) no socket TCP.
Messagem indica que o cliente
quer acessar o objeto
someDepartment/home.index
1b. Servidor HTTP em
www.someSchool.edu está
esperando uma conexão TCP
na porta 80. “aceita” a
conexão, notificando o cliente
3. Servidor HTTP recebe a
mensagem de requisição,
monta a mensagem de reposta
contendo o objeto e envia ao
socket
tempo
2: Application Layer
24
HTTP Não Persistente (cont.)
4. Servidor HTTP fecha a
5. Cliente HTTP recebe a mensagem
conexão TCP
de resposta vinda do servidor,
contendo o arquivo e apresenta o
htm. Durante a passagem no
arquivo html, o cliente encontra 10
referências a objetos jpge
time 6. Passos 1-5 são repetidos
para cada um dos 10
objetos jpeg
2: Application Layer
25
HTTP Não Persistente: Tempo de
Resposta
Definição de RTT: tempo para
que um pacote pequento
´viaje´ do cliente para o
servidor e volte ao cliente
Tempo de reposta:
 Um RTT para iniciar a
conexão TCP
 Um RTT para que a primeira
requisição seja respondida
 Tempo de transmissão de um
objeto
total = 2RTT+tempo de
transmissão
initiate TCP
connection
RTT
request
file
RTT
file
received
time
time to
transmit
file
time
2: Application Layer
26
HTTP Persistente
Problemas do HTTP não
persistente:
 Requer 2 RTTs por objeto
 Sobrecarga do SO para cada
conexão TCP
 browsers oferecem
conexões TCP em paralelo
para busca de objetos
referenciados
HTTP Persistente
 Servidor deixa a conexão
aberta após envio de
resposta
 Todas as mensagens
trocadas pelo servidor e o
cliente usam a mesma
conexão TCP aberta no
começo
 Cliente faz uma requisiçaõ
assim que encontra um
objeto referenciado
 Um pouco mais de um RTT
para todos os objetos
referenciados
2: Application Layer
27
HTTP - Mensagem de requisição
 Dois tipos de mensagens : requisição, reposta
 Mensagem de requisição HTTP:
 ASCII
Linha de requisição
(comandos GET, POST,
HEAD)
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
Linhas do cabeçalho Connection: close
Accept-language:fr
Enter significa
fim da mensagem
2: Application Layer
28
Requisições HTTP : formato geral
2: Application Layer
29
Tipos de Métodos
HTTP/1.0
 GET
 POST
 HEAD

asks server to leave
requested object out of
response
HTTP/1.1
 GET, POST, HEAD
 PUT

Realiza o upload de um
arquivo para a URL
especificada no campo
URL
 DELETE
 Apaga um arquivo
especificado no campo
URL
2: Application Layer
30
HTTP – Mensagem de Reposta
Linha de status
(código do protocolo)
Linhas do cabeçalho
HTTP/1.1 200 OK
Connection close
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, e.g.,
data data data data data ...
Arquivo HTML requisitado
2: Application Layer
31
Códigos de Status -> Respostas
HTTP
Na primeira linha da mensagem entre servidor->cliente.
Alguns exemplos de código:
200 OK

Requisição foi feita com sucesso, o objeto está na parte de
dados da mensagem
301 Moved Permanently

Objeto foi removido do endereço passado, novo endereço é
especificado no final da mensagem
400 Bad Request

Servidor não entendeu a mensagem de requisição
404 Not Found

Documento requisitado não foi encontrado no servidor
505 HTTP Version Not Supported
2: Application Layer
32
Caches Web (servidores proxy)
Objetivo: responder a requisição do cliente sem enviá-la ao
servidor
origin
 No browser: página
server
Web é acessada via
cache
Proxy
server
 browser envia todas as
client
requisições a cache


Objeto em cache:
cache retorna o objeto
requisitado]
Cache também pode
fazer requisições para
o servidor original
client
origin
server
2: Application Layer
33
Mais sobre Cache Web
 Cache age como cliente
e servidor
 Tipicamente a cache é
instalada por um
provedor de Internet
(universidade,
companhias, ISPs
residênciais)
Por quê usar cache?
 Reduz o tempo de
reposta a um cliente
 Reduz o tráfego nos
enlaces de acesso de
uma instituição
2: Application Layer
34
Download