22/05/2014
REDES DE COMPUTADORES
Camada de Aplicação
Alexandre Augusto Giron
ROTEIRO
• Revisão
• Princípios e Arquiteturas das aplicações de
rede
• Camada de Aplicação
– Aplicações e seus Protocolos
• Aplicações P2P
• Resumo
Revisão – TCP/IP
1
22/05/2014
Revisão – TCP/IP
• Cada protocolo pertence a uma das
camadas
• Cada camada fornece serviços e utiliza
serviços das camadas imediatamente
inferiores à ela
Revisão – TCP/IP
• Camada de aplicação: onde residem as
aplicações de rede e seus protocolos
• Camada de transporte: recebe as
mensagens da camada de aplicação e as
transporta entre os lados cliente e servidor
(da aplicação!)
• Assim, uma aplicação de rede “escolhe”
algum protocolo da camada de transporte
para o envio das mensagens
– Mas como escolher o protocolo? Depende
da arquitetura da aplicação
Princípios das Aplicações de
Rede
• Aplicações de rede são a razão de ser de
uma rede de computadores
• Ao desenvolver uma aplicação é necessário
que:
– Software que execute em diferentes sistemas finais
comunicantes
– Escolha da arquitetura da aplicação
• É necessário desenvolver programas
também para os roteadores e switches
(núcleo da rede)?
– Não! Arquitetura em camadas!
2
22/05/2014
Princípios das Aplicações de
Rede
Arquiteturas das aplicações de
rede
• Não confundir com arquitetura de rede!
– Arquitetura de aplicação de rede
≠ arquitetura de rede
• Determina como a aplicação é organizada
nos sistemas finais
• Mais utilizadas: Cliente-Servidor; Peer-toPeer (P2P); Híbrida
Arquiteturas das aplicações de
rede – Cliente-Servidor
• Servidor:
– Sempre em funcionamento
– Atende requisições
– Endereço IP fixo
• Cliente:
– Não necessitam estar sempre em funcionamento
– Envia requisições ao servidor
– Endereço IP dinâmico
3
22/05/2014
Arquiteturas das aplicações de
rede – Cliente-Servidor
Arquiteturas das aplicações de
rede – Cliente-Servidor
• Vantagens
– Recursos centralizados
– Armazenamento centralizado mais fácil de gerenciar
– Clientes requerem pouca administração
• Desvantagens
– Um servidor sozinho não atende a todas as requisições
– Assim, é necessário um conjunto de servidores (Datacenter), aumentando o custo
– Se os servidores falharem, requisições não serão
atendidas
Arquiteturas das aplicações de
rede – Peer-to-Peer (P2P)
• Arquitetura de pares arbitrários que se
comunicam entre si
• Comunicação direta entre os pares
– Cada nó funciona como cliente e como servidor
• Arquitetura distribuída e descentralizada
– Pouca (ou nenhuma) interação com servidor
4
22/05/2014
Arquiteturas das aplicações de
rede – Peer-to-Peer (P2P)
Arquiteturas das aplicações de
rede – Peer-to-Peer (P2P)
• Vantagens principais
– Auto-escalabilidade: Aumento na quantidade de nós
gera mais demanda mas também maior capacidade de
serviço ao sistema
– Não requerem infraestrutura significativa
– Confiabilidade: falha em um par não afeta a rede
• Desvantagens
– Complexidade maior na gerência da rede
– Segurança: arquitetura distribuída e exposta dificulta a
proteção
Arquiteturas das aplicações de
rede – Híbrida
• Arquitetura Híbrida: combina conceitos de
Cliente-Servidor com P2P
• Muitas aplicações de mensagem instantânea
são híbridas
• Ex: Napster
– Servidor central identificava quais pares tinham
determinado arquivo
– Troca de arquivos então ocorria entre os pares, sem
passar por um servidor central
5
22/05/2014
Comunicação entre processos
• Como a aplicação vai se comunicar entre os
diferentes sistemas finais?
• Programas executando em sistemas finais:
Processos
• Processos executando no mesmo sistema
final:
– Regras de comunicação definidas pelo SO
• Processos executando em sistemas finais
diferentes:
– SOs podem ser diferentes!
– Comunicação por troca de mensagens
Comunicação entre processos
• Um processo de uma aplicação deseja enviar
uma mensagem para outro processo (em outro
sistema final)
• Se é um processo que inicia a comunicação:
Processo cliente
• Se é um processo que espera ser contatado:
Processo servidor
• A mensagem de um processo deve passar pela
rede
• Mas por onde o processo envia a mensagem?
– Através do Socket!
Socket
• É a interface entre o processo e a rede de
computadores
• Mais especificamente: interface entre a
camada de aplicação e a camada de
transporte
– Processo cliente “empurra” a mensagem pelo socket
– Processo servidor recebe a mensagem a partir do socket
– Socket análogo a uma porta de uma casa
6
22/05/2014
Socket
• Nesse caso, o protocolo escolhido foi o TCP
da camada de transporte
Serviços da camada de transporte
• Quais são os serviços disponíveis para as
aplicações de rede?
1. Transferência confiável de dados
2. Vazão
3. Temporização
4. Segurança
Transferência confiável
• Um pacote pode se perder dentro de uma
rede
– Ser descartado por um roteador, exceder um buffer
• Muitas aplicações requerem que não haja
perda de dados
• Objetivo da Transferência confiável: garantir
que os dados cheguem ao seu destino de
forma correta
7
22/05/2014
Vazão
• Emissores/Receptores compartilham largura
de banda da rede
– Vazão pode oscilar com o tempo
• Se o protocolo da camada de transporte
pode garantir uma taxa mínima de r bits/s
• Então o protocolo garante vazão disponível
seja sempre r bits/s (pelo menos)
• Aplicações multimídia que possuem
necessidade de vazão são conhecidas como
sensíveis à largura de banda
Temporização
• Objetivo: garantir o envio de um bit (desde
o socket emissor até o socket destino) com
tempo máximo pré-fixado
– Por exemplo, em menos de 100 milissegundos
• Serviço interessante para aplicações em
tempo real
– Telefonia por internet, teleconferência, jogos
multijogadores
Segurança
• Um protocolo de transporte pode oferecer
vários serviços relacionados à segurança
– Sigilo, integridade dos dados, autenticação, entre outros
• Ex: um protocolo codifica os dados de um
processo emissor antes de enviar ao
processo receptor
8
22/05/2014
Serviços da camada de transporte
• Quais são os serviços disponíveis para as
aplicações de rede?
1. Transferência confiável de dados
2. Vazão
3. Temporização
4. Segurança
• Não são disponíveis na Internet atualmente
Serviços oferecidos na prática
• Protocolo TCP (Transmission Control
Protocol):
1. Serviço Orientado para conexão
1.
Conexão TCP entre os sockets do processo
2. Serviço confiável de transporte
1.
TCP é capaz de enviar sem erros e na ordem correta:
Transferência confiável de dados
3. Mecanismo de controle de
congestionamento
1.
Limita a capacidade de transmissão de um processo
quando a rede está congestionada
Serviços oferecidos na prática
• Protocolo UDP (User Datagram Protocol):
um protocolo simplificado
1. Não orientado para conexão
2. Não fornece transporte confiável de dados
1.
Protocolo não dá nenhuma garantia que os dados
chegarão ao destino
3. Não inclui mecanismo de controle de
congestionamento
1.
Processo pode enviar dados à taxa que quiser
9
22/05/2014
Serviços oferecidos na prática
• Comparativo entre a utilização dos
protocolos
Endereçamento de processos
• SOs normalmente possuem vários
processos em execução
• Como um processo “sabe” qual o processo
que ele quer se comunicar?
• Na internet, um sistema final é identificado
por um endereço IP (32 bits)
• Para identificar o processo, são utilizados
números de porta
Endereçamento de processos
• Portas comuns:
Protocolo
Porta
FTP
20 e 21
SSH
22
Telnet
23
SMTP
25
DNS
53
Web
80
Pop3
110
IMAP
143
(http://www.iana.org/assignments/service-names-portnumbers/service-names-port-numbers.xhtml)
10
22/05/2014
Aplicações e Protocolos da
camada de aplicação
• Um protocolo da camada de aplicação
define como os processos (de sistemas
finais diferentes) passam mensagens entre
si
1. Tipos de mensagens trocadas (Ex: requisição,
resposta)
2. Sintaxe: campos da mensagem, cabeçalho
3. Semântica: qual o significado de cada campo da
mensagem
4. Regras para determinar quando e como é o envio e
resposta das mensagens
Aplicações e Protocolos da
camada de aplicação
•
•
•
•
Protocolos públicos (definidos em RFCs):
Web e o HTTP
Transferência de arquivos: FTP
Correio Eletrônico:
– SMTP, POP3 e IMAP
• Serviço de diretório: DNS
• Compartilhamento de arquivos P2P
Web e o HTTP
• Relembrando: até a década de 1990,
Internet era usada por pesquisadores
• No inicio de 1990, surge a Web
• Protocolo HTTP como parte do coração da
Web
11
22/05/2014
Termos da Web
• Página Web: composta de objetos
• Um objeto é um arquivo qualquer (HTML,
JPEG, GIF, applet Java, vídeo...)
• Forma de acesso: com um único URL
• Arquivo-base HTML e objetos nele
referenciados
• URL (endereço web)
HTTP
• HTTP (HyperText Transfer Protocol)
• Protocolo de aplicação da Web
• Possui arquitetura cliente-servidor
–
–
–
–
Browser (navegador) solicita documentos
Browser implementa o lado cliente do protocolo HTTP
Servidor trata requisições de objetos que ele abriga
Servidores Web populares: Apache e Microsoft IIS
• HTTP define como se dão as requisições e a
transferência das páginas Web
HTTP
• HTTP utiliza TCP como protocolo de
transporte de mensagens
• Cliente realiza uma requisição HTTP para
seu socket
• Uma conexão TCP é
iniciada
• Servidor envia uma
resposta HTTP
12
22/05/2014
HTTP
• Vale ressaltar que o servidor HTTP não
mantém informações de estado de seus
clientes
– Se um mesmo cliente fizer a mesma solicitação duas
vezes, serão enviadas duas respostas iguais
• HTTP é um protocolo sem estado
– Simplifica o projeto do servidor
– Gerência de maior número de conexões simultâneas
HTTP: tipos de conexão
• Duas configurações disponíveis
• HTTP com conexão não-persistente (HTTP
1.0):
– Cada solicitação de objeto requer uma nova conexão
– Com a transferência concluída, a conexão é desfeita
• HTTP com conexão persistente (HTTP 1.1):
– Vários objetos podem ser transferidos com a mesma
conexão
– Normalmente, a conexão é fechada após um tempo
predeterminado de inutilização da conexão
– Dois tipos: Paralela e Serial
HTTP com conexão não-persistente
• RTT (Round-Trip Time): Tempo de viagem
de ida e volta
13
22/05/2014
HTTP com conexão não-persistente
• Exemplo:
http://someSchool.edu/someDepartment/h
ome.index
• Suponha que neste arquivo possua
referência para 10 arquivos JPG
• Utilizando RTT como medida de tempo, qual
o tempo necessário para a transferência
desses arquivos?
HTTP com conexão não-persistente Exemplo
• Fluxo:
1. Cliente HTTP inicia conexão TCP ao servidor HTTP
(processo) em www.someSchool.edu. Porta 80 é a default
para o servidor HTTP
2. O cliente HTTP envia uma mensagem de requisição HTTP
ao servidor através de seu socket
3. Servidor HTTP no hospedeiro www.someSchool.edu
encapsula o objeto requerido (home.index), localizado no
seu disco ou RAM, em uma mensagem de resposta HTTP
e envia ao cliente
4. Servidor HTTP ordena ao protocolo TCP o fechamento da
conexão (na realidade o TCP só fechará após o cliente
receber a mensagem descrita em 3 intacta –
Transferência confiável!)
5. O cliente recebe a resposta HTTP e a
conexão é encerrada.
HTTP com conexão não-persistente Exemplo
• Fluxo:
1. Cliente HTTP inicia conexão TCP ao servidor HTTP
(processo) em www.someSchool.edu. Porta 80 é a default
para o servidor HTTP
2. O cliente HTTP envia uma mensagem de requisição HTTP
ao servidor através de seu socket
3. Servidor HTTP no hospedeiro www.someSchool.edu
Para cada um dos 10 arquivos,
encapsula o objeto requerido (home.index), localizado no
os passos
1-5
devem ser
seu disco ou RAM,
em uma
mensagem
de resposta HTTP
repetidos!!
e envia ao cliente
4. Servidor HTTP ordena ao protocolo TCP o fechamento da
conexão (na realidade o TCP só fechará após o cliente
receber a mensagem descrita em 3 intacta –
Transferência confiável!)
5. O cliente recebe a resposta HTTP e a
conexão é encerrada.
14
22/05/2014
HTTP com conexão não-persistente Exemplo
• Para o recebimento do arquivo home.index:
2 RTT + tempo de transmissão do arquivo
• Para receber os 10 arquivos JPG
Adiciona 10*(2 RTT + tempo de transm. do arquivo)
• Total:
22*RTT + 11*Tempo transmissão
• Note que a conexão não-persistente do
HTTP pode sobrecarregar servidores por
esgotamento de recursos
– Cada conexão TCP requer alocação de
buffers, manutenção de variáveis
HTTP com conexão persistente
• Servidor deixa a conexão TCP aberta após a
transferência
– Novas requisições podem ser enviadas pela mesma
conexão
• Serial: Permite apenas uma nova
requisição apenas se a resposta anterior
tiver sido recebida
– 1 RTT por arquivo (requisição e recebimento)
– Ociosidade do cliente/servidor: aguarda recebimento
HTTP com conexão persistente
• Paralela: Cliente envia requisições sem
esperar pela resposta de cada requisição
– Padrão no HTTP 1.1
– Menor ociosidade da conexão
– Menor espera (1 RTT é dividido por várias solicitações)
• É permitido ao usuário configurar o grau de
paralelismo no navegador
– Por default, os navegadores abrem de 5 a 10 conexões
TCP paralelas
15
22/05/2014
Formato de mensagem HTTP
• Especificação na RFC 2616
• Dois tipos: Requisição e Resposta
• Exemplo de requisição HTTP:
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/4.0
Accept-language: fr
Formato de mensagem HTTP
• Especificação na RFC 2616
• Dois tipos: Requisição e Resposta
• Exemplo de requisição HTTP:
Linha de
requisição
Linhas
de cabeçalho
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/4.0
Accept-language: fr
Formato de mensagem HTTP
16
22/05/2014
Formato de mensagem HTTP
• Linha de requisição:
• Método
– GET, POST, HEAD
– HTTP 1.1: PUT, DELETE, TRACE, OPTIONS, CONNECT
• URL: identificação do objeto
• Versão:
– Especifica o último campo da linha de requisição
– Versão do HTTP em uso
• Linhas de cabeçalho:
• Host
– indica o hospedeiro do objeto
• Connection
– close -> indica que a conexão não é
persistente!
Corpo de entidade?
• Fica vazio com método GET
• Quando um usuário preenche um
formulário, normalmente utiliza o método
POST
– Dados do formulário embutidos no corpo de entidade
• Formulários com GET
– Dados do formulário contidos na URL
– URL mais extensa:
www.somesite.com/animalsearch?monkeys&bananas
Formato de mensagem de resposta
HTTP
17
22/05/2014
Formato de mensagem de resposta
HTTP
• Linha de Estado + cabeçalho + corpo da
entidade
HTTP/1.1 200 OK
Connection: close
Date: Sat, 07 Jul 2007 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Sun, 06 May 2007 09:23:24 GMT
Content-Lenght: 6821
Content-Type: text/html
(dados............................ )
Códigos de estado da mensagem de
resposta HTTP
• Indicam o resultado da requisição
• Códigos comuns:
– 200 OK: requisição bem-sucedida e informação entregue
com a resposta
– 301 Moved Permanently: o objeto foi removido
permanentemente e o caminho é especificado no campo
Location. Automaticamente o software que fez a
requisição recupera o novo URL.
– 400 Bad Request: código de erro indicando que a
requisição não pode ser atendida pelo servidor
– 404 Not Found: Objeto não foi encontrado no servidor
– ....
Cookies
• HTTP: protocolo sem informações de estado
• Porém essas informações podem ser
necessárias!
– Restrições de acesso a determinados usuários
– Apresentação de conteúdo compatível com idade dos
usuários
• Cookies permitem o monitoramento de
informações do usuário
• Maioria dos sites da Web utilizam cookies
18
22/05/2014
Cookies
• Qual a função?? Monitorar informações do
usuário, manter informações de comunicação
sobre um protocolo sem estado (HTTP)
• Necessidade de suporte no servidor HTTP
– Banco de dados
• Componentes:
1. Linha de cabeçalho de cookie na mensagem de resposta
HTTP
2. Linha de cabeçalho de cookie na requisição HTTP
3. Um arquivo de cookie mantido no sistema do usuário
4. Um banco de dados de apoio no servidor
Cookies Exemplo
• Suponha um acesso de um cliente ao site
amazon.com, através de um navegador
• Anteriormente o mesmo cliente já havia
acessado o site ebay
Cookies Exemplo
1. Mensagem normal de requisição HTTP (acesso
ao site amazon)
2. Quando a requisição chega ao servidor da
amazon, ele cria um n° de identificação
exclusivo (ID) para o cliente
1.
e armazena no banco de dados de apoio
3. O servidor envia a resposta contendo:
1.
Set-cookie: n° de identificação
4. Quando o cliente recebe a mensagem de
resposta, o navegador do cliente:
1.
2.
Adiciona uma linha no arquivo de cookies
Essa linha possui o nome de hospedeiro
e o n° de identificação
19
22/05/2014
Cookies Exemplo
Cookies Exemplo
5. Cada nova requisição ao site amazon, o
navegador do cliente insere o ID na requisição
• Assim, o servidor pode monitorar quais páginas
foram acessadas, em qual ordem, em quais
horários
• Sites de compra guardam informações dos
interesses, itens acessados pelos usuários
– Anúncios personalizados
6. Com o cliente retornando ao site após uma
semana, o servidor pode consultar o cookie e
realizar ações específicas
–
Anúncios personalizados!
Cookies
• Na prática, muitas informações do usuário
(além do ID) são relacionadas ao cookie
– Registro no site: Nome completo, endereço, n° do cartão
de crédito incluídas no banco de dados
– Serviço de “compras com um só clique”: dados são
recuperados
• Apesar de simplificarem processos de
compra, cookies são uma ameaça à
privacidade
20
22/05/2014
Caches Web (servidor proxy)
• Cache Web: servidor proxy
• Atende requisições HTTP em nome de um
servidor de origem
• Intermediário entre a conexão do cliente e
servidor
– Cliente envia requisições HTTP para o proxy
– Se o objeto existe no proxy: o proxy retorna o objeto
– Se o objeto não existe no proxy: o proxy faz uma
requisição HTTP ao servidor original (que contém o
objeto) e após o recebimento, envia o objeto ao cliente
Caches Web (servidor proxy)
• Um proxy atua como cliente e servidor
• Dessa forma, um proxy tende a reduzir o
tempo de resposta
Caches Web (servidor proxy)
• Depende da taxa de acertos
• Proxy além de reduzir o tempo de resposta,
podem diminuir o tráfego no enlace de
acesso a uma instituição
• Com redução de tráfego, a instituição não
necessita ampliar sua largura de banda da
conexão
– Diminuindo custos
– Mas requer a instalação do proxy
21
22/05/2014
E se o arquivo estiver desatualizado
no proxy??
• Mecanismo do HTTP para verificação dos
objetos
• Comando GET “Condicional”
– Linha de cabeçalho da requisição: If-Modified-Since
GET Condicional
• Exemplo
GET Condicional
• Proxy faz
consulta
ao servidor
22
22/05/2014
GET Condicional
• Servidor
responde
ao proxy
GET Condicional
• Proxy envia o
objeto ao cliente
e armazena.
• Suponha que
haja um novo
acesso
– Após uma semana
• Como saber
se o arquivo
no proxy é
atualizado??
GET Condicional
• GET condicional:
23
22/05/2014
GET Condicional
• Se o arquivo não foi atualizado, o servidor
responde ao proxy:
– 304 Not Modified
– Sem o objeto na resposta
• Se não foi modificado, o proxy envia o
objeto que ele possui ao cliente
• O Get condicional tem esse objetivo:
apenas retorne o objeto se este foi
modificado
FTP (File Transfer Protocol)
• Protocolo da camada de aplicação para
transferência de arquivos pela rede
• Acesso através de usuário e senha
• Utiliza o TCP como protocolo de transporte
FTP
• FTP utiliza duas conexões TCP paralelas
para transferência de arquivos
• Conexão de controle:
– Trocar informações de controle: usuário, senha,
comandos FTP específicos
– Conexão persistente
• Conexão de dados:
– Utilizada para o envio do arquivo
– É uma conexão não persistente
24
22/05/2014
FTP
• Dessa forma, FTP mantém informações de
estado sobre o usuário
• Como se dá o acesso a um servidor ftp?
– ftp://[username]:[password]@[servidor]
• Existem servidores FTP gratuitos na web
– www.serversfree.com
Comandos FTP
• user nomeUser: nome de usuário
• pass password: senha
• list: listagem de arquivos no servidor
remoto
• retr nomeArquivo: obtenção de um arquivo
no servidor remoto
• stor nomeArquivo: comando que armazena
um arquivo no diretório atual
Comandos FTP
• Outros comandos para mudança de
diretório, modo da transferência, tipo
(ASCII ou binário...)
• Códigos de erro FTP disponíveis na RFC 959
25
22/05/2014
FTP
• Problemas de segurança
– Informações de usuário/senha não são codificadas
– Usuário mal intencionado pode interceptar pacotes e
“ler” a senha
• FTPS (“FTP Secure”): a adição de
mecanismos de segurança
– TLS e SSL para criptografia dos dados
• SFTP (Secure File Transfer Protocol):
– Transferência de dados criptografados
– Não é baseado no FTP, mas sim no SSH (Secure Shell)
Correio Eletrônico
• Envio assíncrono de mensagens pela rede
• Três componentes principais
– Agentes de usuário
– Servidores de correio
– SMTP (Simple mail transfer protocol)
• Fluxo: A envia uma mensagem para B
– Agentes de usuário: leitura, resposta, composição e
armazenamento de mensagens
– Agente de usuário envia a mensagem ao servidor de
correio
– Quando B quer ler suas mensagens, seu agente de
correio extrai de sua caixa de correio
localizada no servidor
Correio Eletrônico
26
22/05/2014
Correio Eletrônico
• Servidores de correio formam o “núcleo” da
infraestrutura do correio eletrônico
• Cada um dos destinatários contem uma
caixa postal localizada no servidor
• A troca de mensagens é de servidor para
servidor!
• Se o servidor de correio de A não puder
entregar a mensagem no servidor de B
– Mantém uma fila de mensagens
– Tentará o envio mais tarde
SMTP
• É o principal protocolo de emails
– Porém é antigo
• Utiliza TCP como protocolo da camada de
transporte
• Envia mensagens do servidor de correio do
remetente até o servidor de correio do
destinatário
– Portanto, SMTP tem dois lados: lado cliente (remetente) e
lado servidor (destinatário)
– Quando um servidor de correio envia mensagem, age como
um cliente SMTP
– Quando um servidor de correio recebe
mensagem, age como um servidor SMTP
SMTP
• Características
– Utiliza porta TCP 25
– SMTP utiliza conexões persistentes
– Apenas envia as mensagens entre os servidores de
correio dos usuários
27
22/05/2014
SMTP
• Exemplo de mensagem
Cliente: MAIL FROM: <[email protected]>
Server: 250 [email protected] Sender ok
Cliente: RCPT TO: <[email protected]>
Server: 250 [email protected] Recipient ok
Cliente: DATA
Server: 354 Enter mail, end with “.” on a line by itself
Cliente: Olá user2,
... cont. da mensagem ...
.
Server: 250 Message accepted for delivery
Cliente: QUIT
SMTP
• Em geral, o servidor de correio é mantido
pelo ISP (empresa, universidade)
• Como se dá o acesso através do agente de
usuário?? Como obter as mensagens que
estão no servidor de correio??
– Não pode usar SMTP: protocolo de envio (push) não de
recuperação (pull)
– PROTOCOLOS DE ACESSO: POP3, IMAP e HTTP
POP3
• Post Office Protocol
• Protocolo de acesso simples
– Porém limitado
• Utiliza TCP porta 110
• Três fases após a conexão TCP
1. Autorização: agente de usuário envia nome e senha
para autenticação
2. Transação: as mensagens são recuperadas e podem
ser marcadas/desmarcadas para serem apagadas
3. Atualização: servidor apaga as mensagens e o cliente é
desconectado
28
22/05/2014
POP3
• O POP3 trabalha no modo “ler-e-apagar” ou
“ler-e-guardar”
• O segundo é indicado quando é necessário
ler emails de diferentes máquinas
• Protocolo sem estado entre sessões
– Armazena pouca informação de estado: mensagens
marcadas para apagar
– Simplifica a implementação
– Não há como manter uma hierarquia de pastas entre
diferentes máquinas com o POP3: não há servidor
remoto.
IMAP
• Internet Mail Access Protocol
• Protocolo de acesso com mais recursos que
o POP3
– Implementação é mais complexa
• IMAP associa uma mensagem a uma pasta
– Quando a mensagem chega a um servidor, é associada a
uma pasta INBOX do destinatário
– Destinatário pode transferir a mensagem para uma nova
pasta
– IMAP também permite a obtenção de apenas o
cabeçalho de uma mensagem
Mas e na prática? Usamos IMAP ou
POP3??
• Na prática, atualmente se utilizam mais
emails através da web: protocolo HTTP (ou
HTTPS)
– Emails lidos e enviados através dos browsers
– Hotmail, Yahoo! Mail...
– Usuário se comunica com sua caixa postal remota via
protocolo HTTP
– Contudo, o envio de emails de servidor de correio para
servidor pode usar SMTP
29
22/05/2014
DNS (Domain Name System)
• Conceito de facilidade de identificação (e
memorização)
– Hostname: www.g1.com.br
ou
– IP: 186.192.90.5
• Hospedeiros são identificados das duas
formas
DNS: o que é?
1. Um banco de dados distribuído
implementado em uma hierarquia de
servidores de nome
2. Protocolo que fornece o serviço de diretório
da Internet
1.
Permite que hospedeiros consultem o banco de dados
DNS
• Serviço principal do DNS:
– Traduzir o nome do host para um IP válido
• Outros serviços
– Apelidos de Hospedeiro: um host com nome complicado pode
ter um ou mais apelidos: relay1.west-coast.enterprise.com pode
ter apelidos como enterprise.com e www.enterprise.com
• relay1.west-coast.enterprise.com é o nome canônico
• DNS pode obter o nome canônico
– Apelidos de servidor de correio: mesma situação anterior, DNS
pode ser utilizado para obter o nome canônico do servidor de
correio
– Distribuição de carga: auxiliam a realizar distribuição de carga
servidores Web “movimentados”. O DNS associa um conjunto de
endereços IP (servidores) a um único nome canônico. Assim, o
DNS faz um rodízio de tradução de nome, usando
um dos IPs do conjunto.
30
22/05/2014
DNS
• Protocolo DNS utiliza porta UDP 53
• Esse protocolo é comumente usado por
outros protocolos da camada de aplicação
– HTTP, FTP, SMTP...
– De que forma?
DNS – Aplicação obtendo endereço
IP
1. A própria máquina do usuário executa o lado
cliente da aplicação DNS
2. Navegador (exemplo HTTP) extrai o hostname
(www.someschool.edu) e o repassa para o
lado cliente da aplicação DNS
3. Cliente DNS envia uma consulta contendo o
nome do hospedeiro para um servidor DNS
4. Cliente recebe a resposta que inclui o
endereço IP correspondente
5. Navegador pode iniciar uma
conexão com o IP obtido
• Note que o DNS insere um atraso
nas aplicações!
Funcionamento do DNS
• DNS é constituído de um grande n° de
servidores ao redor do mundo
• Abordagem de DNS centralizada não é
adequada para a Internet
–
–
–
–
Único ponto de falha
Volume de tráfego
Banco de dados centralizado distante
Manutenção
• Assim, é utilizada abordagem distribuída e
hierárquica
31
22/05/2014
Funcionamento do DNS
• Mapeamentos distribuídos entre os
servidores de nomes
• Três classes de servidores
– Servidores de nome raiz
– DNS de alto nível (TLD)
– DNS com autoridade
Funcionamento do DNS
Funcionamento do DNS
• Servidores de nomes raiz
– “13 servidores” na Internet
– Na realidade, cada um dos 13 formam um conglomerado de
servidores (para fins de confiabilidade e segurança)
• Serv. de nomes TLD
– Responsáveis pelos domínios de alto nível como com, org, net,
edu e gov;
– E também por todos os domínios de alto nível de países como fr,
uk, br...
• Serv. de nomes com autoridade
– Entidades desejam que seus endereços sejam acessíveis
publicamente na Internet
– Devem fornecer registros DNS acessíveis
– Esses registros são abrigados pelos Servidores de nome com
autoridade
– Uma instituição pode implementá-lo ou pagar
por algum provedor desse serviço
32
22/05/2014
Funcionamento do DNS
http://www.root-servers.org/
Funcionamento do DNS
• “Fora da hierarquia” existem os DNS locais:
• Cada ISP tem um (ou mais) servidor DNS
local
– Para descobrir, basta acessar os detalhes da conexão no
Windows ou Linux...
– DNS “abertos” surgiram como alternativa aos DNS locais
dos ISPs (OpenDNS, Google Public DNS...)
• Quando um usuário faz uma pergunta ao
DNS, a pergunta é enviada para o DNS local
– E então encaminhada para dentro da hierarquia
Funcionamento do DNS
• Exemplo
33
22/05/2014
Funcionamento do DNS (hierarquia)
1. Hospedeiro cis.poly.edu primeiramente envia uma
mensagem de consulta ao servidor DNS local
2. O servidor DNS local transmite a mensagem a um
servidor raiz
3. Servidor raiz percebe o sufixo (edu) e retorna uma
lista de IPs contendo servidores DNS TLD,
responsáveis pelo sufixo
4. Servidor de nomes local retransmite a mensagem
de consulta a um servidor DNS TLD
5. TLD percebe o sufixo (umass.edu) e responde com
o servidor de nomes com autoridade
(dns.umass.edu)
6. Por fim, o serv. De nomes com autoridade
responde com o endereço IP de
gaia.cs.umass.edu
Funcionamento do DNS
• 4 mensagens de consulta; 4 de resposta
• Consultas recursivas e iterativas
• Normalmente as consultas seguem esse
padrão
• Nem sempre o servidor DNS TLD conhece o
servidor de nomes com autoridade
– Nesse caso, pode acontecer de ocorrerem 100% de
consultas recursivas
• Como diminuir a quantidade de consultas
DNS??
– Cache DNS!
Cache DNS
• Ideia é reduzir o atraso inserido nas
aplicações, por causa das buscas pelo
endereço IP
– Reduzir a quantidade de consultas DNS
• Quando um servidor DNS recebe uma
resposta DNS, o servidor armazena essas
informações por um período determinado
– Normalmente servidores locais guardam por 2 dias
• Com o cache, o servidor local pode retornar
o IP imediatamente, sem necessidade de
consultar nos outros servidores
34
22/05/2014
Registro DNS
• Mensagem de resposta carrega um registro
• Consiste em uma tupla:
(Name, Value, Type, TTL)
• TTL é o tempo de vida útil do registro
• Exemplo (ignorando TTL):
(relay1.bar.foo.com, 145.37.93.126,A)
• Type=A significa que Name é um hostname e Value é um
IP
• Type‘s:
– NS (Name é um domínio, Value um servidor DNS com autoridade),
– CNAME (nome canônico)
– MX (Value é um nome canônico e seu apelido está
em Name)
DNS na prática
• Como obter um endereço IP?
– nslookup
– Utilizando API de programação (java InetAddress, JNDI)
• Como os endereços são inseridos no DNS??
Quem mantém o DNS??
– Através de entidades registradoras
– Registram domínios nos bancos de dados do DNS (e
cobra uma taxa)
– No Brasil:
• A. Telecom S/A
• Locaweb Serviços de Internet S/A
• ...
Aplicações P2P
• Aplicações vistas até agora
– Todas na arquitetura cliente/servidor
• P2P (Peer-to-Peer): Pares se conectam
diretamente entre si
• Com P2P há dependência mínima (se
houver) de servidores funcionais
35
22/05/2014
Aplicações P2P
• Segurança como principal problema
• Administração é descentralizada: mais difícil
de gerenciar
• Aplicações P2P
– Distribuição de arquivos: BitTorrent
– Telefonia P2P da internet: Skype
Distribuição de arquivos P2P
• Cada Par pode redistribuir qualquer parte
de um arquivo para outros pares
– Auxiliando no processo de distribuição
• Arquiteturas P2P possuem autoescalabilidade
– Cada par aumenta a demanda por arquivos, mas
também aumenta a capacidade de redistribuição
• Protocolo P2P mais popular: BitTorrent
BitTorrent
• Normalmente, os blocos dos arquivos tem
tamanho igual de 256 Kbytes
• Torrent: coleção de pares que participam da
distribuição de determinado arquivo
• Quando um novo par “chega” ao torrent, ele
se registra com o rastreador
– Assim o rastreador mantem registro dos pares do
torrent
36
22/05/2014
BitTorrent
BitTorrent
• Quais blocos solicitar
– Técnica rarest first (o mais raro primeiro): Blocos mais
raros dentre os seus vizinhos, para proporcionar maior
rapidez na redistribuição desses blocos mais raros
• Quais pedidos atender
– A faz identificação de 4 pares com maior taxa (pares
“unchoked”)
– Novo vizinho B aleatoriamente escolhido (“optimistically
unchoked”) para envio de dados (a cada 30 segundos)
– Se A e B estão “satisfeitos” com a troca, A adiciona B
em sua lista de 4 pares (e B adiciona A)
– A prioridade é dada a vizinhos que fornecem
dados com a maior taxa de upload
Aplicações P2P
• Métodos de consulta de arquivo para P2P
– Diretório centralizado
– Inundação de consultas
37
22/05/2014
Diretório Centralizado
• Troca de arquivos se dá diretamente entre
os pares
Diretório Centralizado
• Depende da estrutura do servidor
– Pode acarretar em um gargalo de desempenho
• Violação dos direitos autorais
Inundação de consultas
• Gnutella: aplicação de compartilhamento de
arquivos
• Abordagem completamente distribuída
• Não utiliza servidor centralizado
• Formam uma rede de sobreposição
38
22/05/2014
Inundação de consultas
Inundação de consultas
• No Gnutella, pares enviam mensagens aos
pares próximos
• Conexões TCP já existentes montando a
rede de sobreposição
• Mensagem é retransmitida para cada
vizinho
– Inundação de consultas na rede!
• Quando o arquivo é encontrado, forma-se
uma conexão direta entre os pares (fora da
rede de sobreposição)
– Objetos transferidos com HTTP!
Inundação de consultas
• Muitas consultas: tráfego significativo na
rede
• Solução parcial: inundação de escopo
limitado
• Inundação com esse controle era limitada a
um campo de pares.
– Ao chegar no limite, o par não retransmitia a consulta,
reduzindo o tráfego (mas o arquivo poderia nunca ser
encontrado!)
39
22/05/2014
Skype
• Serviços de mensagens instantâneas
– Pares se comunicam em tempo real
• Aplicações:
– Telefonia de PC para telefone
– Telefone para PC
– Videoconferência PC a PC
Skype
• Skype usa técnicas P2P de diversas formas
– Vão além da distribuição de conteúdo e
compartilhamento de arquivos
• Protocolos proprietários, dados
criptografados
Skype – Funcionamento geral
• Nós no Skype organizados em uma rede
sobreposta
– Classificados em pares “Superpar” ou par
comum
• Como é feita a descoberta de pares?
• Skype mantém um índice que mapeia
usuários a endereços IP
– Índice é distribuído entre os Superpares
• Quando há uma chamada de A para B, o
cliente Skype de A procura o índice
distribuído para determinar o
endereço IP de B
40
22/05/2014
RESUMO
• Desenvolvimento de aplicações de rede
requer
– software que execute em sistemas finais diferentes
– Escolha da arquitetura (cliente-servidor, P2P)
• Socket é a interface entre o processo da
camada de aplicação e o protocolo da
camada de transporte
• Serviços da camada de transporte podem
ser
– Transferência confiável, Segurança, Vazão, Temporização
– Apenas os dois primeiros são disponíveis
na Internet
RESUMO
• Protocolo HTTP: protocolo da Web
– Cliente-servidor
– Cliente solicita documentos, servidor responde
– Protocolo simples, sem estado
• Cookies permitem o monitoramento das
informações de usuário
• Comando GET Condicional verifica se
objetos estão desatualizados no proxy
• FTP: protocolo de transferência de arquivos
– Conexão de controle e conexão de dados
RESUMO
• SMTP: protocolo de envio de emails
– Utiliza TCP, envia mensagens entre os servidores de correio
– POP3 e IMAP (e HTTP) como protocolos de acesso aos
emails
• DNS: traduz nome de hospedeiro para IP
– Banco de dados distribuído
– Protocolo que fornece o serviço de consultas ao banco de
dados
• Aplicações P2P: conexão direta entre pares
comunicantes
– BitTorrent, Skype
• Consulta por diretório centralizado ou por
Inundação de consultas
41
22/05/2014
Para Casa
• Leitura do cap. 2 (Livro
do Kurose)
• Lista de Exercícios 2
(Camada de Aplicação)
Bibliografia
1. Kurose, James F.; Ross, Keith W.; Redes
de Computadores e a Internet
(preferencialmente a 5ª Edição). São
Paulo, SP: Pearson Addison Wesley, 2010.
2. Tanenbaum, Andrew S. Redes de
computadores (3ª edição) Rio de Janeiro,
RJ : Campus, 1997.
42
Download

REDES DE COMPUTADORES Camada de Aplicação