Você está na página 1de 10

21/5/2010

Camada de aplicao

Algumas aplicaes de rede

5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP

E-mail Web Mensagem instantnea Login remoto P2P file sharing Jogos de rede multiusurio Streaming stored videoclipes Telefonia via Internet Videoconferncia em tempo real Computao paralela massiva

2-1

2-2

Criando uma nova aplicao de rede


Escrever programas que Executem sobre diferentes sistemas finais e Se comuniquem atravs de uma rede. Ex.: Web software de servidor Web se comunicando com software do browser Nenhum software escrito para dispositivos no ncleo da rede Dispositivos do ncleo da rede no trabalham na camada de aplicao Esta estrutura permite um rpido desenvolvimento de aplicao

Camada de aplicao

5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP

2-3

2-4

Arquiteturas de aplicao

Arquitetura cliente-servidor
Servidor: Hospedeiro sempre ativo Endereo IP permanente Fornece servios solicitados pelo cliente
Clientes: Comunicam-se com o servidor Podem ser conectados intermitentemente Podem ter endereo IP dinmico No se comunicam diretamente uns com os outros

Cliente-servidor Peer-to-peer (P2P) Hbrida de cliente-servidor e P2P

2-5

2-6

21/5/2010

Arquitetura P2P pura


Nem sempre no servidor Sistemas finais arbitrrios comunicam-se diretamente Pares so intermitentemente conectados e trocam endereos IP Ex.: Gnutella Altamente escalveis mas difceis de gerenciar

Hbrida de cliente-servidor e P2P

Instant messaging Bate-papo entre dois usurios P2P Deteco/localizao centralizada de presena: Usurio registra seu endereo IP com o servidor central quando fica on-line Usurio contata o servidor central para encontrar endereos IP dos vizinhos

2-7

2-8

Comunicao de processos

Sockets

Processo: programa executando num hospedeiro Dentro do mesmo hospedeiro: dois processos se comunicam usando comunicao interprocesso (definido pelo OS) Processos em diferentes hospedeiros se comunicam por meio de troca de mensagens Processo cliente: processo que inicia a comunicao Processo servidor: processo que espera para ser contatado Nota: aplicaes com arquiteturas P2P possuem processos cliente e processos servidor

Um processo envia/recebe mensagens para/de seu socket O socket anlogo 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 recepo

2-9

2 - 10

Processos de endereamento

O protocolo da camada de aplicao define:

Para um processo receber mensagens, ele deve ter um identificador Um hospedeiro possui um nico endereo IP de 32 bits P.: O endereo IP do hospedeiro onde o processo est executando suficiente para identificar o processo? R.: No, muitos processos podem estar em execuo no mesmo hospedeiro O identificador inclui o endereo IP e o nmero da porta associada ao processo no hospedeiro Exemplos de nmeros de porta: Servidor HTTP: 80 Servidor de Correio: 25

Tipo das mensagens trocadas, mensagens de requisio e resposta Sintaxe dos tipos de mensagem: os campos nas mensagens e como so delineados Semntica dos campos, ou seja, significado da informao nos campos Regras para quando e como os processos enviam e respondem s mensagens Protocolos de domnio pblico: Definidos nas RFCs Recomendados para interoperabilidade Ex.: HTTP, SMTP Protocolos proprietrios: Ex.: KaZaA

2 - 11

2 - 12

21/5/2010

De qual servio de transporte uma aplicao necessita?

Requisitos de transporte de aplicao comuns

Perda de dados Algumas aplicaes (ex.: udio) podem tolerar alguma perda Outras aplicaes (ex.: transferncia de arquivos, telnet) exigem transferncia de dados 100% confivel Temporizao Algumas aplicaes (ex.: telefonia Internet, jogos interativos) exigem baixos atrasos para serem efetivos Banda passante Algumas aplicaes (ex.: multimdia) exigem uma banda mnima para serem efetivas Outras aplicaes (aplicaes elsticas) melhoram quando a banda disponvel aumenta

Aplicao file transfer e-mail Web documents real-time udio/vdeo stored udio/vdeo jogos interativos e-business

Perdas sem perdas sem perdas tolerante tolerante tolerante tolerante sem perda

Banda elstica elstica elstica udio: 5 Kb-1 Mb vdeo:10 Kb-5 Mb igual anterior kbps elstica

Sensvel ao atraso no no no sim, 100s mseg sim, segundos sim, 100s mseg sim

2 - 13

2 - 14

Servios dos protocolos de transporte da Internet

Aplicao e protocolos de transporte da Internet


Protocolo de aplicao smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] RTP ou proprietrio (ex.: RealNetworks) NSF RTP ou proprietrio (ex.: Vocaltec)

Servio TCP: Orientado conexo: conexo requerida entre processos cliente e servidor Transporte confivel entre os processos de envio e recepo Controle de fluxo: o transmissor no sobrecarrega o receptor Controle de congestionamento: protege a rede do excesso de trfego No oferece: garantias de temporizao e de banda mnima Servio UDP: Transferncia de dados no confivel entre os processos transmissor e receptor No oferece: estabelecimento de conexo, confiabilidade, controle de fluxo e de congestionamento, garantia de temporizao e de banda mnima

Aplicao e-mail acesso de terminais remotos Web transferncia de arquivos streaming multimdia servidor de arquivos remoto telefonia Internet

Protocolo de transporte TCP TCP TCP TCP UDP TCP ou UDP tipicamente UDP

2 - 15

2 - 16

Camada de aplicao

Web e HTTP
Primeiro alguns jarges Pgina Web consiste de objetos Objeto pode ser arquivo HTML, imagem JPEG, Java applet, arquivo de udio, A pgina Web consiste de arquivo-HTML base, que inclui vrios objetos referenciados Cada objeto endereado por uma URL Exemplo de URL:

5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP

www.someschool.edu/someDept/pic.gif
Nome do hospedeiro
2 - 17 2 - 18

Nome do caminho

21/5/2010

Viso geral do HTTP


HTTP: hypertext transfer protocol Protocolo da camada de aplicao da Web Modelo cliente/servidor Cliente: browser que solicita, recebe e apresenta objetos da Web Servidor: envia objetos em resposta a pedidos HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068

Viso geral do HTTP


Utiliza TCP: Cliente inicia conexo TCP (cria socket) para o servidor na porta 80 Servidor aceita uma conexo TCP do cliente mensagens HTTP (mensagens do protocolo de camada de aplicao) so trocadas entre o browser (cliente HTTP) e o servidor Web (servidor HTTP) A conexo TCP fechada HTTP stateless O servidor no mantm informao sobre os pedidos passados pelos clientes

2 - 19

2 - 20

Conexes HTTP

HTTP persistente
HTTP persistente Servidor deixa a conexo aberta aps enviar uma resposta Mensagens HTTP subseqentes entre o mesmo cliente/servidor so enviadas pela conexo Persistente sem pipelining: O cliente emite novas requisies apenas quando a resposta anterior for recebida Um RTT para cada objeto referenciado Persistente com pipelining: Padro no HTTP/1.1 O cliente envia requisies assim que encontra um objeto referenciado To pequeno como um RTT para todos os objetos referenciados

HTTP no persistente No mximo, um objeto enviado sobre uma conexo TCP O HTTP/1.0 utiliza HTTP no persistente HTTP persistente Mltiplos objetos podem ser enviados sobre uma conexo TCP entre o cliente e o servidor O HTTP/1.1 utiliza conexes persistentes em seu modo padro

2 - 21

2 - 22

Estado usurio-servidor: cookies


A maioria dos grandes sites Web utiliza cookies Quatro componentes: 1) Linha de cabealho do cookie na mensagem HTTP response 2) Linha de cabealho de cookie na mensagem HTTP request 3) Arquivo de cookie mantido no hospedeiro do usurio e manipulado pelo browser do usurio 4) Banco de dados backend no site Web Exemplo: Susan acessa a Internet sempre do mesmo PC Ela visita um site especfico de e-commerce pela primeira vez Quando a requisio HTTP inicial chega ao site, este cria um ID nico e uma entrada no banco de dados backend para este ID

Cookies
O que os cookies podem trazer: Autorizao Cartes de compra Recomendaes Estado de sesso do usurio (Web e-mail) ASIDE Cookies e privacidade: Cookies permitem que sites saibam muito sobre voc Voc pode fornecer nome e e-mail para os sites Mecanismos de busca usam redirecionamento e cookies para saberem mais sobre voc Companhias de propaganda obtm informaes por meio dos sites

2 - 23

2 - 24

21/5/2010

Web caches (proxy server)


Objetivo: atender o cliente sem envolver o servidor Web originador da informao Usurio configura o browser: acesso Web feito por meio de um proxy Cliente envia todos os pedidos HTTP para o Web cache Se o objeto existe no Web cache: Web cache retorna o objeto Ou o Web cache solicita objeto do servidor original e ento envia o objeto ao cliente

Mais sobre Web caching


O cache atua tanto no servidor como no cliente Tipicamente, o cache instalado pelo ISP (universidade, empresa, ISP residencial) Por que Web caching? Reduz o tempo de resposta para a requisio do cliente Reduz o trfego num enlace de acesso de uma instituio

2 - 25

2 - 26

Camada de aplicao

FTP: o protocolo de transferncia de arquivos

5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP Transferncia de arquivos de e para o computador remoto Modelo cliente servidor Cliente: lado que inicia a transferncia (seja de ou para o lado remoto) Servidor: hospedeiro remoto FTP: RFC 959 FTP servidor: porta 21
2 - 27 2 - 28

Camada de aplicao
5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP

Correio eletrnico
Trs componentes principais: Agentes de usurio Servidores de correio Simple mail transfer protocol: SMTP Agente de usurio leitor de correio Composio, edio, leitura de mensagens de correio Ex.: Eudora, Outlook. Mensagens de entrada e de sada so armazenadas no servidor

2 - 29

2 - 30

21/5/2010

Correio eletrnico: servidores de correio


Servidores de correio Caixa postal contm mensagens que chegaram (ainda no lidas) para o usurio Fila de mensagens contm 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

Cenrio: Alice envia mensagem para Bob

1) Alice usa o agente de usurio (UA) para compor a mensagem e para bob@someschool.edu 2) O agente de usurio 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 conexo TCP com o servidor de correio do Bob. 4) O cliente SMTP envia a mensagem de Alice pela conexo TCP. 5) O servidor de correio de Bob coloca a mensagem na caixa de correio de Bob. 6) Bob invoca seu agente de usurio para ler a mensagem.

2 - 31

2 - 32

Protocolos de acesso ao correio

POP3 (mais) e IMAP

SMTP: entrega e armazena no servidor do destino Protocolo de acesso: recupera mensagens do servidor POP: Post Office Protocol [RFC 1939] Autorizao (agente <-->servidor) e download IMAP: Internet Mail Access Protocol [RFC 1730] Mais recursos (mais complexo) Manipulao de mensagens armazenadas no servidor HTTP: Hotmail, Yahoo! Mail etc.

Mais sobre POP3 O exemplo anterior usa o modo download-and-delete Bob no pode reler o e-mail se ele trocar o cliente download-and-keep: cpias das mensagens em clientes diferentes POP3 stateless atravs das sesses IMAP Mantm todas as mensagens em um lugar: o servidor Permite que o usurio organize as mensagens em pastas IMAP mantm o estado do usurio atravs das sesses: Nomes das pastas e mapeamentos entre os IDs da mensagem e o nome da pasta

2 - 33

2 - 34

Camada de aplicao

DNS: Dominain Name System


Pessoas: muitos identificadores: RG, nome, passaporte Internet hospedeiros, roteadores: Endereos IP (32 bits) - usados para enderear datagramas nome, ex.: gaia.cs.umass.edu - usados por humanos P.: Relacionar nomes com endereos IP? Domain Name System: Base de dados distribuda implementada numa hierarquia de muitos servidores de nomes Protocolo de camada de aplicao hospedeiro, roteadores se comunicam com servidores de nomes para resolver nomes (translao nome/endereo) Nota: funo interna da Internet, implementada como protocolo da camada de aplicao Complexidade na borda da rede

5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP

2 - 35

2 - 36

21/5/2010

DNS: servidores de nomes raiz

So contatados pelos servidores de nomes locais que no podem resolver um nome Servidores de nomes raiz: Buscam servidores de nomes autorizados se o mapeamento do nome no for conhecido Conseguem o mapeamento Retornam o mapeamento para o servidor de nomes local

Servidores TLD e autoritrios

Servidores top-level domain (TLD): responsveis pelos domnios com, org, net, edu etc. e todos os domnios top-level nacionais uk, fr, ca, jp. Network Solutions mantm servidores para o TLD com TLD Educause para o TLD edu Servidores DNS autorizados: servidores DNS de organizaes, provem nome de hospedeiro autorizado para mapeamentos IP para servidores de organizaes (ex.: Web e mail). Podem ser mantidos por uma organizao ou provedor de servios

Existem 13 servidores de nomes raiz no mundo

2 - 37

2 - 38

Servidor de nomes local

Exemplo

No pertence estritamente a uma hierarquia Cada ISP (ISP residencial, companhia, universidade) possui um Tambm chamado de servidor de nomes default Quando um hospedeiro faz uma pergunta a um DNS, a pergunta enviada para seu servidor DNS local Age como um proxy, encaminhando as perguntas para dentro da hierarquia O hospedeiro em cis.poly.edu quer o endereo IP para gaia.cs.umass.edu

2 - 39

2 - 40

Consultas recursivas
Consulta recursiva: Transfere a tarefa de resoluo do nome para o servidor de nomes consultado Consulta encadeada: Servidor contatado responde com o nome de outro servidor de nomes para contato Eu no sei isto, mas pergunte a este servidor

DNS: armazenando e atualizando registros

Uma vez que um servidor de nomes apreende um mapeamento, ele armazena o mapeamento num registro do tipo cache Registros do cache tornam-se obsoletos (desaparecem) depois de um certo tempo Servidores TLD so tipicamente armazenados em cache nos servidores de nome locais Mecanismos de atualizao e notificao esto sendo projetados pelo IETF RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html

2 - 41

2 - 42

21/5/2010

Camada de aplicao

Compartilhamento de arquivos P2P

5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP

Exemplo Alice executa a aplicao cliente P2P em seu notebook intermitentemente, conecta-se Internet; obtm novos endereos IP para cada conexo pede por Hey Jude a aplicao exibe outros pares que possuem uma cpia de Hey Jude Alice escolhe um dos pares, Bob o arquivo copiado do PC de Bob para o notebook de Alice: HTTP enquanto Alice faz o download, outros usurios fazem upload de Alice o par de Alice tanto um cliente Web como um servidor Web transiente Todos os pares so servidores = altamente escalveis!

2 - 43

2 - 44

P2P: diretrio centralizado

P2P: problemas com diretrio centralizado

Projeto original Napster 1) Quando um par se conecta, ele informa ao servidor central: Endereo IP Contedo 2) Alice procura por Hey Jude 3) Alice requisita o arquivo de Bob Transferncia de arquivo descentralizada, mas a localizao de contedo altamente centralizada Ponto nico de falhas Gargalo de desempenho Infrao de copyright

2 - 45

2 - 46

Query flooding: Gnutella

Gnutella: protocolo

Totalmente distribudo Sem servidor central Protocolo de domnio pblico Muitos clientes Gnutella implementando o protocolo

Mensagem de consulta (query) enviada pelas conexes TCP existentes Os pares encaminham a mensagem de consulta QueryHit (encontro) enviado pelo caminho reverso

Escalabilidade: flooding de alcance limitado


2 - 47 2 - 48

21/5/2010

Camada de aplicao

Programao de sockets com TCP

5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP

Socket: uma porta entre o processo de aplicao e o protocolo de transporte fim-a-fim (UDP ou TCP) Servio TCP: transferncia confivel de bytes de um processo para outro

2 - 49

2 - 50

Jargo stream

Programao de sockets com TCP


Exemplo de aplicao cliente-servidor: 1) Cliente l linha da entrada-padro do sistema (inFromUser stream), envia para o servidor via socket (outToServer stream) 2) Servidor l linha do socket 3) Servidor converte linha para letras maisculas e envia de volta ao cliente 4) Cliente l a linha modificada atravs do (inFromServer stream)

Um stream uma seqncia de caracteres que fluem para dentro ou para fora de um processo Um stream de entrada agregado a alguma fonte de entrada para o processo, ex.: teclado ou socket Um stream de sada agregado a uma fonte de sada, ex.: monitor ou socket

Programao de sockets com TCP


2 - 51 2 - 52

Camadas de aplicao

Programao de sockets com UDP


UDP: no h conexo entre o cliente e o servidor No existe apresentao Transmissor envia explicitamente endereo IP e porta de destino em cada mensagem Servidor deve extrair o endereo IP e porta do transmissor de cada datagrama recebido UDP: dados transmitidos podem ser recebidos fora de ordem ou perdidos

5.1 Princpios de aplicaes de rede 5.2 Web e HTTP 5.3 FTP 5.4 Correio eletrnico SMTP, POP3, IMAP 5.5 DNS 5.6 Compartilhamento de arquivos P2P 5.7 Programao de socket com TCP 5.8 Programao de socket com UDP

Ponto de vista da aplicao UDP fornece a transferncia no confivel de grupos de bytes (datagramas) entre o cliente e o servidor

2 - 53

2 - 54

21/5/2010

Exemplo: cliente Java (UDP)

Socket UDP

2 - 55

10