Professional Documents
Culture Documents
suruagy@cin.ufpe.br
2: Camada de Aplicao
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede 2.2 A Web e o HTTP 2.3 Transferncia de arquivo: FTP 2.4 Correio Eletrnico na Internet 2.5 DNS: o servio de diretrio da Internet
2.7 Programao e
2: Camada de Aplicao
modelos de servio da camada de transporte paradigma cliente servidor paradigma peer-to Criar aplicaes de rede peer programao usando a API de sockets
2: Camada de Aplicao
A Web
Streaming de vdeos
Mensagens
instantneas Login em computador remoto como Telnet e SSH Compartilhamento de arquivos P2P Jogos multiusurios em rede
armazenados (YouTube, Hulu, Netflix) Telefonia por IP (Skype) Videoconferncia em tempo real Busca ... ...
2: Camada de Aplicao
Executam em (diferentes) sistemas finais Comunicam-se atravs da rede p.ex., servidor Web se comunica com o navegador
Dispositivos do ncleo da rede no executam aplicaes dos usurios Aplicaes nos sistemas finais permite rpido desenvolvimento e disseminao
2: Camada de Aplicao
Peer-to-peer (P2P)
2: Camada de Aplicao
Arquitetura cliente-servidor
Servidor: Sempre ligado Endereo IP permanente Escalabilidade com data
centers
Clientes: Comunicam-se com o servidor Podem estar conectados cliente/servidor intermitentemente Podem ter endereos IP dinmicos No se comunicam diretamente com outros clientes
2: Camada de Aplicao 7
Arquitetura P2P
No h servidor sempre ligado Sistemas finais arbitrrios se
peer-peer
comunicam diretamente Pares solicitam servios de outros pares e em troca proveem servios para outros parceiros:
Autoescalabilidade novos pares trazem nova capacidade de servio assim como novas demandas por servios.
Gerenciamento complexo
2: Camada de Aplicao 8
Sockets
Os processos enviam/ recebem mensagens
Processo transmissor envia a mensagem atravs da porta O processo transmissor assume a existncia da infra-estrutura de transporte no outro lado da porta que faz com que a mensagem chegue ao socket do processo receptor
aplicao
processo
transporte rede enlace fsica
socket
aplicao
processo
transporte rede
Internet
enlace
fsica
controlado pelo SO
2: Camada de Aplicao
10
Endereamento de processos
Para que um processo
receba mensagens, ele deve possuir um identificador Cada hospedeiro possui um endereo IP nico de 32 bits P: o endereo IP do hospedeiro no qual o processo est sendo executado suficiente para identificar o processo? Resposta: No, muitos processos podem estar executando no mesmo hospedeiro
o endereo IP quanto os nmeros das portas associadas com o processo no hospedeiro . Exemplo de nmeros de portas:
posteriormente.
2: Camada de Aplicao 11
trocadas:
Sintaxe das mensagens: campos presentes nas mensagens e como so identificados Semntica das msgs: significado da informao nos campos Regras para quando os
Protocolos abertos: definidos em RFCs Permitem a interoperao ex, HTTP e SMTP Protocolos proprietrios: Ex., Skype
arquivos, transaes web) requerem uma transferncia 100% confivel outras (p.ex. udio) podem tolerar algumas perdas
requerem quantia mnima de vazo para serem viveis outras apls (apls elsticas) conseguem usar qq quantia de banda disponvel
Segurana
Criptografia, integridade dos
dados, ...
13
2: Camada de Aplicao
14
Servio UDP:
transferncia de dados no
estrangular remetente quando a rede estiver carregada no prov: garantias temporais ou de banda mnima
controle de congestionamento:
confivel entre processos remetente e receptor no prov: estabelecimento da conexo, confiabilidade, controle de fluxo, controle de congestionamento, garantias temporais ou de banda mnima
orientado a conexo:
15
correio eletrnico acesso terminal remoto Web transferncia de arquivos streaming multimdia
telefonia Internet
2: Camada de Aplicao
16
SSL est na camada de aplicao Aplicaes usam bibliotecas SSL, que falam com o TCP API do socket SSL Senhas em texto aberto enviadas ao socket atravessam a rede criptografadas Vide Captulo 7
2: Camada de Aplicao 17
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede 2.2 A Web e o HTTP 2.3 Transferncia de arquivo: FTP 2.4 Correio Eletrnico na Internet 2.5 DNS: o servio de diretrio da Internet
2.7 Programao e
2: Camada de Aplicao
18
A Web e o HTTP
Primeiro uma reviso... Pginas Web consistem de objetos um objeto pode ser um arquivo HTML, uma imagem JPEG, um applet Java, um arquivo de udio, Pginas Web consistem de um arquivo base HTML que inclui vrios objetos referenciados Cada objeto enderevel por uma URL Exemplo de URL: www.someschool.edu/someDept/pic.gif
nome do hospedeiro
nome do caminho
2: Camada de Aplicao 19
Protocolo HTTP
HTTP: hypertext
transfer protocol
PC executando Explorer
protocolo da camada de
aplicao da Web modelo cliente/servidor cliente: browser que pede, recebe (usando o protocolo HTTP) e visualiza objetos Web servidor: servidor Web envia (usando o protocolo HTTP) objetos em resposta a pedidos
2: Camada de Aplicao
20
(cria socket) ao servidor, porta 80 servidor aceita conexo TCP do cliente mensagens HTTP (mensagens do protocolo da camada de apl) trocadas entre browser (cliente HTTP) e servidor Web (servidor HTTP) encerra conexo TCP
Protocolos que mantm estado so complexos! histria passada (estado) tem que ser guardada Caso caia servidor/cliente, suas vises do estado podem ser inconsistentes, devem ser reconciliadas
2: Camada de Aplicao
Nota
21
Conexes HTTP
HTTP no persistente No mximo um objeto enviado numa conexo TCP
Baixar mltiplos
HTTP persistente Mltiplos objetos podem ser enviados sobre uma nica conexo TCP entre cliente e servidor
2: Camada de Aplicao
22
TCP a servidor http (processo) a www.algumaUniv.br. Porta 80 padro para servidor http.
www.algumaUniv.br espera por conexo TCP na porta 80. aceita conexo, avisando ao cliente
mensagem de pedido de
tempo
http (contendo URL) atravs do socket da conexo TCP. A mensagem indica que o cliente deseja receber o objeto algumDepartamento/inicial. index
2: Camada de Aplicao
23
tempo
2: Camada de Aplicao
24
Inicia a conexo TCP RTT solicita arquivo RTT arquivo recebido tempo tempo tempo para transmitir o arquivo
2: Camada de Aplicao
25
HTTP persistente
Problemas com o HTTP no persistente: requer 2 RTTs para cada objeto SO aloca recursos do hospedeiro (overhead) para cada conexo TCP os browser freqentemente abrem conexes TCP paralelas para recuperar os objetos referenciados HTTP persistente o servidor deixa a conexo aberta aps enviar a resposta mensagens HTTP seguintes entre o mesmo cliente/servidor so enviadas nesta conexo aberta o cliente envia os pedidos logo que encontra um objeto referenciado pode ser necessrio apenas um RTT para todos os objetos referenciados
2: Camada de Aplicao 26
requisio, resposta
2: Camada de Aplicao
27
2: Camada de Aplicao
28
2: Camada de Aplicao
29
Tipos de mtodos
HTTP/1.0 GET POST HEAD
Upload de arquivo
2: Camada de Aplicao
31
Abre conexo TCP para a porta 80 (porta padro do servidor http) a www.ic.uff.br. Qualquer coisa digitada enviada para a porta 80 do www.ic.uff.br
Digitando isto (deve teclar ENTER duas vezes), est enviando este pedido GET mnimo (porm completo) ao servidor http
3. Examine a mensagem de resposta enviada pelo servidor HTTP ! (ou use Wireshark para ver as msgs de pedido/resposta HTTP capturadas)
2: Camada de Aplicao 33
Exemplo:
Suzana acessa a Internet sempre do mesmo PC Ela visita um stio especfico de comrcio eletrnico pela primeira vez Quando os pedidos iniciais HTTP chegam no stio, o stio cria
uma ID nica uma entrada para a ID no BD de retaguarda
2: Camada de Aplicao 34
servidor
servidor resposta usual http + cria a ID 1678 Set-cookie: 1678 para o usurio
msg usual pedido http
cookie: 1678
resposta usual http
cookie: 1678
resposta usual http
Cookies (continuao)
O que os cookies podem obter: Cookies e privacidade: cookies permitem que os autorizao stios aprendam muito carrinhos de compra sobre voc recomendaes voc pode fornecer nome e e-mail para os stios estado da sesso do usurio (Webmail) Como manter o estado: Pontos finais do protocolo: mantm o estado no transmissor/receptor para mltiplas transaes Cookies: mensagens http transportam o estado
2: Camada de Aplicao 36
nota
browser: acessos Web via proxy cliente envia todos pedidos HTTP ao proxy
cliente
Servidor proxy
se objeto estiver no cache do proxy, este o devolve imediatamente na resposta HTTP seno, solicita objeto do servidor de origem, depois devolve resposta HTTP ao cliente
cliente
Servidor de origem
2: Camada de Aplicao 37
cliente quanto como servidor Tipicamente o cache instalado por um ISP (universidade, empresa, ISP residencial)
Para que fazer cache Web? Reduo do tempo de resposta para os pedidos do cliente Reduo do trfego no canal de acesso de uma instituio A Internet cheia de caches permitem que provedores de contedo pobres efetivamente forneam contedo (mas o compartilhamento de arquivos P2P tambm!)
2: Camada de Aplicao 38
Servidores de origem
2: Camada de Aplicao
39
Servidores de origem
2: Camada de Aplicao
40
Servidores de origem
cache institucional
2: Camada de Aplicao 41
GET condicional
Meta: no enviar objeto se
cache
msg de pedido http
If-modified-since: <date>
servidor
objeto no modificado
resposta http
HTTP/1.0 304 Not Modified
servidor: resposta no
resposta http
HTTP/1.1 200 OK
objeto modificado
<data>
2: Camada de Aplicao 42
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede 2.2 A Web e o HTTP 2.3 Transferncia de arquivo: FTP 2.4 Correio Eletrnico na Internet 2.5 DNS: o servio de diretrio da Internet
2.7 Programao e
2: Camada de Aplicao
43
servidor FTP
sistema de arquivos remoto
usurio na estao
para o sistema remoto) servidor: hospedeiro remoto ftp: RFC 959 servidor ftp: porta 21
2: Camada de Aplicao
44
FTP na porta 21, especificando o TCP como protocolo de transporte O cliente obtm autorizao atravs da conexo de controle O cliente consulta o diretrio remoto enviando comandos atravs da conexo de controle Quando o servidor recebe um comando para a transferncia de um arquivo, ele abre uma conexo de dados TCP para o cliente Aps a transmisso de um arquivo o servidor fecha a conexo
cliente FTP
servidor FTP
conexo TCP para transferir outro arquivo Conexo de controle: fora da faixa Servidor FTP mantm o estado: diretrio atual, autenticao anterior
2: Camada de Aplicao 45
arquivos no diretrio atual RETR arquivo recupera (l) arquivo remoto STOR arquivo armazena (escreve) arquivo no hospedeiro remoto
para http) 331 Username OK, password required 125 data connection already open; transfer starting 425 Cant open data connection 452 Error writing file
2: Camada de Aplicao
46
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede 2.2 A Web e o HTTP 2.3 Transferncia de arquivo: FTP 2.4 Correio Eletrnico na Internet 2.5 DNS: o servio de diretrio da Internet
2.7 Programao e
2: Camada de Aplicao
47
Correio Eletrnico
Trs grandes componentes:
agentes de usurio (UA)
servidores de correio
servidor de correio
agente de usurio
SMTP
SMTP
Agente de Usurio SMTP a.k.a. leitor de correio compor, editar, ler mensagens de correio servidor de correio p.ex., Outlook, Thunderbird, cliente de mail do iPhone mensagens de sada e chegando so armazenadas no servidor
servidor de correio
agente de usurio
SMTP
agente de usurio
agente de usurio
agente de usurio
2: Camada de Aplicao
48
mensagens de chegada (ainda no lidas) p/ usurio SMTP fila de mensagens contm mensagens de sada (a serem enviadas) SMTP protocolo SMTP entre servidores de correio para SMTP transferir mensagens de servidor correio de correio cliente: servidor de correio que envia agente de servidor: servidor de usurio correio que recebe agente
de usurio
servidor de correio
agente de usurio
2: Camada de Aplicao
49
cliente ao servidor, porta 25 transferncia direta: servidor remetente ao servidor receptor trs fases da transferncia handshaking (saudao) transferncia das mensagens encerramento interao comando/resposta (como o HTTP e o FTP) comandos: texto ASCII resposta: cdigo e frase de status
Gerncia da Porta 25
http://antispam.br/
2: Camada de Aplicao 51
2: Camada de Aplicao
52
DATA, QUIT
estes comandos permitem que voc envie correio sem usar um cliente (leitor de correio)
2: Camada de Aplicao
54
persistentes SMTP requer que a mensagem (cabealho e corpo) sejam em ASCII de 7-bits servidor SMTP usa CRLF.CRLF para reconhecer o final da mensagem
encapsulado em sua prpria mensagem de resposta SMTP: mltiplos objetos de mensagem enviados numa mensagem de mltiplas partes
2: Camada de Aplicao 55
cabealho
linha em branco
corpo
56
mtodo usado p/ codificar dados tipo, subtipo de dados multimdia, declarao parmetros
From: ana@consumidor.br To: bernardo@doces.br Subject: Imagem de uma bela torta MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data
Dados codificados
2: Camada de Aplicao
57
Tipos MIME
Content-Type: tipo/subtipo; parmetros
Text
Audio
Image
gif
Application
Video
ser processados por um leitor para serem visualizados subtipos exemplos : msword, octet-stream
quicktime
2: Camada de Aplicao 58
Tipo Multipart
From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data --98766789-2: Camada de Aplicao 59
SMTP
SMTP
POP3 ou IMAP
servidor de correio do receptor
agente de usurio
POP: Post Office Protocol [RFC 1939] autorizao (agente <-->servidor) e transferncia IMAP: Internet Mail Access Protocol [RFC 1730] mais comandos (mais complexo) manuseio de msgs armazenadas no servidor HTTP: gmail, Hotmail , Yahoo! Mail, etc.
2: Camada de Aplicao 60
Protocolo POP3
fase de autorizao
comandos do cliente:
S: C: S: C: S: C: S: S: S: C: S: S: C: C: S: S: C: C: S:
+OK POP3 server ready user ana +OK pass faminta +OK user successfully logged list 1 498 2 912 . retr 1 <message 1 contents> . dele 1 retr 2 <message 1 contents> . dele 2 quit +OK POP3 server signing off
2: Camada de Aplicao
on
msgs retr: recupera msg por nmero dele: apaga msg quit
61
nomes das pastas e mapeamentos entre as IDs das mensagens e o nome da pasta
2: Camada de Aplicao 62
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede 2.2 A Web e o HTTP 2.3 Transferncia de arquivo: FTP 2.4 Correio Eletrnico na Internet 2.5 DNS: o servio de diretrio da Internet
2.7 Programao e
2: Camada de Aplicao
63
endereo IP (32 bit) usado p/ enderear datagramas nome, ex., www.yahoo.com - usado por gente
hospedeiros, roteadores, servidores de nomes se comuniquem para resolver nomes (traduo endereo/nome) nota: funo imprescindvel da Internet implementada como protocolo de camada de aplicao complexidade na borda da rede
2: Camada de Aplicao 64
DNS (cont.)
Servios DNS Traduo de nome de hospedeiro para IP Apelidos para hospedeiros (aliasing)
Apelidos para
Por que no centralizar o DNS? ponto nico de falha volume de trfego base de dados centralizada e distante manuteno (da BD) No escalvel!
Cliente quer IP para www.amazon.com; 1a aprox: Cliente consulta um servidor raiz para encontrar um servidor DNS .com Cliente consulta servidor DNS .com para obter o servidor DNS para o domnio amazon.com Cliente consulta servidor DNS do domnio amazon.com para obter endereo IP de www.amazon.com
2: Camada de Aplicao 66
nome servidor raiz: procura servidor oficial se mapeamento desconhecido obtm traduo devolve mapeamento ao servidor local
a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD k RIPE London (also Amsterdam, g US DoD Vienna, VA Frankfurt) h ARL Aberdeen, MD i Autonomica, Stockholm j Verisign, ( 11 locations) (plus 3 other locations) m WIDE Tokyo e NASA Mt View, CA f Internet Software C. Palo Alto, CA (and 17 other locations)
68
2: Camada de Aplicao
69
Possui uma cache local com pares de traduo nome/endereo recentes (mas podem estar desatualizados!) Atua como um intermedirio, enviando consultas para a hierarquia.
2: Camada de Aplicao
70
servidor raiz
3 4 5
servidor TLD
consulta interativa: servidor consultado responde com o nome de um servidor de contato No conheo este nome, mas pergunte para esse servidor
6
servidor com autoridade dns.cs.umass.edu
solicitante
cis.poly.edu gaia.cs.umass.edu
2: Camada de Aplicao
71
responsabilidade de resoluo do nome para o servidor de nomes contatado servidor DNS local carga pesada? dns.poly.edu
6
servidor TLD 4
8
servidor DNS com autoridade dns.cs.umass.edu
solicitante
cis.poly.edu
gaia.cs.umass.edu
2: Camada de Aplicao 72
ele o coloca numa cache local entradas na cache so sujeitas a temporizao (desaparecem) depois de um certo tempo (TTL) Entradas na cache podem estar desatualizadas (traduo nome/endereo do tipo melhor esforo!)
Se o endereo IP de um nome de host for alterado, pode no ser conhecido em toda a Internet at que todos os TTLs expirem
2: Camada de Aplicao
73
Registros DNS
DNS: BD distribudo contendo registros de recursos (RR) formato RR: (nome, valor, tipo, ttl)
Tipo=A nome nome de hospedeiro valor o seu endereo IP
Tipo=NS
nome domnio (p.ex. foo.com.br) valor endereo IP de servidor oficial de nomes para este domnio
Tipo=CNAME nome nome alternativo (alias) para algum nome cannico (verdadeiro) valor o nome cannico
Tipo=MX nome domnio valor nome do servidor de correio para este domnio
2: Camada de Aplicao 74
cabealho de msg
identificao: ID de 16 bit para
pedido, resposta ao pedido usa mesmo ID flags: pedido ou resposta recurso desejada recurso permitida resposta oficial
2: Camada de Aplicao
75
2: Camada de Aplicao
76
Tem de prover para a registradora os nomes e endereos IP dos servidores DNS oficiais (primrio e secundrio) Registradora insere dois RRs no servidor TLD .br:
Ataques ao DNS
Ataques DDoS Bombardeia os servidores raiz com trfego
At o momento no tiveram sucesso Filtragem do trfego Servidores DNS locais cacheiam os IPs dos servidores TLD, permitindo que os servidores razes no sejam consultados
Intercepta as consultas Envia respostas falsas para o servidor DNS que as coloca em cache
Envenenamento do DNS
TLD
Explorao do DNS para DDoS Envia consultas com endereo origem falsificado: IP alvo Requer amplificao
2: Camada de Aplicao 78
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede 2.2 A Web e o HTTP 2.3 Transferncia de arquivo: FTP 2.4 Correio Eletrnico na Internet 2.5 DNS: o servio de diretrio da Internet
2.7 Programao e
2: Camada de Aplicao
79
comunicam diretamente pares esto conectados de forma intermitente e mudam seus endereos IP
Exemplos:
2: Camada de Aplicao
80
u1 d1
u2
d2
2: Camada de Aplicao
81
us di rede
Tempo para enviar uma cpia = F/us Tempo para enviar N cpias = NF/us
ui
dmin = taxa mnima de download Tempo de download para usurio com menor taxa: F/dmin
us di network
ui
Su
tempo para distribuir F para N clientes D P2P > max{F/us,,F/dmin,,NF/(us + Sui)} usando abordagem P2P
cresce linearmente com N assim como este, cada par traz capacidade de servio
2: Camada de Aplicao 83
P2P Client-Server
10
15
20
25
30
35
N
2: Camada de Aplicao 84
torrente: grupo de
Alice chega obtm lista de parceiros do tracker e comea a trocar blocos de arquivos com os parceiros na torrente
2: Camada de Aplicao 85
no tem nenhum bloco, mas ir acumul-los com o tempo registra com o tracker para obter lista dos pares, conecta a um subconjunto de pares (vizinhos)
enquanto faz o download, par carrega blocos para outros pares par pode mudar os parceiros com os quais troca os blocos pares podem entrar e sair quando o par obtiver todo o arquivo, ele pode (egoisticamente)
2: Camada de Aplicao
86
Enviando blocos: toma l, d c! Alice envia blocos para os quatro vizinhos que estejam lhe enviando blocos na taxa
mais elevada
outros pares foram sufocados por Alice Reavalia os 4 mais a cada 10 segs
2: Camada de Aplicao
87
BitTorrent: toma l, d c!
(1) Alice optimistically unchokes Bob (2) Alice se torna um dos quatro melhores provedores de Bob; Bob age da mesma forma (3) Bob se torna um dos quatro melhores provedores de Alice
Com uma taxa de upload mais alta, pode encontrar melhores parceiros de troca e obter o arquivo mais rapidamente!
2: Camada de Aplicao 88
exemplos:
chave: cpf; valor: nome da pessoa chave: ttulo do filme; valor: endereo IP
2: Camada de Aplicao
89
ideia bsica: converter cada chave para um inteiro atribuir inteiros para cada par colocar a dupla (chave, valor) no par que esteja mais prximo da chave
2: Camada de Aplicao
90
Identificadores DHT
designa um identificador inteiro a cada par
mesma faixa para encontrar a chave inteira, aplica a funo de hash chave original.
ex., chave = hash(Led Zeppelin IV) por isto que chamada de tabela de hash distribuda.
2: Camada de Aplicao 91
mais prxima. conveno de leitura: o mais prximo o sucessor imediato da chave. Ex., n=4; pares: 1,3,4,5,8,10,12,14
chave = 13, ento par sucessor = 14 chave = 15, ento par sucessor = 1
2: Camada de Aplicao
92
8 cada par rastreia apenas o seu sucessor e antecessor imediatos. rede sobreposta (overlay)
2: Camada de Aplicao 93
0011
0100
1110
1110
1100 0101
Defina mais prximo como o sucessor mais 1010 prximo
1110
1000
2: Camada de Aplicao 94
3
15
4
12 10 5
8 cada par rastreia os endereos IP do antecessor, sucessor e atalhos. reduz de 6 para 2 mensagens. Permite projetar atalhos de modo que para O(log N) vizinhos, O(log N) mensagens na consulta
2: Camada de Aplicao 95
Peer churn
1
15
3
4
12 10
8 exemplo: par 5 sai abruptamente par 4 detecta a sada do par 5; torna 8 o seu sucessor imediato; pergunta a 8 quem o seu sucessor imediato; torna o sucessor imediato de 8 como o seu segundo sucessor. o que fazer caso o par 13 resolva entrar?
2: Camada de Aplicao
(churn) cada para conhece o endereo dos seus dois sucessores cada par periodicamente envia um ping aos seus dois sucessores para verificar se esto vivos se o sucessor imediato sair, escolha o prximo sucessor como o sucessor imediato.
96
comunicao entre pares de usurios. protocolo proprietrio da camada de aplicao (inferido atravs de engenharia reversa) overlay hierrquico com SNs ndice mapeia nomes dos usurios a endereos IP; distribudo atravs dos SNs
Supernode (SN)
2: Camada de Aplicao
97
Soluo:
O NAT impede que um par externo inicie uma chamada com um par interno
Intermedirio escolhido, usando os SNs de Alice e de Bob. Cada par inicia sesso com o intermedirio Pares podem se comunicar atravs de NATs atravs do intermedirio
2: Camada de Aplicao 98
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede 2.2 A Web e o HTTP 2.3 Transferncia de arquivo: FTP 2.4 Correio Eletrnico na Internet 2.5 DNS: o servio de diretrio da Internet
2.7 Programao e
2: Camada de Aplicao
99
em 1981 so explicitamente criados, usados e liberados por apls paradigma cliente/servidor dois tipos de servio de transporte via API Sockets
porta), local ao hospedeiro, criada por e pertencente aplicao, e controlado pelo SO, atravs da qual um processo de aplicao pode tanto enviar como receber mensagens para/de outro processo de aplicao (remoto ou local)
2: Camada de Aplicao
100
internet
2: Camada de Aplicao
101
2: Camada de Aplicao
103
seqncia de caracteres que fluem de ou para um processo. Um fluxo de entrada conectado a alguma fonte de entrada para o processo, por exemplo, teclado ou socket. Um fluxo de sada conectado a uma fonte de sada, por exemplo, um monitor ou um socket.
2: Camada de Aplicao
104
keyboard
monitor
2. 3.
4.
cliente l linha da entrada padro (fluxo doUsurio), envia para servidor via socket (fluxo paraServidor) servidor l linha do socket servidor converte linha para letras maisculas, devolve para o cliente cliente l linha modificada do socket (fluxo doServidor), imprime-a
input stream
input stream
2: Camada de Aplicao
105
Cliente
TCP
da conexo
cria socket, abre conexo a nomeHosp, porta=x socketCliente = Socket() Envia pedido usando socketCliente
106
Cria fluxo de entrada Cria socket de cliente, conexo ao servidor Cria fluxo de sada ligado ao socket
} }
2: Camada de Aplicao 108
class servidorTCP {
public static void main(String argv[]) throws Exception { String fraseCliente; String FraseMaiusculas; ServerSocket socketRecepcao = new ServerSocket(6789); while(true) { Socket socketConexao = socketRecepcao.accept(); BufferedReader doCliente = new BufferedReader(new InputStreamReader(socketConexao.getInputStream()));
2: Camada de Aplicao
Cria socket para recepo na porta 6789 Aguarda, no socket para recepo, o contato do cliente Cria fluxo de entrada, ligado ao socket
109
from socket import * serverName = servername serverPort = 12000 clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((serverName,serverPort)) sentence = raw_input(Input lowercase sentence:) clientSocket.send(sentence) modifiedSentence = clientSocket.recv(1024) print From Server:, modifiedSentence clientSocket.close()
2: Camada de Aplicao
111
from socket import * serverPort = 12000 serverSocket = socket(AF_INET,SOCK_STREAM) serverSocket.bind((,serverPort)) serverSocket.listen(1) print The server is ready to receive while 1: connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024) capitalizedSentence = sentence.upper() connectionSocket.send(capitalizedSentence) connectionSocket.close()
2: Camada de Aplicao
112
Captulo 2: Roteiro
2.1 Princpios de
aplicaes de rede 2.2 A Web e o HTTP 2.3 Transferncia de arquivo: FTP 2.4 Correio Eletrnico na Internet 2.5 DNS: o servio de diretrio da Internet
2.7 Programao e
2: Camada de Aplicao
113
UDP prov transferncia no confivel de grupos de bytes (datagramas) entre cliente e servidor
Cliente
cria socket, socketCliente = DatagramSocket() cria, enderea (nomeHosp, porta=x, envia pedido em datagrama usando socketCliente
l pedido do socketServidor escreve resposta ao socketServidor especificando endereo IP, nmero de porta do cliente
2: Camada de Aplicao
115
UDP
2: Camada de Aplicao
116
Cria fluxo de entrada Cria socket de cliente Traduz nome de hospedeiro ao endereo IP usando DNS
dadosEnvio = frase.getBytes();
2: Camada de Aplicao 117
cria socket UDP para servidor obtm entrada do teclado do usurio acrescenta o nome do servidor e nmero da porta mensagem; envia pelo socket l caracteres de resposta do socket e converte em string imprime string recebido e fecha socket
from socket import * serverName = hostname serverPort = 12000 clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) message = raw_input(Input lowercase sentence:) clientSocket.sendto(message,(serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print modifiedMessage clientSocket.close()
2: Camada de Aplicao
119
Servidor UDP
2: Camada de Aplicao
120
2: Camada de Aplicao
122
loop infinito l mensagem do socket UDP, obtendo endereo do cliente (IP e porta do cliente)
2: Camada de Aplicao
123
Captulo 2: Resumo
Nosso estudo sobre aplicaes de rede est agora completo!
Arquiteturas de aplicaes cliente-servidor P2P
Requisitos de servio das Protocolos especficos: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, DHT Programao de sockets
aplicaes:
Modelos de servio de
transporte da Internet
orientado conexo, confivel: TCP no confivel, datagramas: UDP
2: Camada de Aplicao 124
Captulo 2: Resumo
Mais importante: aprendemos sobre protocolos
troca tpica de mensagens
pedido/resposta
Temas importantes:
msgs de controle vs. dados
cliente solicita info ou servio servidor responde com dados, cdigo de status cabealhos: campos com info sobre dados (metadados) dados: info sendo comunicada
formatos de mensagens:
na banda, fora da banda centralizado vs. descentralizado s/ estado vs. c/ estado transferncia de msgs confivel vs. no confivel complexidade na borda da rede
2: Camada de Aplicao
125