Redes de Computadores
Camada de Aplicação
Profa. Priscila Solís Barreto
Criando uma nova aplicação
de rede
Escrever programas que
• Executem sobre diferentes
sistemas finais e
• Se comuniquem através de uma
rede.
• Por exemplo, Web – software de
servidor Web se comunicando
com software do browser
• Os dispositivos do núcleo da
rede não trabalham na camada
de aplicação
• Esta estrutura permite um rápido
desenvolvimento de aplicação
Arquiteturas de aplicação
•
Cliente-servidor
• Peer-to-peer (P2P)
• Híbrida de cliente-servidor e P2P
Arquitetura cliente-servidor
Servidor:
• Hospedeiro sempre ativo
• Endereço IP permanente
• Fornece serviços solicitados
pelo cliente
Clientes:
• Comunicam-se com o servidor
• Podem ser conectados
intermitentemente
• Podem ter endereço IP dinâmico
• Não se comunicam diretamente
uns com os outros
Arquitetura cliente-servidor
Exemplos de aplicações que utilizam arquitetura clientesevidor:
• • • • • WEB
Transferência de arquivos
Login remoto
Email
Blogs
Arquitetura P2P
• Nem sempre há um servidor
• Sistemas finais arbitrários comunicamse diretamente
• Pares são intermitentemente
conectados e podem trocar seus
endereços IP cada vez que forem
ligados
• Ex.: Emule, Gnutella
Arquitetura P2P
• Altamente escaláveis mas difíceis
de gerenciar :
Milhões de pares podem participar da
comunidade de compartilhamento de
arquivos, sendo que cada um deles
funciona como um servidor e contribui
com recursos para a comunidade.
Cada par adicional não apenas aumenta a demanda,
mas também aumenta a capacidade de serviço. Híbrida de cliente-servidor
e P2P
Exemplo : Napster – Extinto – Compartilhamento de arquivos MP3
• Transferência de arquivo P2P - Arquivos eram trocados diretamente
entre pares.
• Busca centralizada de arquivos: Um par consultava um servidor central
para determinar quais pares que estavam em funcionamento tinham
um arquivo MP3 desejado.
• Conteúdo de registro dos pares no servidor central
• Consulta de pares no mesmo servidor central para localizar o conteúdo
Híbrida de cliente-servidor
e P2P
Instant messaging
• Bate-papo entre dois usuários é P2P - O texto enviado entre dois
usuários não passa pelo servidor.
• Detecção/localização centralizada de presença:
• Usuário registra seu endereço IP com o servidor central quando fica online
• Usuário contata o servidor central para encontrar endereços IP dos
amigos on-line.
Comunicação de processos
• Programas que rodam em vários sistemas finais comunicamse por processos.
• Quando os processos estão rodando no mesmo sistema final,
eles comunicam-se entre si usando comunicação
interprocessos, cujas regras são determinadas pelo sistema
operacional.
Comunicação de processos
Processo: programa executando num hospedeiro
• Dentro do mesmo hospedeiro: dois processos se comunicam usando
comunicação interprocesso (definido pelo Sistema Operacional)
• Processos em diferentes hospedeiros se comunicam por meio de
troca de mensagens
• Processo cliente: processo que inicia a comunicação
• Processo servidor: processo que espera para ser contatado
Comunicação de processos
Processo: programa executando num hospedeiro
• Por exemplo, na aplicação Web, o processo browser de um cliente
troca mensagens com o processo de um servidor Web.
• Em um sistema de compartilhamento de arquivos P2P, um arquivo é
transferido de um processo que está em um par para outro que está
em outro par.
Sockets
• Um processo envia/recebe
mensagens para/de seu
socket.
• O socket é análogo a uma
porta.
• O processo de envio
empurra a mensagem para fora
da porta.
• O processo de envio confia
na infra-estrutura de
transporte no outro lado da
porta que leva a mensagem
para o socket no processo
de recepção.
• É também denominado API (Interface de Programação da Aplicação): (1)
escolha do protocolo de transporte; (2) habilidade para fixar poucos
parâmetros (Tamanho do buffer e segmentos).
Camada de aplicação - Sockets
• É também denominado API (Interface de Programação da
Aplicação):
• Os únicos controles que o desenvolvedor da aplicação tem do
lado da camada de transporte são:
• (1) escolha do protocolo de transporte;
• (2) Talvez a habilidade para fixar poucos parâmetros
(Tamanho do buffer e segmentos).
Camada de aplicação-Processos
de endereçamento
• Para um processo receber mensagens, ele deve ter um identificador.
• Um hospedeiro possui um único endereço IP de 32 bits (IPV-4).
• O endereço IP do hospedeiro onde o processo está executando é suficiente
para identificar o processo?
• Não, muitos processos podem estar em execução no mesmo hospedeiro.
• O identificador inclui o endereço IP e o número da porta associada ao
processo no hospedeiro
• Exemplos de números de porta:
• Servidor HTTP: 80
• Servidor de Correio (SMTP) : 25
• O protocolo da camada de aplicação
Um protocolo de camada de aplicação é apenas um
pedaço de aplicação da rede.
Exemplo:
1- Aplicação WEB e o protocolo de aplicação WEB, HTTP.
Este define o formato e a seqüência das mensagens que
são passadas entre o browser e o servidor WEB.
2- Correio eletrônico e o protocolo SMTP (RFC – 5321).
Protocolo da camada de aplicação
• Tipo das mensagens trocadas, mensagens de requisição e resposta.
• Sintaxe dos tipos de mensagem: os campos nas mensagens e como são
delineados.
• Semântica dos campos, ou seja, significado da informação nos campos.
• Regras para quando e como os processos enviam e respondem às mensagens.
Protocolos de domínio público:
• Definidos nas RFCs - IETF
• Recomendados para interoperabilidade
• Ex.: HTTP (RFC 2616), SMTP (5321)
Protocolos proprietários:
• Ex.: KaZaA
Camada de aplicação
De qual serviço de transporte uma aplicação necessita?
TCP
UDP
Camada de aplicação
Os serviços podem ser classificados segundo quatro
dimenções:
• • • • Transferência confiável de dados ( TCP )
Vazão (TCP e UDP não implementam)
Temporização (TCP e UDP não implementam)
Segurança (SSL (camada de sockets seguros
implementam)
Camada de aplicação
Transferência confiável de dados: Perda de dados
• Algumas aplicações (ex.: áudio) podem tolerar alguma perda.
• Outras aplicações (ex.: transferência de arquivos, telnet) exigem
transferência de dados 100% confiável.
Camada de aplicação
Vazão : Banda passante (TCP e UDP não implementam este serviço)
• Algumas aplicações (ex.: multimídia) exigem uma banda mínima para
serem “efetivas”.
• Exemplo: Se uma aplicação de telefonia por Internet codifica voz a 32
bits/s, ela precisa enviar dados para a rede e fazer com que sejam
entregues na aplicação receptora a essa mesma taxa.
• Outras aplicações (“aplicações elásticas- Correio eletrônico, transferência
de arquivos”) melhoram quando a banda disponível aumenta.
Camada de aplicação
Segurança (Fornecido pela camada de aplicação)
• Codificação e decodificação de dados
• Autenticação do ponto terminal.
• Aperfeiçoamento do TCP : SSL – Camada de Sockets Seguros
• Oferece serviços de segurança processo a processo incluindo,
codificação, integridade dos dados e autenticação do ponto de
chegada.
• o SSL não é um terceiro protocolo no mesmo nível do TCP e do UDP,
mas um aperfeiçoamento do TCP implementado na camada de
aplicação.
Camada de aplicação
Serviço da camada de transporte: TCP
Serviço Orientado à conexão
• Apresentação
• Envio full-duplex (simultânea)
Serviço confiável de transporte
• Quando um lado da aplicação passa uma
cadeia de bytes para dentro de um socket, pode
contar com o TCP para entregar a mesma cadeia
de dados ao socket receptor sem falta de bytes
nem bytes duplicados.
Camada de aplicação
Serviço da camada de transporte : TCP
TCP
Serviço Orientado à conexão
• Apresentação
• Envio full-duplex (simultânea)
Serviço confiável de transporte
• Quando um lado da aplicação passa uma
cadeia de bytes para dentro de um socket, pode
contar com o TCP para entregar a mesma cadeia
de dados ao socket receptor sem falta de bytes
nem bytes duplicados.
Camada de aplicação
Serviço do TCP
• O TCP inclui um mecanismo de controle de congestionamento,voltado
ao bem-estar geral da Internet e não ao benefício direto dos processos
comunicantes. Este mecanismo limita a capacidade de transmissão de
um processo quando a rede está congestionada.
• A limitação da velocidade de transmissão pode ter um efeito muito
prejudicial sobre aplicações de áudio e vídeo em tempo real que
imponham uma limitação de largura de banda mínima.
Camada de aplicação
Serviço TCP:
• Orientado à conexão: conexão requerida entre processos cliente e servidor
• Apresentação
• Transporte confiável: entre os processos de envio e recepção
• Controle de congestionamento: protege a rede do excesso de tráfego
Não oferece: garantias de temporização e de banda mínima. Ou seja, o TCP
garante a entrega de todos os dados, mas não dá nehuma garantia quanto à
velocidade de entrega ou aos atrasos experimentados.
Serviço UDP:
• Transferência de dados não confiável entre os processos transmissor e receptor
• Não oferece: estabelecimento de conexão, confiabilidade, controle de
congestionamento, garantia de temporização e de banda mínima.
P.: Por que ambos? Por que existe o UDP?
Camada de aplicação
Aplicação
acesso de terminais remotos
Web
transferência de arquivos
telefonia Internet
Correio eletrônico
Protocolo de
aplicação
Protocolo de
transporte
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
RTP ou proprietário
(por exemplo, Skype)
TCP
TCP
TCP
tipicamente UDP
SMTP (RFC 5321)
TCP
Camada de aplicação : WEB e HTTP
• Página Web consiste de objetos
• Objeto pode ser arquivo HTML, uma imagem JPEG, uma imagem
GIF, applet Java, arquivo de áudio,…
• A página Web consiste de arquivo- base HTML, que inclui vários
objetos referenciados.
• Cada objeto é endereçado por uma URL
• Exemplo de URL:
Web e HTTP
• O protocolo da camada de aplicação HTTP define como
cliente WEB os browsers (navegadores) requisitam
páginas Web aos servidores WEB (Apache, Microsoft
Internet Information Server).
• Portanto a aplicação WEB consiste em:
• Um padrão para o formato do documento – HTML.
• Browsers Web - Firefox – Microsoft Internet
Explore.
• Servidores WEB- Apache, Microsoft Internet
Information Server.
• Protocolo da Camada de Aplicação – HTTP.
29
Visão geral do HTTP
HTTP: HyperText Transfer Protocol
• Protocolo da camada de aplicação da
Web. Define o formato e a
sequência das mensagens que são
passadas entre o browser e o
servidor Web.
• Modelo cliente/servidor
• Cliente: browser que solicita,
recebe e apresenta objetos da Web
• Servidor: envia objetos em
resposta a pedidos
• HTTP define a estrutura de
menagens e o modo como o
cliente e o servidor as trocam.
• HTTP 1.0: RFC 1945 até 1997
• HTTP 1.1: RFC 2616 a partir de 1998
30
Web e HTTP
HTTP utiliza TCP:
• Cliente inicia conexão TCP (cria socket) para o servidor na
porta 80.
• Servidor aceita uma conexão TCP do cliente.
• mensagens HTTP (mensagens do protocolo de camada de
aplicação) são trocadas entre o browser (cliente HTTP) e o
servidor Web (servidor HTTP).
Web e HTTP
HTTP utiliza TCP:
• A conexão TCP é fechada.
• Vantagem da arquitetura de camadas: O HTTP não precisa
se preocupar com dados perdidos ou com detalhes de como
o TCP recupera a perda de dados ou os reordena dentro da
rede. Esta é tarefa do TCP e dos protocolos das camadas
mais inferiores da pilha de protocolos.
Web e HTTP
HTTP é “um protocolo sem estado”
• O servidor não mantém informação sobre os pedidos passados
pelos clientes
• Se um cliente solicita o mesmo objeto duas vezes em um
intervalo de poucos segundos, o servidor não responde
dizendo que acabou de enviar o objeto; em vez
disso,envia novamente o objeto, pois não armazenou o
estado do solicitação anterior.
Conexões HTTP
HTTP não persistente ( A conexão não persiste para outros objetos)
• No máximo, um objeto é enviado sobre uma conexão TCP
• O HTTP/1.0 utiliza HTTP não persistente
HTTP persistente
• Múltiplos objetos podem ser enviados sobre uma conexão
• TCP entre o cliente e o servidor
• O HTTP/1.1 utiliza conexões persistentes em seu modo padrão
HTTP não persistente
Usuário entra com a URL: www.dominio.br/pagina/home.index
1a. Cliente HTTP inicia conexão
TCP ao servidor HTTP
(processo) em
www.dominio.br Porta 80 é a
default para o servidor HTTP
2. Cliente HTTP envia HTTP request
message (contendo a URL) para
o socket da conexão TCP
Tempo
1b. Servidor HTTP no hospedeiro
www.dominio.br esperando pela
conexão TCP na porta 80.
“aceita” conexão, notificando o
cliente
3. Servidor HTTP recebe mensagem
de pedido, forma response
message contendo o objeto
solicitado (pagina/home.index),
envia mensagem para o socket
HTTP não persistente
4. Servidor HTTP fecha conexão
TCP
Tempo
5. Cliente HTTP recebe
mensagem de resposta
contendo o arquivo html,
apresenta o conteúdo html.
Analisando o arquivo html,
encontra 10 objetos jpeg
referenciados
6. Passos 1-5 são repetidos para
cada um dos 10 objetos jpeg
Note que cada conexão TCP transporta exatamente uma
mensagem de requisição e uma mensagem de resposta. Nesse
exemplo, quando um usuário solicita a página Web, são
geradas 11 conexões TCP.
HTTP não persistente
Para estimar o tempo que transcorre entre a
requisição e o recebimento de um arquivo-base
HTTP por um cliente define-se (Round-Trip time –
RTT ) como tempo de viagem de ida e volta.
Tempo de resposta
Definição de RRT (Round-Trip
Time- Tempo de viagem de
ida e volta: tempo para
enviar um pequeno pacote
que vai do cliente para o
servidor e retorna
Tempo de resposta:
• Um RTT para iniciar a
conexão TCP
• Um RTT para requisição
HTTP e primeiros bytes
da resposta HTTP para
retorno
• Tempo de transmissão de
arquivo
Total = 2RTT+ tempo de transmissão
38
Mensagem HTTP request
• Dois tipos de mensagens HTTP: request, response
• HTTP request message:
Linha de requisição (métodos)
(comandos GET, POST,
HEAD )
Linhas de
cabeçalho
O Browser esta dizendo ao servidor que não
quer usar conexões persistentes: quer que o
servidor feche a conexão após o envio do objeto
requisitado.
GET /somedir/page.html HTTP/1.1
Host: www.dominio.br
Conection: close
User-agent: Mozilla/4.0
Accept-language:fr
O usuário prefere receber uma versão
em francês do objeto, se existir.Caso
contrário receberá o default
39
Mensagem HTTP request
• Dois tipos de mensagens HTTP: request, response
• HTTP request message:
Linha de requisição (métodos)
(comandos GET, POST,
HEAD )
GET /somedir/page.html HTTP/1.1
Host: www.dominio.br
Conection: open
User-agent: Mozilla/4.0
Linhas de
Accept-language:fr
cabeçalho
O usuário prefere receber uma
versão em francês do objeto, se
existir.Caso contrário receberá o
default
Mensagem HTTP request:
formato geral
41
Entrada de formulário
Método Post:
• Página Web freqüentemente inclui entrada de formulário. O usuário
preenche um formulário.Pode-se usar o modo GET também.
• A entrada é enviada para o servidor no corpo da entidade
Método URL – Utiliza o GET:
• Inclue os dados digitados(nos campos dos formulários) no URL
requisitado.Por exemplo, se um formulário usar tiver 2 campos e as
entradas desses campos forem aaaa e bbbb, então a estrutura do URL
será:
www.somesite.com/animalsearch?aaaa&bbbb
• • Utiliza o método GET
• A entrada é enviada no campo de URL da linha de requisição:
Tipos de métodos
HTTP/1.0
• GET
• POST
• HEAD (utilizado para depuração)
• Pede para o servidor deixar o objeto requisitado fora da
resposta
HTTP/1.1
• GET, POST, HEAD
• PUT (edição)
• O Cliente envia o arquivo no corpo da entidade para o caminho
especificado no campo de URL.
• DELETE (edição)
• O cliente apaga o arquivo especificado no campo de URL.
Mensagem HTTP response
Linha de estado
Linhas de
cabeçalho
Dados, ex.:
arquivo html
HTTP/1.1 200 OK
Conection:close (indica que o servidor encerrará a conexão)
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
data data data data data ...
Data e hora em que foi
feito o envio do arquivo
Códigos de status das respostas
Na primeira linha da mensagem de resposta servidor  cliente.
Alguns exemplos de códigos:
200 OK
• Requisição bem-sucedida, objeto requisitado a seguir nesta mensagem
301 Moved permanently
• Objeto requisitado foi movido, nova localização especificada a seguir
nesta mensagem (Location:)
400 Bad request
• Mensagem de requisição não compreendida pelo servidor
404 Not Found
• Documento requisitado não encontrado neste servidor
505 HTTP version not supported
• a versão do protocolo HTTP requisitada não é suportada pelo
servidor.
Caches Web (Servidor Proxy
- Proxy Server)
Objetivo: atender o cliente sem envolver o servidor Web
originador da informação
• Usuário configura o browser:
acesso Web é feito por meio de
um proxy
• Cliente envia todos os pedidos
HTTP para o Cache Web
• Se o objeto existe no Web
cache: Web cache retorna o
objeto
• Ou o Cache Web solicita
objeto do servidor original
e então envia o objeto ao
cliente
Web caches (proxy server) • O cache atua tanto no servidor como no cliente
• Tipicamente, o cache é instalado pelo ISP
(universidade, empresa, ISP residencial).
Por que Caching Web?
• Reduz o tempo de resposta para a requisição do
cliente
• Reduz o tráfego num enlace de acesso de uma
instituição.
• Reduz o custo e o tráfego de dados de uma
instituição à Intenet.
FTP: o protocolo de transferência
de arquivos
• Transferência de arquivos de e para o computador remoto
• Modelo cliente servidor
• Cliente: lado que inicia a transferência (seja de ou para o lado remoto)
• Servidor: hospedeiro remoto
• FTP: RFC 959
• FTP servidor: porta 21
FTP: controle separado, conexões de dados
• Os protocolos FTP e HTTP utilizam o TCP. No entanto, o FTP usa duas
conexões TCP paralelas para transferir um arquivo:
• Uma Conexão de Controle
• Uma Conexão de Dados
FTP: controle separado, conexões
de dados
• Cliente FTP contata o servidor FTP na porta 21 especificando o TCP como
protocolo de transporte.
• Cliente obtém autorização pela conexão de controle.
• Cliente procura o diretório remoto enviando comandos pela conexão de
controle.
50
FTP: controle separado, conexões
de dados
• Quando o servidor recebe um comando para uma
transferência de arquivo, ele abre uma conexão de dados
TCP para o cliente.
• Após a transferência de um arquivo, o servidor fecha a
conexão.
• Servidor abre uma segunda conexão de dados TCP para
transferir outro arquivo.
• Conexão de controle: “fora da banda”.
• Servidor FTP mantém “estado”: diretório atual,
autenticação anterior.
FTP: controle separado, conexões
de dados
• Assim, com o FTP, a conexão de controle permanece
aberta durante toda a sessão do usuário, mas uma nova
conexão de dados é criada para cada arquivo tranferido
dentro de uma sessão.
FTP comandos, respostas
Exemplos de comandos na conexão de controle:
• Envie um texto ASCII sobre canal de controle
• USER username
• PASS password
• LIST retorna listagem do arquivo no diretório atual do servidor
• RETR filename extrai o arquivo do servidor. Ativa o servidor para que
abra uma conexão de dados e envie o arquivo requisitado por esta
conexão.
• STOR filename armazena o arquivo no hospedeiro remoto
FTP comandos, respostas Cada comando é seguido de uma resposta,
que é enviada do servidor ao cliente
Exemplos de códigos de retorno
• Código de status e frase (como no HTTP)
• 331 Username OK, password required
• 125 Conexão de dados já aberta; iniciando transferência
• 425 Não é possível abrir a conexão de dados
• 452 Erro ao escrever o arquivo
Correio eletrônico
SMTP Transfere mensagens de servidores de
correio remetentes para servidores de correio
destinatários.
Três componentes principais:
• Agentes de usuário
• Servidores de correio
• Simple mail transfer protocol:
SMTP
RFC 5321
Agente de usuário
•“leitor de correio”
• Composição, edição, leitura de
mensagens de correio
• Ex.: gmail
Correio eletrônico: servidores
de correio
Servidores de correio
• Caixa postal contém mensagens
que chegaram (ainda não lidas)
para o usuário
• Fila de mensagens contém as
mensagens de correio a serem
enviadas
Protocolo SMTP permite aos
servidores de correio trocarem
mensagens entre si
• Cliente: servidor de correio
que envia
• “Servidor”: servidor de
correio que recebe
Cenário: Alice envia mensagem para Bob
HTTP
1) Alice usa o agente de usuário (UA) para compor a mensagem e enviar “para”
[email protected]
2) O agente de usuário dela 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 do Bob.
4) O cliente SMTP envia a mensagem de Alice pela conexão TCP.
5) O servidor de correio de Bob coloca a mensagem na caixa de correio de Bob.
6) Bob invoca seu agente de usuário para ler a mensagem.
Cenário: Alice envia mensagem
para Bob
HTTP
O STMP não usa servidores de correios intermediários para
enviar a mensagem.
Correio eletrônico: SMTP [RFC 2821]
• Usa TCP para transferência confiável de mensagens de correio do
cliente ao servidor, porta 25
• Transferência direta: servidor que envia para o servidor que recebe
• Três fases de transferência
• Handshaking (apresentação)
• Transferência de mensagens
• Fechamento
• Interação comando/resposta
• Comandos: texto ASCII
• Resposta: código de status e frase
• Mensagens devem ser formatadas em código ASCII de 7 bits
SMTP é um protocolo de envio de informação (push),
não servindo para obter dados.
Protocolos de acesso ao correio
HTTP
• SMTP: entrega e armazena no servidor do destino
• Protocolos de acesso: TRANSFEREM MENSAGENS DO SERVIDOR DE
CORREIO PARA O PC LOCAL
• POP3: Post Office Protocol [RFC 1939]
• Autorização (agente <-->servidor) e download
• Porta 110
• IMAP: Internet Mail Access Protocol [RFC 3501]
• Mais recursos (mais complexo)
• Manipulação de mensagens armazenadas no servidor
• HTTP: Hotmail, Yahoo! Mail etc.
POP3 e IMAP
POP3
• Usa o modo “ler e aapgar” e “ler e guardar”
• Não permite manipular pastas no servidor de correio.
IMAP
• Mantém todas as mensagens em um lugar: o servidor
• Permite que o usuário organize as mensagens em pastas
HTTP
• Meio de enviar e acessar email mais utilizado.
• Lançado pelo Hotmail em meados da década de 1990.
Download

Aula 11: Camada de Aplicação