Uploaded by eron.marins.santos

cap2-Kurose

advertisement
Capítulo 2: Camada de Aplicação
suruagy@cin.ufpe.br
Baseado nos slides de Kurose e Ross
Capítulo 2: Roteiro
2.1 Princípios de
aplicações de rede
r 2.2 A Web e o HTTP
r 2.3 Correio Eletrônico
na Internet
r 2.4 DNS: o serviço de
diretório da Internet
r
2.5 Aplicações P2P
r 2.6 Fluxos (streams) de
vídeo e Redes de
Distribuição de
Conteúdo (CDNs)
r 2.7 Programação de
sockets com UDP e TCP
r
2: Camada de Aplicação
2
Capítulo 2: Camada de Aplicação
Metas do capítulo:
r aspectos conceituais
e de implementação
de protocolos de
aplicação em redes
m
m
m
r
modelos de serviço da
camada de transporte
paradigma cliente
servidor
r
paradigma peer-topeer (p2p)
aprender sobre protocolos
através do estudo de
protocolos populares da
camada de aplicação:
m
m
m
HTTP
SMTP/ POP3/ IMAP
DNS
Criar aplicações de rede
m
programação usando a API
de sockets
2: Camada de Aplicação
3
Algumas aplicações de rede
r
r
r
r
r
r
Correio eletrônico
A Web
Mensagens
instantâneas
Login em computador
remoto como Telnet e
SSH
Compartilhamento de
arquivos P2P
Jogos multiusuários
em rede
r
r
r
r
r
r
Streaming de vídeos
armazenados
(YouTube, Hulu,
Netflix)
Telefonia por IP
(Skype)
Videoconferência em
tempo real
Busca
...
...
2: Camada de Aplicação
4
Criando uma aplicação de rede
Programas que
m
m
m
Executam em (diferentes)
sistemas finais
Comunicam-se através da rede
p.ex., servidor Web se comunica
com o navegador
aplicação
transporte
rede
enlace
física
Programas não relacionados
ao núcleo da rede
m
m
Dispositivos do núcleo da rede
não executam aplicações dos
usuários
Aplicações nos sistemas finais
permitem rápido
desenvolvimento e disseminação
aplicação
transporte
rede
enlace
física
aplicação
transporte
rede
enlace
física
2: Camada de Aplicação
5
Arquiteturas das aplicações de
rede
r Estruturas possíveis das aplicações:
m Cliente-servidor
m Peer-to-peer (P2P)
2: Camada de Aplicação
6
Arquitetura cliente-servidor
Servidor:
r Sempre ligado
r Endereço IP permanente
r Escalabilidade com data
centers
Clientes:
r Comunicam-se com o servidor
r Podem estar conectados
cliente/servidor
intermitentemente
r Podem ter endereços IP
dinâmicos
r Não se comunicam diretamente
com outros clientes
2: Camada de Aplicação
7
Arquitetura P2P
r
r
r
Não há servidor sempre ligado
Sistemas finais arbitrários se
comunicam diretamente
Pares solicitam serviços de
outros pares e em troca
proveem serviços para outros
parceiros:
m
r
peer-peer
Autoescalabilidade – novos
pares trazem nova capacidade
de serviço assim como novas
demandas por serviços.
Pares estão conectados
intermitentemente e mudam
endereços IP
m
Gerenciamento complexo
2: Camada de Aplicação
8
Comunicação entre Processos
Processo cliente:
Processo: programa que
processo que inicia a
executa num sistema final
comunicação
r processos no mesmo
sistema final se comunicam Processo servidor:
processo que espera
usando comunicação entre
ser contatado
processos (definida pelo
sistema operacional)
r Nota: aplicações com
r processos em sistemas
arquiteturas P2P
finais distintos se
possuem processos
comunicam trocando
clientes e processos
mensagens através da rede
servidores
2: Camada de Aplicação
9
Sockets
Os processos enviam/ recebem mensagens
para/dos seus sockets
r Um socket é análogo a uma porta
r
m
m
Processo transmissor envia a mensagem através da porta
O processo transmissor assume a existência da infraestrutura
de transporte no outro lado da porta que faz com que a
mensagem chegue ao socket do processo receptor
aplicação
processo
socket
aplicação
processo
transporte
transporte
rede
rede
enlace
física
Internet
enlace
Controlado pelo
desenvolvedor
da aplicação
controlado
pelo SO
física
2: Camada de Aplicação
10
Endereçamento de processos
r
r
r
r
Para que um processo
receba mensagens, ele deve
possuir um identificador
Cada hospedeiro possui um
endereço IP único de 32
bits
P: o endereço IP do
hospedeiro no qual o
processo está sendo
executado é suficiente para
identificar o processo?
Resposta: Não, muitos
processos podem estar
executando no mesmo
hospedeiro
r
r
O identificador inclui tanto
o endereço IP quanto os
números das portas
associadas com o processo
no hospedeiro .
Exemplo de números de
portas:
m
m
r
Para enviar uma msg HTTP
para o servidor Web
gaia.cs.umass.edu
m
m
r
Servidor HTTP: 80
Servidor de Correio: 25
Endereço IP: 128.119.245.12
Número da porta: 80
Mais sobre isto
posteriormente.
2: Camada de Aplicação
11
Os protocolos da camada de
aplicação definem
r
Tipos de mensagens
trocadas:
m
r
Sintaxe das mensagens:
m
r
campos presentes nas
mensagens e como são
identificados
Semântica das msgs:
m
r
ex. mensagens de
requisição e resposta
Protocolos abertos:
r definidos em RFCs
r Permitem a
interoperação
r ex, HTTP e SMTP
Protocolos proprietários:
r Ex., Skype
significado da informação
nos campos
Regras para quando os
processos enviam e
respondem às mensagens
2: Camada de Aplicação
12
De que serviços uma aplicação necessita?
Integridade dos dados
(sensibilidade a perdas)
r
r
algumas apls (p.ex., transf. de
arquivos, transações web)
requerem uma transferência
100% confiável
outras (p.ex. áudio) podem
tolerar algumas perdas
Temporização (sensibilidade a
atrasos)
r
algumas apls (p.ex., telefonia
Internet, jogos interativos)
requerem baixo retardo para
serem “viáveis”
Vazão (throughput)
r
r
algumas apls (p.ex., multimídia)
requerem quantia mínima de
vazão para serem “viáveis”
outras apls (“apls elásticas”)
conseguem usar qq quantia de
banda disponível
Segurança
r
Criptografia, integridade dos
dados, ...
2: Camada de Aplicação
13
Requisitos de aplicações de rede selecionadas
Sensib. a
Aplicação Perdas
transferência de arqs
correio
documentos Web
áudio/vídeo em
tempo real
áudio/vídeo gravado
jogos interativos
mensagem instantânea
Sensibilidade a
Vazão
atrasos
elástica
elástica
elástica
áudio: 5kbps-1Mbps
vídeo:10kbps-5Mbps
Igual acima
tolerante
Alguns kbps-10Mbps
tolerante
sem perdas elástica
sem perdas
sem perdas
sem perdas
tolerante
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
14
Serviços providos pelos protocolos de
transporte da Internet
Serviço TCP:
Serviço UDP:
r
r
r
r
r
r
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 estiver carregada
não provê: garantias
temporais ou de banda mínima
orientado a conexão:
apresentação requerida entre
cliente e servidor
r
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
P: Qual é o interesse em ter um
protocolo como o UDP?
2: Camada de Aplicação
15
Apls Internet: seus protocolos e seus
protocolos de transporte
Aplicação
correio eletrônico
acesso terminal remoto
Web
transferência de arquivos
streaming multimídia
telefonia Internet
Protocolo da
camada de apl.
Protocolo de
transporte usado
SMTP [RFC 2821]
telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
HTTP (ex. Youtube)
RTP [RFC 1889]
SIP, RTP, proprietário
(ex., Skype)
TCP
TCP
TCP
TCP
TCP ou UDP
TCP ou UDP
2: Camada de Aplicação
16
Tornando o TCP seguro
TCP & UDP
r Sem criptografia
r Senhas em texto aberto
enviadas aos sockets
atravessam a Internet em
texto aberto
SSL
r Provê conexão TCP
criptografada
r Integridade dos dados
r Autenticação do ponto
terminal
SSL está na camada de
aplicação
r Aplicações usam bibliotecas
SSL, que “falam” com o TCP
API do socket SSL
r Senhas em texto aberto
enviadas ao socket
atravessam a rede
criptografadas
r Vide Capítulo 7
2: Camada de Aplicação
17
Capítulo 2: Roteiro
2.1 Princípios de
aplicações de rede
r 2.2 A Web e o HTTP
r 2.3 Correio Eletrônico
na Internet
r 2.4 DNS: o serviço de
diretório da Internet
r
2.5 Aplicações P2P
r 2.6 Fluxos (streams) de
vídeo e Redes de
Distribuição de
Conteúdo (CDNs)
r 2.7 Programação de
sockets com UDP e TCP
r
2: Camada de Aplicação
18
A Web e o HTTP
Primeiro uma revisão...
r Páginas Web consistem de objetos
r um objeto pode ser um arquivo HTML, uma imagem
JPEG, um applet Java, um arquivo de áudio,…
r Páginas Web consistem de um arquivo base HTML
que inclui vários objetos referenciados
r Cada objeto é endereçável por uma URL
r Exemplo de URL:
www.someschool.edu/someDept/pic.gif
nome do hospedeiro
nome do caminho
2: Camada de Aplicação
19
Protocolo HTTP
HTTP: hypertext
transfer protocol
r
r
protocolo da camada de
aplicação da Web
modelo cliente/servidor
m cliente: browser que
pede, recebe (usando o
protocolo HTTP) e
“visualiza” objetos Web
m servidor: servidor Web
envia (usando o
protocolo HTTP)
objetos em resposta a
pedidos
ped
ido
PC executando re
spo
sta
Explorer
htt
p
htt
p
ttp
h
ido
tp Servidor
d
t
e
h
p
executando
sta
o
p
servidor
res
Web Apache
iphone executando
o navegador Safari
2: Camada de Aplicação
20
Mais sobre o protocolo HTTP
Usa serviço de transporte
TCP:
r
r
r
r
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 servidor
Web (servidor HTTP)
encerra conexão TCP
HTTP é “sem estado”
r
servidor não mantém
informação sobre
pedidos anteriores do
cliente
Nota
Protocolos que mantêm
“estado” são complexos!
r história passada (estado)
tem que ser guardada
r Caso caia servidor/cliente,
suas visões do “estado”
podem ser inconsistentes,
devem ser reconciliadas
2: Camada de Aplicação
21
Conexões HTTP
HTTP não persistente
r No máximo um objeto
é enviado numa
conexão TCP
m
r
A conexão é então
encerrada
Baixar múltiplos
objetos requer o uso
de múltiplas conexões
HTTP persistente
r Múltiplos objetos
podem ser enviados
sobre uma única
conexão TCP entre
cliente e servidor
2: Camada de Aplicação
22
Exemplo de HTTP não persistente
Supomos que usuário digita a URL
www.algumaUniv.br/algumDepartmento/inicial.index
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
tempo
http (contendo URL)
através do socket da
conexão TCP. A mensagem
indica que o cliente deseja
receber o objeto
algumDepartamento/inicial.
index
(contém texto,
referências a 10
imagens jpeg)
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 e envia a mensagem
via socket
2: Camada de Aplicação
23
Exemplo de HTTP não persistente
(cont.)
4. servidor http encerra conexão
TCP .
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
2: Camada de Aplicação
24
Modelagem do tempo de resposta
Definição de RTT (Round Trip
Time): intervalo de tempo
entre a ida e a volta de um
pequeno pacote entre um
cliente e um servidor
Tempo de resposta:
r um RTT para iniciar a conexão
TCP
r um RTT para o pedido HTTP e
o retorno dos primeiros bytes
da resposta HTTP
r tempo de transmissão do
arquivo
total = 2RTT+tempo de
transmissão do arquivo
Inicia a conexão
TCP
RTT
solicita
arquivo
tempo para
transmitir
o arquivo
RTT
arquivo
recebido
tempo
tempo
2: Camada de Aplicação
25
HTTP persistente
Problemas com o HTTP não
persistente:
r requer 2 RTTs para cada
objeto
r SO aloca recursos do
hospedeiro (overhead) para
cada conexão TCP
r os browser
frequentemente abrem
conexões TCP paralelas
para recuperar os objetos
referenciados
HTTP persistente
r o servidor deixa a conexão
aberta após enviar a
resposta
r mensagens HTTP seguintes
entre o mesmo
cliente/servidor são
enviadas nesta conexão
aberta
r o cliente envia os pedidos
logo que encontra um
objeto referenciado
r pode ser necessário apenas
um RTT para todos os
objetos referenciados
2: Camada de Aplicação
26
Mensagem de requisição HTTP
Dois tipos de mensagem HTTP: requisição, resposta
r mensagem de requisição HTTP:
r
m
ASCII (formato legível por pessoas)
linha da requisição
(comandos GET,
POST, HEAD)
linhas de
cabeçalho
Carriage return,
line feed
indicam fim
de mensagem
GET /index.html HTTP/1.1\r\n
Host: www-net.cs.umass.edu\r\n
User-Agent: Firefox/3.6.10\r\n
Accept: text/html,application/xhtml+xml\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip,deflate\r\n
Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n
Keep-Alive: 115\r\n
Connection: keep-alive\r\n
\r\n
2: Camada de Aplicação
27
Mensagem de requisição HTTP:
formato geral
2: Camada de Aplicação
28
Enviando conteúdo de formulário
Método POST :
r Páginas Web frequentemente contêm formulário
de entrada
r Conteúdo é enviado para o servidor no corpo da
mensagem
Método URL:
r Usa o método GET
r Conteúdo é enviado para o servidor no campo URL:
www.somesite.com/animalsearch?key=monkeys&bananas
2: Camada de Aplicação
29
Tipos de métodos
HTTP/1.0
r GET
r POST
r HEAD
m
Pede para o servidor
não enviar o objeto
requerido junto com a
resposta
HTTP/1.1
r GET, POST, HEAD
r PUT
m
r
Upload de arquivo
contido no corpo da
mensagem para o
caminho especificado no
campo URL
DELETE
m
Exclui arquivo
especificado no campo
URL
2: Camada de Aplicação
30
Mensagem de resposta HTTP
linha de status
(protocolo,
código de status,
frase de status)
linhas de
cabeçalho
dados, p.ex.,
arquivo html
solicitado
HTTP/1.1 200 OK\r\n
Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n
Server: Apache/2.0.52 (CentOS)\r\n
Last-Modified: Tue, 30 Oct 2007 17:00:02
GMT\r\n
ETag: "17dc6-a5c-bf716880"\r\n
Accept-Ranges: bytes\r\n
Content-Length: 2652\r\n
Keep-Alive: timeout=10, max=100\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html; charset=ISO-88591\r\n
\r\n
data data data data data ...
2: Camada de Aplicação
31
códigos de status da resposta HTTP
Na primeira linha da mensagem de resposta
servidor->cliente. Alguns códigos típicos:
200 OK
m
sucesso, objeto pedido segue mais adiante nesta mensagem
301 Moved Permanently
m
objeto pedido mudou de lugar, nova localização
especificado mais adiante nesta mensagem (Location:)
400 Bad Request
m
mensagem de pedido não entendida pelo servidor
404 Not Found
m
documento pedido não se encontra neste servidor
505 HTTP Version Not Supported
m
versão de http do pedido não usada por este servidor
2: Camada de Aplicação
32
Experimente você com HTTP (do lado
cliente)
1. Use cliente telnet para seu servidor WWW favorito:
telnet cis.poly.edu 80
Abre conexão TCP para a porta 80
(porta padrão do servidor http) a cis.poly.edu.
Qualquer coisa digitada é enviada para a
porta 80 do cis.poly.edu
2. Digite um pedido GET HTTP:
GET /~ross/ HTTP/1.1
Host: cis.poly.edu
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 enviada pelo servidor HTTP !
(ou use Wireshark para ver as msgs de pedido/resposta HTTP
capturadas)
2: Camada de Aplicação
33
Cookies: manutenção do “estado” da
conexão
Muitos dos principais sítios
Web usam cookies
Quatro componentes:
1) linha de cabeçalho do
cookie na mensagem de
resposta HTTP
2) linha de cabeçalho do
cookie na mensagem de
pedido HTTP
3) arquivo do cookie mantido
no host do usuário e
gerenciado pelo browser
do usuário
4) BD de retaguarda no sítio
Web
Exemplo:
m
m
m
Suzana acessa a
Internet sempre do
mesmo PC
Ela visita um sítio
específico de comércio
eletrônico pela primeira
vez
Quando os pedidos
iniciais HTTP chegam no
sítio, o sítio cria
• uma ID única
• uma entrada para a ID no
BD de retaguarda
2: Camada de Aplicação
34
Cookies: manutenção do “estado” (cont.)
cliente
ebay: 8734
arquivo de
Cookies
amazon: 1678
ebay: 8734
msg usual pedido http
msg usual pedido http
cookie: 1678
resposta usual http
ação
específica
do cookie
aces
so
ac
es
uma semana depois:
arquivo de
Cookies
amazon: 1678
ebay: 8734
e
servidor de ntrad
a
resposta usual http +
cria a ID 1678 retag no B
ua
rd D
Set-cookie: 1678 para o usuário
a
so
arquivo de
Cookies
servidor
msg usual pedido http
cookie: 1678
resposta usual http
ação
específica
do cookie
2: Camada de Aplicação
35
Cookies (continuação)
nota
O que os cookies podem obter: Cookies e privacidade:
r cookies permitem que os
r autorização
sítios aprendam muito
r carrinhos de compra
sobre você
r recomendações
r você pode fornecer nome e
e-mail para os sítios
r estado da sessão do usuário
(Webmail)
Como manter o “estado”:
r Pontos finais do protocolo: mantêm o
estado no transmissor/receptor para
múltiplas transações
r Cookies: mensagens http transportam
o estado
2: Camada de Aplicação
36
Cache Web (servidor proxy)
Meta: atender pedido do cliente sem envolver servidor de origem
r
r
usuário configura
browser: acessos Web via
proxy
cliente envia todos
pedidos HTTP ao proxy
m
m
se objeto estiver no
cache do proxy, este o
devolve imediatamente
na resposta HTTP
senão, solicita objeto do
servidor de origem,
depois devolve resposta
HTTP ao cliente
cliente
Servidor
de origem
Servidor
ped
ttp
proxy
ido
h
htt
ido
res
ttp
d
p
h
e
pos
p
ta
sta
o
htt
p
p
res
ttp
h
ido
ttp
d
h
e
p
sta
o
p
res
cliente
Servidor
de origem
2: Camada de Aplicação
37
Mais sobre Caches Web
r
r
Cache atua tanto como
cliente quanto como
servidor
Tipicamente o cache é
instalado por um ISP
(universidade, empresa,
ISP residencial)
Para que fazer cache Web?
r Redução do tempo de
resposta para os pedidos
do cliente
r Redução do tráfego no
canal de acesso de uma
instituição
r A Internet cheia de caches
permitem que provedores
de conteúdo “pobres”
efetivamente forneçam
conteúdo (mas o
compartilhamento de
arquivos P2P também!)
2: Camada de Aplicação
38
Exemplo de cache (1)
Hipóteses
r Tamanho médio de um objeto =
100.000 bits
r Taxa média de solicitações dos
browsers de uma instituição
para os servidores originais =
15/seg
r Atraso do roteador institucional
para qualquer servidor origem e
de volta ao roteador = 2seg
Consequências
r Utilização da LAN = 0,15%
r Utilização do canal de acesso =
99%
problema!
r Atraso total = atraso da
Internet + atraso de acesso +
atraso na LAN = 2 seg + minutos
+ microssegundos
Servidores
de origem
Internet
pública
enlace de acesso
1,54 Mbps
rede da
instituição
LAN 1 Gbps
2: Camada de Aplicação
39
Exemplo de cache (2)
Solução em potencial
r Aumento da largura de banda
do canal de acesso para, por
exemplo, 154 Mbps
Consequências
r Utilização da LAN = 0,15%
r Utilização do canal de acesso
= 9,9%
r Atraso total = atraso da
Internet + atraso de acesso
+ atraso na LAN = 2 seg +
msegs + microssegundos
r Frequentemente este é uma
ampliação cara
Servidores
de origem
Internet
pública
enlace de acesso
154 Mbps
rede da
instituição
LAN 1 Gbps
2: Camada de Aplicação
40
Exemplo de cache (3)
Instale uma cache
r Assuma que a taxa de acerto
seja de 0,4
Consequências
r 40% dos pedidos serão
atendidos quase que
imediatamente
r 60% dos pedidos serão servidos
pelos servidores de origem
r Utilização do canal de acesso é
reduzido para 60%, resultando
em atrasos desprezíveis (ex. 10
mseg)
r Atraso total = atraso da
Internet + atraso de acesso +
atraso na LAN = 0,6*2 seg +
0,6*0,01 segs + msegs < 1,3 segs
Servidores
de origem
Internet
pública
enlace de acesso
1,54 Mbps
rede da
instituição
LAN 1 Gbps
cache
institucional
2: Camada de Aplicação
41
GET condicional
r
Meta: não enviar objeto se
cliente já tem (no cache)
versão atual
m
m
r
Sem atraso para transmissão
do objeto
Diminui a utilização do enlace
cache: especifica data da
cópia no cache no pedido
HTTP
If-modified-since:
<date>
r
servidor: resposta não
contém objeto se cópia no
cache for atual:
HTTP/1.0 304 Not
Modified
servidor
cache
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
42
HTTP/2
r
Aprovado pela IESG (Internet Engineering Steering Group)
em Fevereiro de 2015
m
r
https://tools.ietf.org/html/draft-ietf-httpbis-http2-17
Objetivos:
m
m
m
Mecanismos de negociação para permitir a clientes e servidores
escolher o HTTP 1.1, 2, ou outros protocolos
Manutenção de compatibilidade de alto nível como HTTP 1.1
Diminuir a latência para melhorar a velocidade de carga das
páginas através de:
• Compressão de dados dos cabeçalhos HTTP
• Tecnologias de envio (push) pelos servidores
• Consertar o problema de bloqueio do cabeça da fila (HOL) do HTTP
1.1
• Carga de elementos da página em paralelo através de uma única
conexão TCP
m
Dar suporte aos casos de uso comuns atuais do HTTP
2: Camada de Aplicação
43
HTTP/2: Diferenças do HTTP 1.1
r
Mantém a maior parte da sintaxe de alto nível do HTTP 1.1
tais como: métodos, códigos de status, campos de cabeçalhos
e URIs
m
r
r
r
O que é modificado é como os dados são estruturados e
transportados entre o cliente e o servidor de forma binária e
não textual.
HTTP/2 permite ao servidor enviar (push) conteúdo, i.e.,
enviar mais dados que os solicitados pelo cliente.
Multiplexa os pedidos e as respostas para evitar o problema
de bloqueio pelo cabeça da fila do HTTP 1.1.
Realiza ainda um controle de fluxo e priorização dos pedidos.
2: Camada de Aplicação
44
HTTP/2: Transporte Binário
2: Camada de Aplicação
45
HTTP/2: Quadros
r Tipos:
m HEADERS, DATA, PRIORITY, RST_STREAM,
SETTINGS, PUSH_PROMISE, PING,
GOAWAY, WINDOW_UPDATE,
CONTINUATION
2: Camada de Aplicação
46
HTTP/2: Multiplexação
2: Camada de Aplicação
47
Capítulo 2: Roteiro
2.1 Princípios de
aplicações de rede
r 2.2 A Web e o HTTP
r 2.3 Correio Eletrônico
na Internet
r 2.4 DNS: o serviço de
diretório da Internet
r
2.5 Aplicações P2P
r 2.6 Fluxos (streams) de
vídeo e Redes de
Distribuição de
Conteúdo (CDNs)
r 2.7 Programação de
sockets com UDP e TCP
r
2: Camada de Aplicação
48
Correio Eletrônico
Três grandes componentes:
r
r
r
agentes de usuário (UA)
servidores de correio
Simple Mail Transfer Protocol:
servidor
de correio
SMTP
SMTP
Agente de Usuário
r a.k.a. “leitor de correio”
r compor, editar, ler mensagens
de correio
r p.ex., Outlook, Thunderbird,
cliente de mail do iPhone
r mensagens de saída e chegando
são armazenadas no servidor
agente
de
usuário
SMTP
SMTP
servidor
de correio
agente
de
usuário
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
49
Correio Eletrônico: servidores de correio
Servidores de correio
r
r
r
caixa de correio contém
mensagens de chegada
(ainda não lidas) p/ usuário
fila de mensagens contém
mensagens de saída (a serem
enviadas)
protocolo SMTP entre
servidores de correio para
transferir mensagens de
correio
m cliente: servidor de
correio que envia
m “servidor”: servidor de
correio que recebe
servidor
de correio
agente
de
usuário
SMTP
SMTP
SMTP
servidor
de correio
agente
de
usuário
agente
de
usuário
servidor
de correio
agente
de
usuário
agente
de
usuário
2: Camada de Aplicação
50
Correio Eletrônico:
SMTP [RFC 2821]
r
r
r
r
r
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
m handshaking (saudação)
m transferência das mensagens
m encerramento
interação comando/resposta (como o HTTP e o FTP)
m comandos: texto ASCII
m resposta: código e frase de status
mensagens precisam ser em ASCII de 7-bits
2: Camada de Aplicação
51
Gerência da Porta 25
http://antispam.br/
2: Camada de Aplicação
52
Cenário: Alice envia uma msg para Bob
1) Alice usa o UA para compor
uma mensagem “para”
bob@someschool.edu
2) O UA de Alice envia a
mensagem para o seu
servidor de correio; a
mensagem é colocada na
fila de mensagens
3) O lado cliente do SMTP
abre uma conexão TCP com
o servidor de correio de
Bob
4) O cliente SMTP envia a
mensagem de Alice através
da conexão TCP
5) O servidor de correio de
Bob coloca a mensagem na
caixa de entrada de Bob
6) Bob chama o seu UA para
ler a mensagem
2: Camada de Aplicação
53
Interação SMTP típica
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:
220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <alice@crepes.fr>
250 alice@crepes.fr ... Sender ok
RCPT TO: <bob@hamburger.edu>
250 bob@hamburger.edu ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
2: Camada de Aplicação
54
Experimente uma interação SMTP:
telnet nomedoservidor 25
r veja resposta 220 do servidor
r entre comandos HELO, MAIL FROM, RCPT TO,
DATA, QUIT
r
estes comandos permitem que você envie correio sem
usar um cliente (leitor de correio)
2: Camada de Aplicação
55
SMTP: últimas palavras
r
r
r
SMTP usa conexões
persistentes
SMTP requer que a mensagem
(cabeçalho e corpo) sejam em
ASCII de 7-bits
servidor SMTP usa
CRLF.CRLF para reconhecer o
final da mensagem
Comparação com HTTP
r
r
HTTP: pull (recupera)
SMTP: push (envia)
r
ambos têm interação
comando/resposta, códigos
de status em ASCII
r
HTTP: cada objeto é
encapsulado em sua própria
mensagem de resposta
SMTP: múltiplos objetos de
mensagem enviados numa
mensagem de múltiplas
partes
r
2: Camada de Aplicação
56
Formato de uma mensagem
SMTP: protocolo para trocar
msgs de correio
RFC 822: padrão para formato
de mensagem de texto:
r linhas de cabeçalho, p.ex.,
m
m
m
To:
From:
Subject:
cabeçalho
linha em
branco
corpo
diferentes dos comandos de
smtp FROM, RCPT TO
r
corpo
m
a “mensagem”, somente de
caracteres ASCII
2: Camada de Aplicação
57
Formato de uma mensagem: extensões para
multimídia
r
r
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: ana@consumidor.br
To: bernardo@doces.br
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
58
Tipos MIME
Content-Type: tipo/subtipo; parâmetros
Text
Audio
r
r
r
subtipos exemplos: plain,
html
charset=“iso-8859-1”,
ascii
Image
r
r
Application
r
subtipos exemplos : jpeg,
gif
Video
subtipos exemplos : mpeg,
quicktime
subtipos exemplos : basic
(8-bit codificado mu-law),
32kadpcm (codificação 32
kbps)
r
outros dados que precisam
ser processados por um
leitor para serem
“visualizados”
subtipos exemplos :
msword, octet-stream
2: Camada de Aplicação
59
Tipo Multipart
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
Dear Bob,
Please find a picture of a crepe.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
--98766789-2: Camada de Aplicação
60
Protocolos de acesso ao correio
agente
de
usuário
SMTP
SMTP
servidor de correio
do remetente
r
r
POP3 ou
IMAP
agente
de
usuário
servidor de correio
do receptor
SMTP: entrega/armazenamento no servidor do receptor
protocolo de acesso ao correio: recupera do servidor
m POP: Post Office Protocol [RFC 1939]
• autorização (agente <-->servidor) e transferência
m IMAP: Internet Mail Access Protocol [RFC 1730]
• mais comandos (mais complexo)
• manuseio de msgs armazenadas no servidor
m HTTP: gmail, Hotmail , Yahoo! Mail, etc.
2: Camada de Aplicação
61
Protocolo POP3
fase de autorização
r
r
comandos do cliente:
m user: declara nome
m pass: senha
servidor responde
m +OK
m -ERR
fase de transação, cliente:
r
r
r
r
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
62
POP3 (mais) e IMAP
Mais sobre o POP3
r O exemplo anterior
usa o modo “download
e delete”.
r Bob não pode reler as
mensagens se mudar
de cliente
r “Download-emantenha”: copia as
mensagens em clientes
diferentes
r POP3 não mantém
estado entre conexões
IMAP
r Mantém todas as
mensagens num único
lugar: o servidor
r Permite ao usuário
organizar as mensagens
em pastas
r O IMAP mantém o estado
do usuário entre sessões:
m
nomes das pastas e
mapeamentos entre as IDs
das mensagens e o nome da
pasta
2: Camada de Aplicação
63
Capítulo 2: Roteiro
2.1 Princípios de
aplicações de rede
r 2.2 A Web e o HTTP
r 2.3 Correio Eletrônico
na Internet
r 2.4 DNS: o serviço de
diretório da Internet
r
2.5 Aplicações P2P
r 2.6 Fluxos (streams) de
vídeo e Redes de
Distribuição de
Conteúdo (CDNs)
r 2.7 Programação de
sockets com UDP e TCP
r
2: Camada de Aplicação
64
DNS: Domain Name System
Pessoas: muitos
identificadores:
m
CPF, nome, no. da
Identidade
hospedeiros, roteadores
Internet :
m
m
endereço IP (32 bit) usado p/ endereçar
datagramas
“nome”, ex.,
www.yahoo.com - usado
por gente
P: como mapear entre
nome e endereço IP?
Domain Name System:
r
base de dados distribuída
r
protocolo de camada de
aplicação permite que
implementada na hierarquia de
muitos servidores de nomes
hospedeiros, roteadores,
servidores de nomes se
comuniquem para resolver nomes
(tradução endereço/nome)
m nota: função imprescindível
da Internet implementada
como protocolo de camada de
aplicação
m complexidade na borda da
rede
2: Camada de Aplicação
65
DNS (cont.)
Serviços DNS
r Tradução de nome de
hospedeiro para IP
r Apelidos para
hospedeiros (aliasing)
m
Nomes canônicos e apelidos
Apelidos para
servidores de e-mail
r Distribuição de carga
r
m
Por que não centralizar o
DNS?
r ponto único de falha
r volume de tráfego
r base de dados
centralizada e distante
r manutenção (da BD)
Não é escalável!
Servidores Web replicados:
conjunto de endereços IP
para um mesmo nome
2: Camada de Aplicação
66
Base de Dados Hierárquica e
Distribuída
Root DNS Servers
com DNS servers
org DNS servers
yahoo.com amazon.com
DNS serversDNS servers
edu DNS servers
poly.edu
umass.edu
pbs.org
DNS servers DNS serversDNS servers
Cliente quer IP para www.amazon.com; 1a aprox:
r Cliente consulta um servidor raiz para encontrar um servidor
DNS .com
r Cliente consulta servidor DNS .com para obter o servidor DNS
para o domínio amazon.com
r Cliente consulta servidor DNS do domínio amazon.com para
obter endereço IP de www.amazon.com
2: Camada de Aplicação
67
DNS: Servidores raiz
r
r
procurado por servidor local que não consegue resolver o
nome
servidor raiz:
m procura servidor oficial se mapeamento desconhecido
m obtém tradução
m devolve mapeamento ao servidor local
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
k RIPE London (also Amsterdam,
g US DoD Vienna, VA
Frankfurt)
h ARL Aberdeen, MD
i
Autonomica, Stockholm
j Verisign, ( 11 locations)
(plus 3 other locations)
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA (and 17 other locations)
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
13 servidores de
nome raiz em todo o
mundo
2: Camada de Aplicação
68
DNS: Servidores raiz
Hostname
IP Addresses
Manager
a.root-servers.net
198.41.0.4, 2001:503:ba3e::2:30
VeriSign, Inc.
b.root-servers.net
192.228.79.201, 2001:500:84::b
University of Southern California (ISI)
c.root-servers.net
192.33.4.12, 2001:500:2::c
Cogent Communications
d.root-servers.net
199.7.91.13, 2001:500:2d::d
University of Maryland
e.root-servers.net
192.203.230.10, 2001:500:a8::e
NASA (Ames Research Center)
f.root-servers.net
192.5.5.241, 2001:500:2f::f
Internet Systems Consortium, Inc.
g.root-servers.net
192.112.36.4
US Department of Defense (NIC)
h.root-servers.net
198.97.190.53, 2001:500:1::53
US Army (Research Lab)
i.root-servers.net
192.36.148.17, 2001:7fe::53
Netnod
j.root-servers.net
192.58.128.30, 2001:503:c27::2:30
VeriSign, Inc.
k.root-servers.net
193.0.14.129, 2001:7fd::1
RIPE NCC
l.root-servers.net
199.7.83.42, 2001:500:9f::42
ICANN
m.root-servers.net
202.12.27.33, 2001:dc3::35
WIDE Project
2: Camada de Aplicação
69
Servidores TLD e Oficiais
r
Servidores de nomes de Domínio de Alto Nível (TLD):
m
m
m
m
r
servidores DNS responsáveis por domínios com, org, net, edu,
etc, e todos os domínios de países como br, uk, fr, ca, jp.
Domínios genéricos: book, globo, rio
Lista completa em: https://www.iana.org/domains/root/db
NIC.br (Registro .br) para domínio .br (https://registro.br/)
Servidores de nomes com autoridade:
m
m
servidores DNS das organizações, provendo mapeamentos
oficiais entre nomes de hospedeiros e endereços IP para os
servidores da organização (e.x., Web e correio).
Podem ser mantidos pelas organizações ou pelo provedor de
acesso
2: Camada de Aplicação
70
21/09/2018
2: Camada de Aplicação
71
21/09/2018
2: Camada de Aplicação
72
Servidor DNS Local
Não pertence necessariamente à hierarquia
r Cada ISP (ISP residencial, companhia,
universidade) possui um.
r
m
r
Também chamada do “servidor de nomes default”
Quanto um hospedeiro faz uma consulta DNS, a
mesma é enviada para o seu servidor DNS local
m
m
Possui uma cache local com pares de tradução
nome/endereço recentes (mas podem estar
desatualizados!)
Atua como um intermediário, enviando consultas para a
hierarquia.
2: Camada de Aplicação
73
Exemplo de resolução
de nome pelo DNS
r
servidor raiz
2
Hospedeiro em
cis.poly.edu quer
endereço IP para
gaia.cs.umass.edu
consulta interativa:
r servidor consultado
responde com o nome
de um servidor de
contato
r “Não conheço este
nome, mas pergunte
para esse servidor”
3
4
servidor TLD
5
servidor local
dns.poly.edu
1
8
7
6
servidor com autoridade
dns.cs.umass.edu
solicitante
cis.poly.edu
gaia.cs.umass.edu
2: Camada de Aplicação
74
Exemplo de resolução
de nome pelo DNS servidor DNS raiz
2
consulta recursiva:
r
r
3
transfere a
7
responsabilidade de
resolução do nome
para o servidor de
nomes contatado
servidor DNS local
carga pesada?
dns.poly.edu
1
solicitante
6
servidor TLD
5
4
8
servidor DNS com autoridade
dns.cs.umass.edu
cis.poly.edu
gaia.cs.umass.edu
2: Camada de Aplicação
75
DNS: uso de cache, atualização de dados
uma vez que um servidor qualquer aprende um
mapeamento, ele o coloca numa cache local
m entradas na cache são sujeitas a temporização
(desaparecem) depois de um certo tempo
(TTL)
r Entradas na cache podem estar desatualizadas
(tradução nome/endereço do tipo melhor
esforço!)
r
m
r
Se o endereço IP de um nome de host for alterado,
pode não ser conhecido em toda a Internet até que
todos os TTLs expirem
mecanismos de atualização/notificação propostos
na RFC 2136
2: Camada de Aplicação
76
Registros DNS
DNS: BD distribuído contendo registros de recursos (RR)
formato RR: (nome, valor, tipo, ttl)
r
Tipo=A
m
nome é nome de hospedeiro
valor é o seu endereço IPv4
m
Tipo=AAAA para IPv6
m
r
r
m
m
Tipo=NS
m
m
nome é domínio (p.ex.
foo.com.br)
valor é endereço IP de
servidor oficial de nomes
para este domínio
Tipo=CNAME
m
r
nome é nome alternativo
(alias) para algum nome
“canônico” (verdadeiro)
www.ibm.com é na verdade
servereast.backup2.ibm.com
valor é o nome canônico
Tipo=MX
m
valor é nome do servidor de
correio associado ao nome
2: Camada de Aplicação
77
DNS: protocolo e mensagens
protocolo DNS: mensagens de pedido e resposta,
ambas com o mesmo formato de mensagem
cabeçalho de msg
r
r
identificação: ID de 16 bit para
pedido, resposta ao pedido usa
mesmo ID
flags:
m pedido ou resposta
m recursão desejada
m recursão permitida
m resposta é oficial
2: Camada de Aplicação
78
DNS: protocolo e mensagens
2: Camada de Aplicação
79
Inserindo registros no DNS
Exemplo: acabou de criar a empresa “Network
Utopia”
r Registra o nome netutopia.com.br em uma entidade
registradora (e.x., Registro.br)
r
m
m
Tem de prover para a registradora os nomes e endereços IP
dos servidores DNS oficiais (primário e secundário)
Registradora insere dois RRs no servidor TLD .br:
(netutopia.com.br, dns1.netutopia.com.br, NS)
(dns1.netutopia.com.br, 212.212.212.1, A)
r
Põe no servidor oficial um registro do tipo A para
www.netutopia.com.br e um registro do tipo MX para
netutopia.com.br
2: Camada de Aplicação
80
Ataques ao DNS
Ataques DDoS
r Bombardeia os servidores
raiz com tráfego
m
m
m
r
Até o momento não
tiveram sucesso
Filtragem do tráfego
Servidores DNS locais
cacheiam os IPs dos
servidores TLD,
permitindo que os
servidores raízes não
sejam consultados
Bombardeio aos servidores
TLD
m
Potencialmente mais
perigoso
Ataques de redirecionamento
r Pessoa no meio
m
r
Intercepta as consultas
Envenenamento do DNS
m
Envia respostas falsas
para o servidor DNS que
as coloca em cache
Exploração do DNS para
DDoS
r Envia consultas com
endereço origem
falsificado: IP alvo
r Requer amplificação
2: Camada de Aplicação
81
Capítulo 2: Roteiro
2.1 Princípios de
aplicações de rede
r 2.2 A Web e o HTTP
r 2.3 Correio Eletrônico
na Internet
r 2.4 DNS: o serviço de
diretório da Internet
r
2.5 Aplicações P2P
r 2.6 Fluxos (streams) de
vídeo e Redes de
Distribuição de
Conteúdo (CDNs)
r 2.7 Programação de
sockets com UDP e TCP
r
2: Camada de Aplicação
82
Arquitetura P2P pura
r
sem servidor sempre ligado
r
r
sistemas finais arbitrários se
comunicam diretamente
pares estão conectados de
forma intermitente e mudam
seus endereços IP
r
Exemplos:
m
m
m
par-par
Distribuição de arquivos
(BitTorrent)
Streaming (KanKan)
VoIP (Skype)
2: Camada de Aplicação
83
Distribuição de Arquivo: C/S x P2P
Pergunta: Quanto tempo leva para distribuir um arquivo
de um servidor para N pares?
m
Capacidade de upload/download de um par é um recurso
limitado
Servidor
Arquivo,
tamanho F
us
uN
dN
u1 d1
u2
us: banda de upload
do servidor
d2
Rede (com
banda abundante)
ui: banda de upload
do par i
di: banda de
download do par i
2: Camada de Aplicação
84
Tempo de distribuição do arquivo: C/S
r
transmissão do servidor: deve enviar
sequencialmente N cópias do
arquivo:
m
m
r
Tempo para enviar uma cópia = F/us
Tempo para enviar N cópias = NF/us
F
us
di
rede
cliente: cada cliente deve fazer o
download de uma cópia do arquivo
m
m
ui
dmin = taxa mínima de download
Tempo de download para usuário com
menor taxa: F/dmin
Tempo para distribuir F
para N clientes usando
abordagem cliente/servidor
Dcs ≥ max { NF/us, F/dmin }
cresce linearmente com N
2: Camada de Aplicação
85
Tempo de distribuição do arquivo: P2P
r
transmissão do servidor: deve
enviar pelo menos uma cópia:
m
r
cliente: cada cliente deve
baixar uma cópia do arquivo
m
r
tempo para enviar uma cópia: F/us
F
us
di
network
Tempo de download para usuário
com menor taxa: F/dmin
ui
clientes: no total devem baixar NF bits
m
Taxa máxima de upload : us +
tempo para distribuir
F para N clientes
usando abordagem P2P
Su
i
DP2P > max{F/us,,F/dmin,,NF/(us + Sui)}
cresce linearmente com N …
… assim como este, cada par traz capacidade de serviço
2: Camada de Aplicação
86
Cliente-servidor x P2P: Exemplo
Taxa de upload do cliente= u, F/u = 1 hora, us = 10u, dmin ≥ us
Minimum Distribution Time
3.5
P2P
Client-Server
3
2.5
2
1.5
1
0.5
0
0
5
10
15
20
25
30
35
N
2: Camada de Aplicação
87
Distribuição de arquivo P2P:
BitTorrent
r arquivos divididos em blocos de 256kb
r Pares numa torrente enviam/recebem blocos do arquivo
tracker: registra pares
participantes de uma
torrente
torrente: grupo de
pares trocando
blocos de um arquivo
Alice chega…
… obtém lista de
parceiros do tracker
… e começa a trocar blocos
de arquivos com os
parceiros na torrente
2: Camada de Aplicação
88
Distribuição de arquivo P2P:
BitTorrent
r
par que se une à torrente:
m não tem nenhum bloco, mas irá
acumulá-los com o tempo
m registra com o tracker para
obter lista dos pares, conecta a
um subconjunto de pares
(“vizinhos”)
r
enquanto faz o download, par carrega blocos para outros pares
par pode mudar os parceiros com os quais troca os blocos
pares podem entrar e sair
quando o par obtiver todo o arquivo, ele pode (egoisticamente)
sair ou permanecer (altruisticamente) na torrente
r
r
r
2: Camada de Aplicação
89
BitTorrent: pedindo, enviando blocos de
arquivos
obtendo blocos:
r num determinado instante,
pares distintos possuem
diferentes subconjuntos de
blocos do arquivo
r periodicamente, um par
(Alice) pede a cada vizinho
a lista de blocos que eles
possuem
r Alice envia pedidos para os
pedaços que ainda não tem
m
Primeiro os mais raros
Enviando blocos: toma lá, dá cá!
r Alice envia blocos para os
quatro vizinhos que estejam
lhe enviando blocos na taxa
mais elevada
m
m
r
outros pares foram sufocados por
Alice
Reavalia os 4 mais a cada 10 segs
a cada 30 segs: seleciona
aleatoriamente outro par,
começa a enviar blocos
m
m
“optimistically unchoked”
o par recém escolhido pode se
unir aos 4 mais
2: Camada de Aplicação
90
BitTorrent: toma lá, dá cá!
(1) Alice “optimistically unchokes” Bob
(2) Alice se torna um dos quatro melhores provedores de Bob;
Bob age da mesma forma
(3) Bob se torna um dos quatro melhores provedores de Alice
Com uma taxa de upload mais
alta, pode encontrar melhores
parceiros de troca e obter o
arquivo mais rapidamente!
2: Camada de Aplicação
91
Estudo de caso P2P: Skype
Skype clients (SC)
r
r
r
r
inerentemente P2P:
comunicação entre pares
de usuários.
protocolo proprietário da
camada de aplicação
(inferido através de
engenharia reversa)
overlay hierárquico com
SNs
Índice mapeia nomes dos
usuários a endereços IP;
distribuído através dos
SNs
Skype
login server
Supernode
(SN)
2: Camada de Aplicação
92
Pares como intermediários
(relays)
r
Problema quando tanto
Alice como Bob estão
atrás de “NATs”.
m
r
O NAT impede que um
par externo inicie uma
chamada com um par
interno
Solução:
m
m
m
Intermediário é escolhido,
usando os SNs de Alice e de
Bob.
Cada par inicia sessão com o
intermediário
Pares podem se comunicar
através de NATs através do
intermediário
2: Camada de Aplicação
93
Capítulo 2: Roteiro
2.1 Princípios de
aplicações de rede
r 2.2 A Web e o HTTP
r 2.3 Correio Eletrônico
na Internet
r 2.4 DNS: o serviço de
diretório da Internet
r
2.5 Aplicações P2P
r 2.6 Fluxos (streams) de
vídeo e Redes de
Distribuição de
Conteúdo (CDNs)
r 2.7 Programação de
sockets com UDP e TCP
r
2: Camada de Aplicação
94
Streaming de vídeo e CDNs: contexto
§ Tráfego de vídeo: maior consumidor de largura de
banda da Internet
• Netflix, YouTube: 37%, 16% do tráfego
downstream residencial dos ISPs
• ~1B usuários do YouTube, ~75M usuários do
Netflix
§ desafio: escala – como alcançar ~1B
usuários?
• um único mega-vídeo server não daria conta (por
quê?)
§ desafio: heterogeneidade
§ usuários diferentes têm diferentes características
(ex.: cabeado x móvel; boa x ruim largura de
banda)
§ solução: infraestrutura distribuída de
camada de aplicação
2: Camada de Aplicação 95
Multimídia: vídeo
vídeo: sequência de imagens
apresentadas a uma taxa
constante
m e.g., 24 imagens/seg
r Imagem digital : matriz de pixels
m cada pixel representado por
bits
r codificação: usa redundância
dentro e entre imagens para
diminuir # bits usados para
codificar a imagem
m espacial (dentro da imagem)
m temporal (de uma imagem
para a próxima)
r
exemplo de codificação
espacial: ao invés de enviar N
valores com a mesma cor (roxo),
envia apenas dois valores: valor
da cor (roxo) e número (N) de
valores repetidos (N)
……………………..
……………….…….
quadro i
exemplo de codificação
temporal: ao invés de
enviar o quadro completo
i+1, envia apenas as
diferenças do quadro i
quadro i+1
2: Camada de Aplicação 96
Multimídia: vídeo
§ CBR (constant bit rate):
codificação de vídeo a taxa
constante
§ VBR (variable bit rate): taxa de
codificação de video muda
com a
necessidade/redundância
espacial ou temporal.
§ exemplos:
• MPEG 1 (CD-ROM) 1,5
Mbps
• MPEG2 (DVD) 3-6 Mbps
• MPEG4 (frequentemente
usado na Internet, < 1
Mbps)
exemplo de codificação
espacial: ao invés de enviar N
valores com a mesma cor (roxo),
envia apenas dois valores: valor
da cor (roxo) e número (N) de
valores repetidos (N)
……………………..
……………….…….
quadro i
exemplo de codificação
temporal: ao invés de
enviar o quadro completo
i+1, envia apenas as
diferenças do quadro i
quadro i+1
2: Camada de Aplicação 97
Streaming de vídeo armazenado:
cenário simples:
Internet
servidor de vídeo
(vídeo armazenado)
cliente
2: Camada de Aplicação 98
Streaming multimídia: DASH
r DASH: Dynamic, Adaptive Streaming over HTTP
r servidor:
m divide o arquivo de vídeo em diversos pedaços (chunks)
m cada pedaço é armazenado codificado em diferentes taxas
m arquivo de manifesto: provê URLs para os diferentes
pedaços
r cliente:
m mede periodicamente a banda entre servidor e cliente
m consulta manifesto, solicita um pedaço por vez
• escolhe a taxa máxima suportada pela largura de banda atual
• pode escolher diferentes taxas de codificação em instantes
diferentes (dependendo a banda disponível no momento)
2: Camada de Aplicação 99
Streaming multimídia: DASH
r DASH: Dynamic, Adaptive Streaming over HTTP
r “inteligência” no cliente: o cliente determina
m quando solicitar um pedido (de modo a não haver nem
esvaziamento nem estouro do buffer)
m que taxa de codificação solicitar (maior qualidade
quando houver mais banda disponível)
m de onde solicitar o pedaço (pode solicitar do servidor
URL que estiver mais “próximo” do cliente ou que
tenha a maior banda disponível)
2: Camada de Aplicação 100
Redes de Distribuição de Conteúdo (CDNs)
r desafio: como enviar conteúdo (selecionado de
milhões de vídeos) para centenas de milhares de
usuários simultâneos?
r opção 1: grande “mega-servidor” único
m ponto único de falha
m ponto de congestionamento de rede
m caminho longo distante dos clientes
m múltiplas cópias do vídeo enviadas pelo link de saída
….simplesmente: esta solução não escala
2: Camada de Aplicação 101
Redes de Distribuição de Conteúdo (CDNs)
r desafio: como enviar conteúdo (selecionado de
milhões de vídeos) para centenas de milhares de
usuários simultâneos?
r opção 2: armazenar/disponibilizar múltiplas cópias do
vídeo em sites distribuídos geograficamente (CDN)
m
ir fundo: colocar servidores CDN em muitas redes de
acesso
• próximo aos usuários
• usado pela Akamai, 1700 localidades
m
levar para casa: menor número (10’s) de grandes clusters
em POPs próximos (mas não dentro) das redes de acesso
• usado pela Limelight
2: Camada de Aplicação 102
Redes de Distribuição de Conteúdos (CDNs)
§ CDN: armazena cópias do conteúdo em nós
• e.g. Netflix armazena cópias de MadMen
§ assinante solicita conteúdo da CDN
• é direcionado para cópia mais próxima, recupera o conteúdo
• pode escolher outra cópia, se o caminho estiver congestionado
…
…
…
…
manifest file
where’s Madmen?
…
2: Camada de Aplicação 103
…
Redes de Distribuição de Conteúdos (CDNs)
“por cima de tudo”
…
…
comunicação Internet host-host como um serviço
m
…
m
de qual nó CDN se deve recuperar o conteúdo?
comportamento do usuário na presença de congestionamento?
que conteúdo colocar em cada nó CDN?
…
m
…
…
desafios: convivendo com uma Internet congestionada
mais .. no capítulo 7
104
acesso a conteúdo CDN: detalhes
Bob (cliente) solicita o vídeo http://netcinema.com/6Y7B23V
§ vídeo armazenado na CDN em http://KingCDN.com/NetC6y&B23V
1. Bob recebe URL para o vídeo
http://netcinema.com/6Y7B23V
da página web netcinema.com
2
1
2. resolve http://netcinema.com/6Y7B23V
através do DNS local de Bob
5
6. solicita o vídeo do
servidor KINGCDN,
que é enviado via HTTP
netcinema.com
3. netcinema’s DNS retorna a URL
http://KingCDN.com/NetC6y&B23V
3
DNS com autoridade
de netcinema
KingCDN.com
servidor
DNS local
de Bob
4
4&5. Resolve
http://KingCDN.com/NetC6y&B23
via o DNS com autoridade de KingCDN,
que retorna o endereço IP do servidor
KingCDN que contém o vídeo
DNS com autoridade
de KingCDN
2: Camada de Aplicação 105
Caso de estudo: Netflix
nuvem da
Amazon
servidores de
cadastro e
contabilização da
Netflix
2. Bob seleciona
vídeo na Netflix 2
carrega cópias das
múltiplas versões do
vídeo para servidores
CDN
3. obtém o arquivo
de Manifesto para
o vídeo solicitado
3
Servidor
CDN
Servidor
CDN
1
1. Bob gerencia a
sua conta na Netflix
Servidor
CDN
4. recebe o stream
via DASH
2: Camada de Aplicação 106
Capítulo 2: Roteiro
2.1 Princípios de
aplicações de rede
r 2.2 A Web e o HTTP
r 2.3 Correio Eletrônico
na Internet
r 2.4 DNS: o serviço de
diretório da Internet
r
2.5 Aplicações P2P
r 2.6 Fluxos (streams) de
vídeo e Redes de
Distribuição de
Conteúdo (CDNs)
r 2.7 Programação de
sockets com UDP e TCP
r
2: Camada de Aplicação
107
Programação com sockets
meta: aprender a construir aplicações cliente/servidor
que se comunicam usando sockets
socket: porta entre o processo de aplicação e o
protocolo de transporte fim-a-fim
aplicação
processo
socket
aplicação
processo
transporte
transporte
rede
rede
enlace
física
Internet
enlace
Controlado pelo
desenvolvedor
da aplicação
controlado
pelo SO
física
2: Camada de Aplicação
108
Programação com sockets
Dois tipos de sockets para dois serviços de transporte:
r UDP: datagrama não confiável
r TCP: confiável, orientado a fluxos de bytes
Aplicação Exemplo:
1.
2.
3.
4.
o cliente lê uma linha de caracteres (dados) do seu
teclado e envia os dados para o servidor
o servidor recebe os dados e converte os caracteres
para maiúsculas
o servidor envia os dados modificados para o cliente
o cliente recebe os dados modificados e apresenta a
linha na sua tela
2: Camada de Aplicação
109
Programação com sockets usando
UDP
UDP: não tem “conexão” entre cliente e servidor
r não tem saudação (“handshaking”) antes de enviar os
dados
r remetente coloca explicitamente endereço IP e porta
do destino
r servidor deve extrair endereço IP e número da porta
do remetente do datagrama recebido
UDP: dados transmitidos podem ser recebidos fora de
ordem, ou perdidos
Ponto de vista da aplicação
r
UDP provê transferência não confiável de grupos de
bytes (“datagramas”) entre cliente e servidor
2: Camada de Aplicação
110
Interações cliente/servidor usando o UDP
Servidor (executa em nomeHosp)
cria socket, porta=x:
socketServidor =
socket(AF_INET,SOCK_DGRAM)
lê pedido do
socketServidor
escreve resposta
ao socketServidor
especificando endereço
IP, número de porta
do cliente
Cliente
cria socket,
socketCliente =
socket(AF_INET,SOCK_DGRAM)
cria datagrama com IP do servidor e
porta=x,envia o datagrama
Através do socketCliente
lê datagrama do
socketCliente
fecha
socketCliente
2: Camada de Aplicação
111
Exemplo: cliente Python (UDP)
inclui a biblioteca de sockets
do Python
cria socket UDP para
servidor
obtém entrada do teclado do
usuário
acrescenta o nome do
servidor e número da porta à
mensagem; envia pelo socket
lê caracteres de resposta
do socket e converte em
string
imprime string recebido e
fecha socket
from socket import *
serverName = ‘hostname’
serverPort = 12000
clientSocket = socket(socket.AF_INET,
socket.SOCK_DGRAM)
message = raw_input(’Input lowercase sentence:’)
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress =
clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()
2: Camada de Aplicação
112
Exemplo: servidor UDP
cria socket UDP
liga socket à porta local
número 12000
loop infinito
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print “The server is ready to receive”
while 1:
lê mensagem do socket
UDP, obtendo endereço do
cliente (IP e porta do cliente)
retorna string em
maiúsculas para este cliente
message, clientAddress = serverSocket.recvfrom(2048)
modifiedMessage = message.upper()
serverSocket.sendto(modifiedMessage, clientAddress)
2: Camada de Aplicação
113
Programação com sockets usando TCP
Cliente deve contactar servidor r
r processo servidor deve antes
estar em execução
r servidor deve antes ter
criado socket (porta) que
aguarda contato do cliente
Cliente contacta servidor para:
r criar socket TCP local ao
cliente, especificando
endereço IP, número de porta
do processo servidor
r quando cliente cria socket:
TCP cliente cria conexão com
TCP do servidor
Quando contatado pelo cliente, o
TCP do servidor cria um novo
socket para que o processo
servidor possa se comunicar com o
cliente
m permite que o servidor
converse com múltiplos clientes
m Endereço IP e porta origem
são usados para distinguir os
clientes (mais no cap. 3)
ponto de vista da aplicação
TCP provê transferência
confiável, ordenada de bytes
(“tubo”) entre cliente e servidor
2: Camada de Aplicação
114
Interações cliente/servidor usando o TCP
Servidor (executando em nomeHosp)
Cliente
cria socket,
porta=x, para
receber pedido:
socketServidor = socket ()
aguarda chegada de
pedido de conexão
setup
socketConexão =
socketServidor.accept()
lê pedido de
socketConexão
escreve resposta
para socketConexão
fecha
socketConexão
TCP
da conexão
cria socket,
abre conexão a nomeHosp, porta=x
socketCliente = socket()
Envia pedido usando
socketCliente
lê resposta de
socketCliente
fecha
socketCliente
2: Camada de Aplicação
115
Exemplo: cliente TCP
inclui a biblioteca de sockets
do Python
cria socket TCP socket
para o servidor, porta
remota 12000
não há necessidade de
especificar nem o nome
do servidor nem a porta
from socket import *
serverName = ’servername’
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(‘Input lowercase sentence:’)
clientSocket.send(sentence.encode())
modifiedSentence = clientSocket.recv(1024)
print (‘From Server:’, modifiedSentence.decode())
clientSocket.close()
2: Camada de Aplicação
116
Exemplo: servidor TCP
cria socket TCP de
recepção
servidor inicia a escuta
por solicitações TCP
loop infinito
servidor espera no accept()
por solicitações, um novo
socket é criado no retorno
lê bytes do socket (mas
não precisa ler endereço
como no UDP)
fecha conexão para este
cliente (mas não o socket
de recepção)
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((‘’,serverPort))
serverSocket.listen(1)
print ‘The server is ready to receive’
while True:
connectionSocket, addr = serverSocket.accept()
sentence = connectionSocket.recv(1024).decode()
capitalizedSentence = sentence.upper()
connectionSocket.send(capitalizedSentence.
encode())
connectionSocket.close()
2: Camada de Aplicação
117
Capítulo 2: Resumo
Nosso estudo sobre aplicações de rede está agora
completo!
r
Arquiteturas de aplicações
m
m
r
Protocolos específicos:
m
HTTP
m SMTP, POP, IMAP
m DNS
m P2P: BitTorrent
fluxos de vídeo, CDNs
cliente-servidor
P2P
m
Requisitos de serviço das
aplicações:
m
r
r
confiabilidade, banda, atraso
Modelos de serviço de
transporte da Internet
m
m
orientado à conexão,
confiável: TCP
não confiável, datagramas:
UDP
r
programação de
sockets: sockets UDP e
TCP
2: Camada de Aplicação
118
Capítulo 2: Resumo
Mais importante: aprendemos sobre protocolos
r
troca típica de mensagens
pedido/resposta
m
m
r
cliente solicita info ou serviço
servidor responde com dados,
código de status
formatos de mensagens:
m
m
cabeçalhos: campos com info
sobre dados (metadados)
dados: info (carga) sendo
comunicada
Temas importantes:
r
r
r
r
r
msgs de controle vs. dados
m na banda, fora da banda
centralizado vs.
descentralizado
s/ estado vs. c/ estado
transferência de msgs
confiável vs. não confiável
“complexidade na borda da
rede”
2: Camada de Aplicação
119
Download