5. Camada de Aplicação
● E-mail ●
Redes sociais
● Web ●
Voice over IP
● Mensagem instantânea ●
Vídeo conferência em
● Login remoto tempo real
● Compartilhamento de ●
E-commerce
arquivos P2P
● Jogos em rede
multiusuários
● Clipes de vídeo
armazenados em fluxo
contínuo
Fundamentos de Redes de Computadores 5/43
6. Criando uma aplicação de rede
Escreva programas que executem aplicação
transporte
− em (diferentes) sistemas finais rede
enlace
− se comuniquem pela rede física
− ex.:, software de servidor Web se comunica
com software de navegador Web
Não é preciso escrever software para
dispositivos do núcleo da rede
− dispositivos do núcleo da rede não
aplicação
executam aplicações do usuário transporte
rede
− as aplicações nos sistemas finais permitem enlace
física
rápido desenvolvimento e propagação application
transport
network
data link
physical
Fundamentos de Redes de Computadores 6/43
7. Arquiteturas de Aplicação
Cliente-servidor
●
−
Incluindo centros de dados/cloud computing
Peer-to-peer (P2P)
●
Híbrida de cliente-servidor e P2P
●
Fundamentos de Redes de Computadores 7/43
8. Arquitetura Cliente-Servidor
servidor:
− hospedeiro sempre ligado
− endereço IP permanente
− server farms por expansão
clientes:
− comunicam-se com o servidor
− podem estar conectados
intermitentemente cliente/servidor
− podem ter endereços IP
dinâmicos
− não se comunicam diretamente
entre si
Fundamentos de Redes de Computadores 8/43
9. Centro de Dados da Google
●
Custo estimado do centro de dados: $600M
●
Google gastou $2,4B em 2007 em novos
centros de dados
●
Cada centro de dados usa de 50 a 100
megawatts de potência
Fundamentos de Redes de Computadores 9/43
10. Arquitetura P2P Pura
●
Nenhum servidor sempre
ligado
●
Sistemas finais arbitrários
se comunicam diretamente
●
Pares são conectados
intermitentemente e
mudam endereços IP peer-peer
●
altamente escalável, mas
difícil de administrar
Fundamentos de Redes de Computadores 10/43
11. Híbrido de Cliente-Servidor e P2P
Skype
− aplicação P2P voice-over-IP P2P
− servidor centralizado: achando endereço da parte remota:
− conexão cliente-cliente: direta (não através de servidor)
Mensagem instantânea
− bate-papo entre dois usuários é P2P
− serviço centralizado: detecção/localização da presença do cliente
●usuário registra seu endereço IP com servidor central quando entra on-line
●usuário contacta servidor central para descobrir endereços IP dos parceiros
Fundamentos de Redes de Computadores 11/43
12. Processos se comunicando
●
Processo: programa rodando dentro de um
hospedeiro
●
No mesmo hospedeiro, dois processos se
comunicam usando a comunicação entre
processos (definida pelo SO).
●
Processos em hospedeiros diferentes se
comunicam trocando mensagens
processo cliente: processo que inicia a
comunicação
processo servidor: processo que
espera para ser contactado
Nota: aplicações com arquiteturas P2P têm
processos clientes & processos servidores
Fundamentos de Redes de Computadores 12/43
13. Sockets
hospedeiro hospedeiro
● Processo envia/recebe ou servidor ou servidor
mensagens de/para seu
socket controlado pelo
desenvolvedor
processo processo
● Socket semelhante à porta da aplicação
socket socket
● Processo enviando empurra TCP com TCP com
mensagem pela porta buffers, Internet
buffers,
variáveis variáveis
● Processo enviando conta
com infraestrutura de controlado
transporte no outro lado da pelo OS
porta, que leva a mensagem
ao socket no processo
receptor
Fundamentos de Redes de Computadores 13/43
14. Endereçando processos
● Para receber mensagens, processo ●
Identificador inclui endereço IP
deve ter identificador e números de porta
● Dispositivo hospedeiro tem endereço
associados ao processo no
IP exclusivo de 32 bits
hospedeiro.
● Exercício: use ipconfig do comando
●
Exemplos de número de porta:
prompt para obter seu endereço IP
(Windows)
−
servidor HTTP: 80
● P: Basta o endereço IP do hospedeiro
−
servidor de correio: 25
em que o processo é executado para
identificar o processo?
● R: Não, muitos processos podem
estar rodando no mesmo hospedeiro
Fundamentos de Redes de Computadores 14/43
15. Definições de protocolo da camada de aplicação
● Tipos de mensagens trocadas,
− ex.: requisição, resposta
● Sintaxe da mensagem:
− que campos nas mensagens & como os campos são delineados
● Semântica da mensagem
− significado da informação nos campos
● Regras de quando e como processos enviam & respondem a
mensagens
● Protocolos de domínio público:
− definidos em RFCs
− provê interoperabilidade
− ex.: HTTP, SMTP, BitTorrent
● Protocolos proprietários:
− ex.: Skype, ppstream
Fundamentos de Redes de Computadores 15/43
16. Que serviço de transporte uma
aplicação precisa?
Perda de dados
− algumas apls. (p. e., áudio) podem tolerar alguma perda
− outras apls. (p. e., transferência de arquivos, telnet) exigem
transferência de dados 100% confiável
Temporização
− algumas apls. (p. e., telefonia na Internet jogos interativos)
exigem pouco atraso para serem “eficazes”
Vazão
− algumas apls. (p. e., multimídia) exigem um mínimo de vazão
para serem “eficazes”
− outras apls. (“apls. elásticas”) utilizam qualquer vazão que
receberem
Segurança
− criptografia, integridade de dados,…
Fundamentos de Redes de Computadores 16/43
17. Requisitos de serviço de transporte das
aplicações comuns
Aplicação Perda de dados Vazão Sensível ao tempo
transf. arquivos sem perda elástica não
e-mail sem perda elástica não
documentos Web sem perda elástica não
áudio/vídeo tolerante a perda áudio: 5 kbps-1 Mbps sim, centenas de ms
tempo real vídeo:10 kbps-5 Mbps
áudio/vídeo tolerante a perda o mesmo que antes sim, alguns seg
armazenado
jogos interativos tolerante a perda poucos kbps ou mais sim, centenas de ms
Mensagem sem perda elástica sim e não
instantânea
Fundamentos de Redes de Computadores 17/43
18. Serviços de protocolos de transporte da
Internet
Serviço TCP:
− orientado a conexão: preparação exigida entre processos cliente e servidor
− transporte confiável entre processo emissor e receptor
− controle de fluxo: emissor não sobrecarrega receptor
− controle de congestionamento: regula emissor quando a rede está
sobrecarregada
− não oferece: temporização, garantias mínimas de vazão, segurança
Serviço UDP:
− transferência de dados não confiável entre processo emissor e receptor
− não oferece: preparação da conexão, confiabilidade, controle de fluxo,
controle de congestionamento, temporização, garantia de vazão ou
segurança
− Por que se incomodar? Por que existe um UDP?
Fundamentos de Redes de Computadores 18/43
19. Aplicações da Internet: aplicação, protocolos de
transporte
Protocolo da camada Protocolo de
Aplicação de aplicação transporte básico
e-mail SMTP [RFC 2821] TCP
acesso remoto Telnet [RFC 854] TCP
Web HTTP [RFC 2616] TCP
transf. arquivos FTP [RFC 959] TCP
multimídia com HTTP (p. e., Youtube), TCP ou UDP
fluxo contínuo RTP [RFC 1889]
telefonia da SIP, RTP, proprietário
Internet (p. e., Skype) normalmente UDP
Fundamentos de Redes de Computadores 19/43
20. WEB e o HTTP
●
Página Web consiste em objetos
●
Objeto pode ser arquivo HTML, imagem JPEG,
applet Java, arquivo de áudio,…
●
Página Web consiste em arquivo HTML básico
que inclui vários objetos referenciados
●
Cada objeto é endereçavel por um URL
http://www.fatecindaiatuba.edu.br/servicos_online/secr_academica/index.php
Nome do Hospedeiro Nome do Caminho
Fundamentos de Redes de Computadores 20/43
21. Visão geral do HTTP
HTTP: HyperText
req
Transfer Protocol u isiç
HT
ão
PC rodando res TP
pos
−
protocolo da camada Mozilla ta H
TTP
de aplicação da Web
P
−
modelo cliente/servidor H TT
ição P Servidor
uis HTT
−
cliente: navegador que req sta
rodando
po servidor Web
res
requisita, recebe, Apache
“exibe” objetos Web
Mac rodando
−
servidor: servidor Web Navigator
envia objetos em
resposta a
requisições
Fundamentos de Redes de Computadores 21/43
22. Visão geral do HTTP
Usa TCP: HTTP é “sem estado”
− cliente inicia conexão TCP − servidor não guarda
(cria socket) com informações sobre
servidor, porta 80 requisições passadas do
cliente
− servidor aceita conexão
TCP do cliente
−mensagens HTTP (do Protocolos que mantêm
protocolo da camada de “estado” são complexos!
aplicação) trocadas entre −história passada (estado)
navegador (cliente HTTP) deve ser mantida
e servidor Web (servidor
−se servidor/cliente falhar,
HTTP)
suas visões do “estado”
−conexão TCP fechada
podem ser incoerentes,
devem ser reconciliadas
Fundamentos de Redes de Computadores 22/43
23. Conexões HTTP
HTTP não persistente
−
no máximo um objeto é enviado por uma conexão
TCP.
HTTP persistente
−
múltiplos objetos podem ser enviados por uma
única conexão TCP entre cliente e servidor.
Fundamentos de Redes de Computadores 23/43
24. HTTP não persistente
Suponha que o usuário digite o URL
www.someSchool.edu/someDepartment/home.index
1a. Cliente HTTP inicia conexão TCP
com servidor HTTP (processo) em 1b. Servidor HTTP no hospedeiro
www.someSchool.edu na porta 80. www.someSchool.edu esperando
conexão TCP na porta 80. “aceita”
conexão, notificando cliente
2. Cliente HTTP envia mensagem de
requisição HTTP (contendo URL) pelo
socket de conexão TCP. Mensagem 3. Servidor HTTP recebe mensagem de
indica que cliente deseja o objeto requisição, forma mensagem de
someDepartment/home.index. resposta contendo objeto requisitado e
Tempo
envia mensagem para seu socket
5. Cliente HTTP recebe mensagem de 4. Servidor HTTP fecha conexão TCP.
resposta contendo arquivo html, exibe
html. Analisando arquivo html, acha 10
objetos JPEG referenciados.
6. Etapas 1-5 repetidas para cada um
dos 10 objetos JPEG.
Fundamentos de Redes de Computadores 24/43
25. HTTP não Persistente – Tempo de Resposta
Definição de RTT: tempo para um
pequeno pacote trafegar do
cliente ao servidor e retornar.
inicia
tempo de resposta: conexão TCP
RTT
− um RTT para iniciar a conexão
requisita
TCP arquivo
tempo para
− um RTT para a requisição HTTP e RTT
transmitir
primeiros bytes da resposta HTTP arquivo
arquivo
retornarem recebido
− tempo de transmissão de arquivo
tempo tempo
− total = 2RTT + tempo de
transmissão
Fundamentos de Redes de Computadores 25/43
26. HTTP Persistente
Problemas do HTTP não persistente:
− requer 2 RTTs por objeto
− overhead do SO para cada conexão TCP
− navegadores geralmente abrem conexões TCP paralelas
para buscar objetos referenciados
HTTP persistente:
− servidor deixa a conexão aberta depois de enviar a resposta
− mensagens HTTP seguintes entre cliente/servidor enviadas
pela conexão aberta
− cliente envia requisições assim que encontra um objeto
referenciado
− no mínimo um RTT para todos os objetos referenciados
Fundamentos de Redes de Computadores 26/43
27. Mensagem de requisição HTTP
Dois tipos de mensagens HTTP: requisição,
resposta
Mensagem de requisição HTTP: ASCII (formato
de texto legível)
linha de requisição
(comandos GET, GET /somedir/page.html HTTP/1.1
POST, HEAD) Host: www.someschool.edu
User-agent: Mozilla/4.0
linhas de Connection: close
cabeçalho
Accept-language:fr
carriage return, (carriage return, line feed extras)
line feed
indica final
da mensagem
Fundamentos de Redes de Computadores 27/43
29. Upload da entrada do formulário
Método POST:
−
página Web geralmente inclui entrada do formulário
−
entrada é enviada ao servidor no corpo da entidade
Método do URL:
−
usa o método GET
−
entrada é enviada no campo de URL da linha de
requisição:
www.umsite.com/buscaanimal?macacos&banana
Fundamentos de Redes de Computadores 29/43
30. Tipos de método
HTTP/1.0 HTTP/1.1
−
GET −
GET, POST, HEAD
−
POST −
PUT
−
HEAD ●
envia arquivo no
corpo da entidade
●
pede ao servidor ao caminho
para deixar objeto especificado no
requisitado fora da campo de URL
resposta
−
DELETE
●
exclui arquivo
especificado no
campo de URL
Fundamentos de Redes de Computadores 30/43
31. Mensagem de resposta HTTP
linha de status
(protocolo
código de estado HTTP/1.1 200 OK
frase de estado) Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
linhas de Server: Apache/1.3.0 (Unix)
cabeçalho Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
dados, p. e., dados dados dados dados dados ...
arquivo HTML
requisitado
Fundamentos de Redes de Computadores 31/43
32. Códigos de estado da resposta HTTP
Primeira linha da mensagem de resposta servidor-
cliente
Alguns exemplos de código:
−
200 OK
●
requisição bem-sucedida, objeto requisitado mais adiante
−
301 Moved Permanently
●
objeto requisitado movido, novo local especificado mais
adiante na mensagem (Location:)
−
400 Bad Request
●
mensagem de requisição não entendida pelo servidor
−
404 Not Found
●
documento requisitado não localizado neste servidor
−
505 HTTP Version Not Supported
Fundamentos de Redes de Computadores 32/43
33. Testando o HTTP (lado cliente) você mesmo
1.Use Telnet para seu servidor Web favorito:
telnet cis.poly.edu 80
Abre conexão TCP com porta 80 (porta HTTP default
do servidor) em cis.poly.edu. Qualquer coisa digitada
é enviada à porta 80 em cis.poly.edu
2.Digite uma requisição HTTP GET:
GET /~ross/ HTTP/1.1
Host: cis.poly.edu
Digitando isto (pressione carriage return duas vezes),
você envia esta requisição GET mínima (mas
completa) ao servidor HTTP
3.Veja a mensagem de resposta enviada pelo
servidor HTTP!
Fundamentos de Redes de Computadores 33/43
34. Estado usuário-servidor: cookies
Muitos sites importantes Exemplo:
usam cookies ●
José sempre acessa a
Quatro componentes: Internet pelo PC
1.Linha de cabeçalho de ●
Visita um site de comércio
cookie da mensagem de eletrônico pela primeira
resposta HTTP vez
2.Linha de cabeçalho de ●
Quando as primeiras
cookie na mensagem de requisições HTTP chegam
requisição HTTP ao site, este cria:
3.Arquivo de cookie na
máquina do usuário,
●
ID exclusivo
controlado pelo ●
Entrada no banco de dados
navegador do usuário de apoio para o ID
4.Banco de dados de
apoio no site Web
Fundamentos de Redes de Computadores 34/43
35. Estado usuário-servidor: cookies
cliente
servidor
ebay 8734
requisição http normalservidor Amazon
arq. de cookie resposta http normal cria ID 1678
Set-cookie: 1678 para usuário cria
ebay 8734
entrada
amazon 1678
requisição http normal
cookie: 1678 ação acessa
específica
uma semana depois: resposta http normal do cookie banco de
dados de
acessa apoio
ebay 8734 requisição http normal
amazon 1678 cookie: 1678 ação
específica
resposta http normal do cookie
Fundamentos de Redes de Computadores 35/43
36. Estado usuário-servidor: cookies
O que os cookies podem ter:
− autorização
− carrinhos de compras
− recomendações
− estado da sessão do usuário (e-mail da Web)
Como manter o “estado”:
− extremidades do protocolo: mantêm estado no
emissor/receptor por múltiplas transações
− cookies: mensagens HTTP transportam estado
Cookies e privacidade:
− cookies permitem que os sites descubram muito sobre você
− você pode fornecer nome e e-mail aos sites
Fundamentos de Redes de Computadores 36/43
37. Caches Web (servidor proxy)
Objetivo: satisfazer a requisição
do cliente sem envolver
servidor de origem servidor
de origem
● Usuário prepara navegador:
acessos à Web via cache servidor
sol
ic . proxy TP
HT HT
Navegador envia todas as HT TP ic . TP
● cliente TP
res sol HT
sta
requisições HTTP ao cache pon
se re spo
objeto no cache: cache retorna TP
−
. HT P
objeto s olic HTT
o sta
sp
− ou cache requisita objeto do re
servidor de origem, depois cliente
retorna objeto ao cliente servidor
de origem
Fundamentos de Redes de Computadores 37/43
38. Caches Web (servidor proxy)
●
Cache atua como ● Por que caching Web?
cliente e servidor ● Reduz tempo de resposta à
requisição do cliente
●
Normalmente, cache é ● Reduz tráfego no enlace de
instalado por ISP (da acesso de uma instituição
universidade, ● Internet densa com caches:
empresa, residencial) permite que provedores de
conteúdo “fracos” remetam
conteúdo efetivamente (mas
o mesmo ocorre com
compartilhamento de
arquivos P2P)
Fundamentos de Redes de Computadores 38/43
39. Exemplo de Caching
Suposições
● Tamanho médio do objeto = servidores
1.000.000 bits de origem
● Taxa de requisição média dos Internet
navegadores da instituição aos pública
servidores de origem = 15Mb/s
● Atraso do roteador institucional a
qualquer servidor de origem e de enlace de
acesso a 15 Mbps
volta ao roteador = 2 s rede
institucional
Consequências LAN de 100 Mbps
● Utilização na LAN = 15%
● Utilização no enlace de acesso =
100% cache
institucional
● Atraso total = atraso da Internet +
atraso do acesso + atraso da LAN
= 2 s + x minutos + y
milissegundos
Fundamentos de Redes de Computadores 39/43
40. Exemplo de Caching
solução possível
servidores
● Aumentar largura de banda do de origem
enlace de acesso para,
digamos, 100 Mbps Internet
pública
consequência
● Utilização na LAN = 15%
enlace de
● Utilização no enlace de acesso acesso a 100 Mbps
= 15% rede
institucional
LAN de 100 Mbps
● Atraso total = atraso da Internet
+ atraso do acesso + atraso da
LAN = 2 s + x ms + y ms
cache
● Normalmente, uma atualização institucional
dispendiosa
Fundamentos de Redes de Computadores 40/43
41. Exemplo de Caching
possível solução: instalar cache
● Suponha que índice de acerto é 0,4 servidores
consequência
de origem
● 40% de requisições serão satisfeitas
Internet
imediatamente pública
● 60% de requisições satisfeitas pelo
servidor de origem
● Utilização do enlace de acesso reduzida
para 60%, resultando em atrasos enlace de
insignificantes (digamos, 10 ms) acesso a 15 Mbps
rede
Atraso médio total = atraso da Internet + institucional
●
LAN de 100 Mbps
atraso de acesso + atraso da LAN =
0,6*(2,01) s + 0,4*milissegundos < 1,4 s
cache
institucional
Fundamentos de Redes de Computadores 41/43
42. Get Condicional
●
Objetivo: não enviar objeto
cache servidor
se o cache tiver versão
atualizada msg requisição HTTP
If-modified-since:
●
Cache: especifica data da <data>
objeto
não
cópia em cache na modificado
resposta HTTP
requisição HTTP HTTP/1.0
304 Not Modified
If-modified-since: <data>
●
Servidor: resposta não msg requisição HTTP
If-modified-since:
contém objeto se a cópia <data> objeto
em cache estiver modificado
resposta HTTP
atualizada: HTTP/1.0 200 OK
<dados>
HTTP/1.0 304 Not
Modified
Fundamentos de Redes de Computadores 42/43
43. Slides baseados no material do livro Fundamento
de Redes da Pearson Editora.
Fundamentos de Redes de Computadores 43/43