Buscar

Princípios de Aplicações de Rede

Prévia do material em texto

Aulas do livro disponíveis em:
http://www-net.cs.umass.edu/kurose-ross-ppt-7e/
Camada de 
aplicação
2.1 Principios das aplicações 
de rede
2.2 Web e HTTP
2.3 Mail eletronico
• SMTP, POP3, IMAP
2.4 DNS
2.5 Aplicações P2P
2.6 Streaming de video e 
content distribution 
networks
2.7 Programação com sockets
usando UDP e TCP
Resumo da camada de aplicação
Camada de aplicação
Objetivos:
• conceitos, aspectos de 
implementação dos 
protocolos de 
aplicações de rede
o Modelos de serviço de camada 
de transporte
o Paradigma cliente-servidor
o Paradigma peer-to-peer
• Conhecer os protocolos 
mais relevantes da 
camada de aplicação
o HTTP
o FTP
o SMTP / POP3 / IMAP
o DNS
• Criar aplicações de rede
o socket API
Algumas aplicações de rede
• e-mail
• web
• text messaging
• remote login
• P2P file sharing
• multi-user network games
• streaming stored video 
(YouTube, Netflix) 
• voice over IP (e.g., Skype)
• real-time video 
conferencing
• social networking
• search
• …
• …
Criando uma aplicação de rede
Escrever um programa que:
• rode em (diferentes) sistemas finais
• se comunique através da rede
• e.g., software de servidor web se 
comunica com um software de browser
Não é necessário escrever software para os
dispositivos do core (centro) da rede
• dispositivos do core da rede não rodam
aplicações de usuário
• aplicações nos sistemas finais permitem
desenvolvimento rápido das aplicações
application
transport
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
Arquiteturas
Estruturas possíveis de aplicações:
• Arquitetura Cliente - servidor
• Arquitetura Peer to Peer
Arquitetura cliente-servidor
servidor: 
• equipamento sempre disponível
• endereço IP permanente
• escalável com data centers
clientes:
• comunica com servidor
• pode estar conectado
intermitentemente
• pode ter um endereço IP dinâmico
• não se comunica diretamente com os
outros clientes
cliente/servidor
Arquitetura P2P
• sem servidor sempre disponível
• sistemas finais se comunicam 
diretamente
• pares solicitam serviço de outros 
pares, fornecendo serviço em troca 
para outros pares
o Auto-escalabilidade - novos pares trazem 
nova capacidade de serviço, bem como 
novas demandas de serviço
• pares são intermitentemente 
conectados e trocam de endereço IP
o gerenciamento complexo
peer-to-peer 
(par a par)
Comunicação de processos
processo: programa rodando
em um host (sistema final)
• dentro do mesmo host, 
dois processos se 
comunicam usando a
comunicação entre 
processos (definida pelo
SO)
• processos em diferentes
hosts se comunicam
trocando mensagens
processo cliente: processo que inicia 
comunicação
processo servidor: processo que 
aguarda para ser contactado
clientes, servidores
Processos de endereçamento
• Para receber mensagens, o 
processo deve ter identificador
• Dispositivo host tem endereço IP 
exclusivo de 32 bits
• Q: o endereço IP do host no qual 
o processo é executado é 
suficiente para identificar o 
processo?
• R: Não, muitos processos podem 
estar em execução no mesmo 
host
• Identificador inclui o endereço IP e 
os números de porta associados 
ao processo no host.
• Exemplo números de porta:
o HTTP server: 80
o mail server: 25
• para enviar uma mensagem HTTP 
para o servidor web 
gaia.cs.umass.edu:
o IP address: 128.119.245.12
o port number: 80
Sockets
• Processo envia/recebe mensagens para/do seu socket
• socket análogo/equivalente a porta
o envio do processo empurra a mensagem para fora da porta
o processo de envio depende da infra-estrutura de transporte do outro lado da 
porta para entregar a mensagem para o socket no processo de recepção
Internet
Controlado
pelo SO
Controlado pela 
aplicação do 
desenvolvedor
transport
application
physical
link
network
process
transport
application
physical
link
network
process
socket
Protocolo de camada de aplicação define:
• Tipo de mensagens trocadas:
o e.g., requisição, resposta 
• Sintaxe da mensagem:
o Que campo e como esses campos são 
delineados
• Semantica da mensagem:
o significado das informações nos campos
• Regras para quando e como os 
processos enviam e respondem 
as mensagens
Protocolos abertos:
• Definidos em RFCs
• Permite interoperabilidade
• e.g., HTTP, SMTP
Protocolos proprietários:
• e.g., Skype
Qual serviço de transporte é necessário para um aplicativo?
Integridade dos dados
§ Alguns aplicativos (e.g, transferência de 
arquivos, transações na web) exigem
100% de transferência de dados 
confiável
§ Outros aplicativos (por exemplo, áudio) 
podem tolerar alguma perda
temporizador
§ Alguns aplicativos (por exemplo, 
telefonia pela Internet, jogos
interativos) requerem um atraso
menor para serem "efetivos"
vazão (throughput)
§ Alguns aplicativos (por exemplo, 
multimídia) exigem uma quantidade
mínima de vazão para serem
"efetivos”
§ Outros aplicativos ("aplicativos
elásticos") fazem uso de qualquer
taxa de transferência que recebem
segurança
§ Criptografia, integridade de dados, ...
Requisitos do serviço de transporte: aplicativos comuns
aplicação
file transfer
e-mail
Web documents
real-time audio/video
stored audio/video
interactive games
text messaging
Perda de dados
no loss
no loss
no loss
loss-tolerant
loss-tolerant
loss-tolerant
no loss
vazão
elastic
elastic
elastic
audio: 5kbps-1Mbps
video:10kbps-5Mbps
same as above 
few kbps up
elastic
Sensível ao atraso
no
no
no
yes, 100’s msec
yes, few secs
yes, 100’s msec
yes and no
Serviços de protocolos de transporte na Internet
ServiçoTCP :
§ Transporte confiável entre o processo de 
envio e recebimento
§ Controle de fluxo: o remetente não irá
sobrecarregar o receptor
§ Controle de congestionamento : segura
remetente quando rede sobrecarregada
§ Não fornece: tempo, garantia de 
rendimento mínimo, segurança
§ Orientado à conexão: configuração
necessária entre processos cliente e 
servidor
Serviço UDP :
§ Transferência de dados não confiável
entre o processo de envio e recebimento
§ Não fornece: confiabilidade, controle de 
fluxo, controle de congestionamento, 
cronometragem, garantia de vazão, 
segurança ou configuração de conexão
Q: Pq ambos? Pq existe UDP?
Aplicações da Internet: aplicação, protocolos de transporte
application
e-mail
remote terminal access
Web 
file transfer
streaming multimedia
Internet telephony
application
layer protocol
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
HTTP (e.g., YouTube), 
RTP [RFC 1889]
SIP, RTP, proprietary
(e.g., Skype)
underlying
transport protocol
TCP
TCP
TCP
TCP
TCP or UDP
TCP or UDP
Protegendo TCP
TCP & UDP 
§ Sem criptografia
§ Senhas enviadas via 
socket atravessam a 
Internet tem texto aberto
SSL 
§ Fornece conexão TCP 
criptografada
§ integridade de dados
§ Autenticação ponto a 
ponto
SSL está na camada de aplicação
§ Aplicativos usam bibliotecas SSL, 
que "falam" com TCP
§ API socket SSL
§ Senhas enviadas via socket atravessam
a Internet criptografadas
§ Isso será visto na disciplina de 
Segurança de Sistemas e Redes (trilha
de Redes), capitulo 8 do livro Kurose.
HTTPS é uma implementação do protocolo HTTP sobre uma camada adicional de 
segurança que utiliza o protocolo SSL/TLS.
Web e HTTP
lembrando…
• web page consiste em objetos
• objeto pode ser um arquivo HTML, uma imagem JPEG, 
applet Java, um arquivo de audio,…
• uma página web consiste de um arquivo base HTML que 
inclui vários objetos referenciados
• cada objeto object é endereçado por uma URL, e.g.,
www.someschool.edu/someDept/pic.gif
nome host (máquina) nome path (caminho)
HTTP
HTTP: hypertext transfer protocol
§ Protocolo camada de aplicação
Web
§ Modelo cliente/servidor
• Cliente: navegador que solicita, 
recebe, (usando protocolo
HTTP) e "exibe" objetos da 
Web
• Servidor: O servidorWeb envia
(usando o protocolo HTTP) 
objetos em resposta a 
solicitações
PC running
Firefox browser
server 
running
Apache Web
server
iPhone running
Safari browserHTTP requestHTTP response
HTTP request
HTTP response
HTTP
UsaTCP:
§ Cliente inicia uma conexão TCP (cria
socket) com o servidor, porta 80
§ servidor aceita conexão TCP do 
cliente
§ Mensagens HTTP (mensagens do 
protocolo de camada de aplicação) 
troca entre browser (cliente HTTP) 
e servidor Web (servidor HTTP)
§ Conexão TCP encerrada
HTTP é “stateless”
§ Servidor não mantém
nenhuma informação sobre
pedidos de clientes
anteriores
Protocolos que mantêm o "estado" 
são complexos! Passado (estado) 
deve ser mantido
Se o servidor / cliente falhar, suas visões de 
"estado" podem ser inconsistentes
ainda
Conexões HTTP
HTTP não persistente
• Ao menos um objeto enviado
sobre a conexão TCP
o Conexão é então encerrada
• Download de múltiplos objetos
necessitam de múltiplas
conexões
HTTP persistente
• Múltiplos objetos podem ser 
enviados sobre uma simples 
conexão TCP entre cliente e 
servidor
HTTP não persistente
Suponha que o usuário entre com a URL:
1a. cliente HTTP inicia conexão TCP com 
servidor HTTP (processo) em 
www.someSchool.edu na porta 80
2. cliente HTTP envia mensagem de 
requisição HTTP (contendo URL) em 
um socket de conexão TCP. 
Mensagem indica que cliente quer 
objeto someDepartment/home.index
1b. servidor HTTP na máquina 
www.someSchool.edu aguarda por 
conexão TCP na porta 80, “aceita”
conexão, notificando cliente
3. servidor HTTP recebe mensagem 
requisição, constroi a mensagem de 
resposta contendo o objeto 
requisitado, e envia a mensagem dentro 
do seu socket
tempo
(contém texto, 
referência a
10 imagens jpeg)
www.someSchool.edu/someDepartment/home.index
HTTP não persistente
5. cliente HTTP recebe mensagem de 
resposta contendo arquivo html, 
mostra aquivo html. Analisando o 
arquivo html, encontra 10 objetos 
jpeg referenciados
6. Os passos1-5 são repetidos para 
cada um dos 10 objetos jpeg
4. servidor HTTP fecha conexão TCP. 
tempo
HTTP não persistente: tempo de resposta
RTT (definição): tempo para um pequeno
pacote “viajar” do cliente para o 
servidor e voltar (tempo de ida e 
volta)
Tempo de resposta HTTP:
• 1 RTT para iniciar uma conexão TCP
• 1 RTT para requisição HTTP e os
primeiros poucos bytes da resposta
HTTP para retorno
• Tempo de transmissão do arquivo
de resposta
• Tempo de resposta (total) HTTP não
persistente = 
2RTT+ tempo de transmissão do 
arquivo
time to 
transmit 
file
initiate TCP
connection
RTT
request
file
RTT
file
received
time time
RTT : Round Trip Time
HTTP persistente
Problemas HTTP não persistentes:
§ Requer 2 RTTs por objeto
§ Sobrecarga do sistema 
operacional para cada conexão 
TCP
§ Os navegadores geralmente 
abrem conexões TCP paralelas 
para buscar objetos 
referenciados
HTTP persistente:
§ O servidor deixa a conexão 
aberta após enviar a resposta
§ Mensagens HTTP subseqüentes 
entre o mesmo cliente / 
servidor enviado através de 
conexão aberta
§ Cliente envia solicitações assim 
que encontrar um objeto 
referenciado
§ Tão pouco quanto um RTT 
para todos os objetos 
referenciados
Mensagem de requisição HTTP
• Dois tipos de mensagens HTTP: requisição, resposta
• HTTP request message:
o ASCII (human-readable format)
request line
(GET, POST, 
HEAD commands)
header
lines
carriage return, 
line feed at start
of line indicates
end of header lines
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
carriage return character
line-feed character
* Check out the online interactive exercises for more examples: 
http://gaia.cs.umass.edu/kurose_ross/interactive/
Mensagem de requisição : formato
request
line
header
lines
body
method sp sp cr lfversionURL
cr lfvalueheader field name
cr lfvalueheader field name
~~ ~~
cr lf
entity body~~ ~~
Upload de entrada de formulário
POST method:
§ web page often includes 
form input
§ input is uploaded to 
server in entity body
URL method:
§ uses GET method
§ input is uploaded in URL 
field of request line:
www.somesite.com/animalsearch?monkeys&banana
Tipos de Métodos
HTTP/1.0:
• GET
• POST
• HEAD
o asks server to leave requested 
object out of response
HTTP/1.1:
• GET, POST, HEAD
• PUT
o uploads file in entity body to path 
specified in URL field
• DELETE
o deletes file specified in the URL 
field
Mensagem de resposta HTTP
status line
(protocol
status code
status phrase)
header
lines
data, e.g., 
requested
HTML file
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-8859-
1\r\n
\r\n
data data data data data ... 
* Check out the online interactive exercises for more examples: 
http://gaia.cs.umass.edu/kurose_ross/interactive/
Códigos de status de resposta HTTP
200 OK
o request succeeded, requested object later in this msg
301 Moved Permanently
o requested object moved, new location specified later in this msg (Location:)
400 Bad Request
o request msg not understood by server
404 Not Found
o requested document not found on this server
505 HTTP Version Not Supported
§ O código de status aparece na 1ª linha na mensagem de resposta do 
servidor para o cliente.
§ Alguns códigos de exemplo:
Tentando HTTP (lado do cliente) para si mesmo
1. Telnet para o seu servidor Web favorito:
Abre a conexão TCP na porta 80
(Porta do servidor HTTP padrão)
em gaia.cs.umass.edu
qualquer coisa digitada será enviada
para a porta 80 em gaia.cs.umass.edu
telnet gaia.cs.umass.edu 80
2. Digite uma solicitação GET HTTP:
GET /kurose_ross/interactive/index.php HTTP/1.1
Host: gaia.cs.umass.edu Digitando isso em (enter duas vezes), 
você envia solicitação GET 
para o servidor HTTP
3. Veja a mensagem de resposta enviada pelo servidor HTTP!
(Ou usar o Wireshark para analisar a solicitação / resposta HTTP capturada)
Estado do servidor do usuário: cookies
Muitos sites usam cookies
Quatro componentes:
1) linha do cabeçalho do cookie da 
mensagem de resposta HTTP
2) linha do cabeçalho do cookie na 
próxima mensagem de solicitação 
HTTP
3) arquivo cookie mantido no host do 
usuário, gerenciado pelo navegador 
do usuário
4) banco de dados back-end no site da 
Web
exemplo:
• Susan sempre acessa a Internet 
do PC
• Visita site específico de e-
commerce pela primeira vez
• Quando as solicitações HTTP 
iniciais chegam ao site, o site cria:
• ID único
• Entrada no banco de dados (backend)
para ID
Cookies: manter "estado"
client server
usual http response msg
usual http response msg
cookie file
Uma semana depois:
usual http request msg
cookie: 1678 cookie-
specific
action
access
ebay 8734 usual http request msg Amazon server
creates ID
1678 for user create
entry
usual http response 
set-cookie: 1678ebay 8734
amazon 1678
usual http request msg
cookie: 1678 cookie-
specific
action
access
ebay 8734
amazon 1678
backend
database
Cookies
Quais cookies podem ser 
usados para:
• autorização
• carrinhos de compras
• Recomendações
• Estado da sessão do usuário (e-
mail da Web)
cookies e privacidade:
§ Cookies permitem que os sites 
aprendam muito sobre você
§ Você pode fornecer nome e e-
mail para sites
a parte
Como manter "estado":
• extremidades: manter estado no 
remetente / receptor sobre várias 
transações
• Cookies: as mensagens HTTP carregam 
estado
Caches Web (servidor proxy)
• O usuário define o navegador: 
acessos via cache
• Navegador envia todas as 
requisições HTTP para cache
• Objeto no cache: cache retorna 
objeto
• Senão cache solicita o objeto do 
servidor de origem e, em seguida, 
retorna o objeto ao cliente
Objetivo: Satisfazer a solicitação do cliente sem envolvero servidor de origem
cliente
proxy
server
cliente
HTTP request
HTTP response
HTTP request HTTP request
Servidor 
de origem
Servidor 
de origem
HTTP response HTTP response
Mais sobre armazenamento em cache…
• Cache atua como cliente 
e servidor
o Servidor de origem para o cliente 
requisitante
o Cliente para servidor de origem
• Normalmente cache é 
instalado pelo ISP 
(universidade, empresa, 
ISP residencial)
Pq Cache na Web?
• Reduzir o tempo de resposta para 
a requisição do cliente
• Reduzir o tráfego no enlace de 
acesso de uma instituição
• Internet densa com caches: 
permite que “pequenos" 
provedores de conteúdo possam 
também fornecer conteúdo (bem 
como o compartilhamento de 
arquivos P2P)
GET conditional
• Objetivo: não enviar objeto se cache 
tiver uma versão atualizada em cache
o sem atraso de transmissão de objeto
o baixa utilização do enlace (link)
• cache: data específica da cópia em
cache na requisição HTTP
If-modified-since: <date>
• servidor: resposta não contém se a 
cópia em cache estiver atualizada: 
HTTP/1.0 304 Not Modified
HTTP request msg
If-modified-since: <date>
HTTP response
HTTP/1.0 
304 Not Modified
object 
not 
modified
before
<date>
HTTP request msg
If-modified-since: <date>
HTTP response
HTTP/1.0 200 OK
<data>
object 
modified
after 
<date>
cliente servidor
Exemplo de armazenamento em cache:
origin
servers
public
Internet
institutional
network
1 Gbps LAN
1.54 Mbps 
access link
premissas:
§ Tamanho médio do objeto: 100K bits
§ Taxa de requisição media dos browsers para os servidores
de origem:15/sec
§ Taxa média de dados: 1.50 Mbps
§ RTT do roteador institucional para qualquer servidor de 
origem: 2 sec
§ Taxa de acesso ao enlace: 1.54 Mbps
consequencias:
§ Utilização LAN: 15%
§ Utilização do enlace de acesso = 99%
§ Atraso total = atraso Internet + atraso de acesso + atraso
da rede local (LAN) = 2 sec + minutes + usecs
problema!
premissas:
§ Tamanho médio do objeto: 100K bits
§ Taxa de requisição media dos browsers para os
servidores de origem:15/sec
§ Taxa média de dados: 1.50 Mbps
§ RTT do roteador institucional para qualquer servidor
de origem: 2 sec
§ Taxa de acesso ao enlace: 1.54 Mbps
consequencias:
§ Utilização LAN: 15%
§ Utilização do enlace de acesso = 99%
§ Atraso total = atraso Internet + atraso de acesso + 
atraso da rede local (LAN) = 2 sec + minutes + 
usecs
Exemplo de armazenamento em cache: 
aumento do enlace de acesso
Servidores 
de origem
1.54 Mbps 
access link
154 Mbps
154 Mbps
msecs
Custo: aumento velocidade de acesso ao enlace (baixo custo!)
9.9%
public
Internet
institutional
network
1 Gbps LAN
institutional
network
1 Gbps LAN
Exemplo de cache: instalação de cache local
Sevidores 
de origem
1.54 Mbps 
access link
local web 
cache
premissas:
§ Tamanho médio do objeto: 100K bits
§ Taxa media de requisição dos browsers para servidores
de origem:15/sec
§ Taxa media de dados para : 1.50 Mbps
§ RTT dos roteadores institucionais para qualquer
servidor de origem: 2 sec
§ Taxa de acesso ao enlace: 1.54 Mbps
consequencias:
§ Utilização da LAN (rede local): 15%
§ Utilização do enlace de acesso=100%
§ Atraso total = atraso Internet + atraso de acesso + 
atraso LAN
= 2 sec + minutes + u secs
?
? Como calcular
utilização do enlace 
e o atraso?
Custo: cache web (barato!)
public
Internet
Exemplo de cache: instalando cache local
Calculando utilização do enlace de acesso, atraso com 
cache:
• Suponha taxa de acerto de cache seja de 0.4
o 40% requisições satisfeitas/resolvidas no cache, 
60% requisições na origem
Servidores 
de origem
1.54 Mbps 
access link
§ Utilização enlace de acesso: 
§ 60% das requisições usam enlace de acesso
§ Taxa de dados para navegadores sobre link de acesso
§ = 0.6*1.50 Mbps = 0.9 Mbps 
§ Utilização = 0.9/1.54 = .58
§ Atraso (delay) total
§ = 0.6 * (atraso dos servidores de origem) +0.4 * 
(atraso quando resolvido no cache)
§ = 0.6 (2.01) + 0.4 (~msecs) = ~ 1.2 secs
§ Menos que 154 Mbps enlace (e mais barato
também!)
public
Internet
institutional
network
1 Gbps LAN
local web 
cache

Continue navegando