Camada de Aplicação - sj.ifsc.edu.brtisemp/RES/aulas/cap2.pdf · o endereço IP do host que...
Transcript of Camada de Aplicação - sj.ifsc.edu.brtisemp/RES/aulas/cap2.pdf · o endereço IP do host que...
2: Camada de aplicação 1
Camada de Aplicação
MINISTÉRIO DA EDUCAÇÃOSECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICAINSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIACAMPUS SÃO JOSÉ – SANTA CATARINA
Prof. Tiago Semprebom
[email protected]/~tisemp
2: Camada de aplicação 2
Parte II: Camada de Aplicação
Objetivos:• aspectos conceituais
de implementação de protocolos de rede
o paradigma cliente-servidor
o modelos de serviço• conhecer protocolos
examinando protocolos de aplicação “populares”
• protocolos específicos: o httpo ftpo smtpo pop o dns
• programando aplicações de rede
o API socket
2: Camada de aplicação 3
Aplicações e protocolos da camada de aplicação
aplicação: processos distribuídos comunicantes
o executam em hosts da rede no “espaço de usuário”
o troca de mensagens para implementar aplicação
o ex. email, ftp, Webprotocolos da camada de
aplicaçãoo uma “peça” de uma aplic.o define mensagens trocadas
pelas aplics e ações tomadaso usa serviços de comunicação
fornecidos pelos protocolos da camada subjacente (TCP, UDP)
aplicaçãotransport
rededata linkphysical
aplicaçãotransport
rededata linkphysical
aplicaçãotransport
rededata linkphysical
2: Camada de aplicação 4
Aplicações de rede: alguns jargões
Processo: programa em execução.
• dentro do mesmo host, dois processos se comunicam usando interprocesscommunication (definido pelo SO).
• processos executando em hosts diferentes se comunicam com um protocolo da camada de aplicação
• user agent: processoque faz interface entre usuário “acima” e rede“abaixo”. o implementa protocolo
em nível de aplicaçãoo Web: browsero Email: leitor de e-
mailo streaming
audio/video: media player
2: Camada de aplicação 5
Paradigma cliente-servidorAplic. típica de rede tem 2
peças: cliente e servidoraplicaçãotransport
rededata linkphysical
aplicaçãotransport
rededata linkphysical
Cliente:• inicia contato com servidor
tipicamente requisita serviços ao servidor,
• Web: cliente implementado no navegador; e-mail: em leitor de reader
requisição
reply
Servidor:• provê serviço requisitado pelo cliente• ex., servidor Web envia página Web
requisitada, servidor e-mail entrega e-mail
2: Camada de aplicação 6
Protocolos camada de aplicação (cont).
API: aplicationprogramming interface
• define interface entre aplicação e camada de transporte
• socket: API Interneto 2 processos se comunicam
enviando dados em um socket, lendo dados de um socket
Q: como um processo “identifica” outro processo que ele quer se comunicar?
o endereço IP do host que executa outro processo
o “número de porta” –permite ao host receptor determinar a qual processo local deve ser entregue a mensagem
… muito mais será visto depois...
2: Camada de aplicação 7
Qual serviço de transporte aplic. precisa?
Perdas de dados• algumas aplics. (ex., áudio)
toleram algumas perdas• outras (ex., transf. arq.,
telnet) requerem transferência dados 100% confiável
Timing• algumas aplics. (ex.
telefonia Internet, jogos interativos) requerem baixo retardo para serem “efetivos”
Largura de banda• algumas aplics. (ex.,
multimídia) requerem quantidade mínima de bandwidth para serem “efetivas”
• outras (“elasticaplics.”) fazem uso da bandwidth que conseguem
2: Camada de aplicação 8
Requisitos de serviço transporte de aplicações
Aplicação
transferência arq.e-mail
Documentos Webreal-time áudio/vídeo
áudio/vídeo armazen.jogos interativos
aplics. financeiras
Perdas dados
sem perdassem perdastolerantetolerante
tolerantetolerantesem perdas
Bandwidth
elásticoelásticoelásticoáudio: 5Kb-1Mbvídeo:10Kb-5Mbigual acimapoucos Kbpselástico
Sensível tempo
nãonãonãosim, 100’s ms
sim, poucos segssim, 100’s mssim e não
2: Camada de aplicação 9
Serviços do protocolo de transporte da Internet
serviço TCP:• orientado a conexão:
necessário setup entre cliente e servidor
• transporte confiável entre processos emissor e receptor
• controle de fluxo: emissor não “inunda” receptor
• controle de congestão: reduz taxa do emissor quando rede está sobrecarregada
• não fornece: garantias de tempo, e largura de banda mínima
serviço UDP:• transferência de dados
não confiável entre processos emissor e receptor
• não fornece: setup de conexão, confiabilidade, controle de fluxo, controle de congestão, garantias de tempo e de largura de banda
2: Camada de aplicação 10
Internet aplics.: protocolos de aplic. e transporte
Aplicação
e-mailacesso terminal remoto
Web transferência de arq.multimídia streaming
servidor de arq. remotoInternet telefonia
Protocolo da camadade aplicação
smtp [RFC 821]telnet [RFC 854]http [RFC 2068]ftp [RFC 959]proprietário(ex. RealNetorks)NFSproprietário(ex., Vocaltec)
Protocolo transporte subjacente
TCPTCPTCPTCPTCP ou UDP
TCP ou UDPtipicamente UDP
2: Camada de aplicação 11
Web: protocolo http
http: hypertext transferprotocol
• protocolo da camada de aplicação
• modelo cliente/servidoro cliente: navegador que
requisita, recebe, e “apresenta” objetos Web
o servidor: servidor Web envia objetos em resposta a requisições
• http1.0: RFC 1945• http1.1: RFC 2068
PC rodandoMozila Firefox
servidor rodandoservidor
Web Apache
Mac rodandoIE
requisição http
requisição http
resposta http
resposta http
2: Camada de aplicação 12
mais protocolo http
http: serviço de transporte TCP:• cliente inicia conexão TCP (cria socket) com servidor,
porta 80• servidor aceita conexão TCP do cliente• http mensagens (msgs do protocolo da camada de
aplicação) trocadas entre navegador (cliente http) e servidor Web (servidor http)
• conexão TCP fechada
2: Camada de aplicação 13
Exemplo httpSuponha usuário entra com URL
www.someSchool.edu/someDepartment/home.index
1a. cliente http inicia conexãoTCP para servidor http (processo) emwww.someSchool.edu. Porta80 é a default para servidorhttp.
2. cliente http envia mensagemde requisição http (contendoURL) em um socket de conexão TCP
1b. servidor http no host www.someSchool.eduaguardando por conexão TCP na porta 80 “aceita” conexão, notificando cliente
3. servidor http recebemensagem de requisição, forma mensagem de respostacontendo objeto requisitado(someDepartment/home.index), envia mensagem no socket
tempo
(contém texto, referências para 10
imagens jpeg)
2: Camada de aplicação 14
Exemplo http (cont.)
5. cliente http recebe mensagemcontendo arquivo html, mostrahtml. Analisa arquivo html, encontra 10 objetos jpeg referenciados
6. Passos 1-5 repetidos para cadaum dos 10 objetos
4. servidor http fecha conexãoTCP.
time
2: Camada de aplicação 15
Formato de mensagens http: requisição
• dois tipos de mensagens http: requisição, resposta• mensagem de requisição http:
o ASCII (formato legível para ser-humano)
GET /somedir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr
(extra carriage return, line feed)
linha de requisição(comandos GET,POST, HEAD)
linhas de cabeçalho
Carriage return, line feed
indicam fim da mensagem
2: Camada de aplicação 16
Mensagem de formato http: resposta
HTTP/1.0 200 OK 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
dados dados dados dados dados ...
linha de status(código do protocolo
código do statusfrase do status)
linhas decabeçalho
dados, ex., arquivo
html requisitado
2: Camada de aplicação 17
Simulando um cliente http
1. Dê um telnet para seu servidor Web favorito:Abre conexão TCP para porta 80 (default do servidor http).
2. Digite uma requisição http GET:Teclando isso (pressione Enter 2vezes), você envia uma requisiçãoGET ao servidor http
3. Veja a msg de resposta do servidor http!
telnet www.eurecom.fr 80
GET /~ross/index.html HTTP/1.0
2: Camada de aplicação 18
Interação usuário-servidor: cookies
• Servidor HTTP é stateless (não tem estado), permitindo que engenheiros desenvolvam servidores de alto desempenho (escalável)
• Porém site pode desejar identificar usuários (para restringir acesso ou mostrar conteúdo)
• HTTP usa cookies (RFC 2109)
• Sabe-se que páginas visitou, horários em que ordem
2: Camada de aplicação 19
Cache Web (servidor proxy)• Atende requisições HTTP em nome de um
servidor Web de origem• Possui próprio disco, onde mantém cópias de
objetos acessados recentemente
2: Camada de aplicação 20
ftp: protocolo p/ transfer. de arquivos
• transfere arquivo de/para host remoto• modelo cliente/servidor
o cliente: lado que inicia transferênciao servidor: host remoto
• ftp: RFC 959• servidor ftp: porta 21
file transfer servidorFTP
interfacede FTP
de usuário
clienteFTP
sistemade arq. local
sistema de arquivos remoto
usuáriono host
2: Camada de aplicação 21
ftp: conexões separadas para controle e dados• cliente ftp contacta servidor
ftp na porta 21, especificando TCP como protocolo de transporte
• duas conexões TCP abertas em paralelo:
o controle: troca comandos e respostas entre cliente e servidor.
“controle fora da banda”o dados: arquivo de dados
de/para servidor
clienteFTP
servidorFTP
conexão de controle TCPporta 21
conexão de dados TCPporta 20
Comandos simples:• enviados como texto ASCII
usando canal de controle
2: Camada de aplicação 22
ftp comandos, respostas
Exemplos de comandos:• enviados como texto ASCII
usando canal de controle• USER nomeusuário• PASS senha
• LIST retorna uma lista de arquivos no diretóriocorrente
• RETR pega arquivo• STOR nomearquivo
armazena arquivo no host remoto
Exemplos de código de retorno• código de status e frase (como
no http)• 331 Username OK,
password required• 125 data connection
already open; transfer starting
• 425 Can’t open data connection
• 452 Error writing file
2: Camada de aplicação 23
Correio Eletrônico
Três grandes componentes:• agentes de usuário• servidores de correio• simple mail transfer protocol:
smtp
Agente de Usuário• a.k.a. “leitor de correio”• compor, editar, ler mensagens
de correio• ex. Thunderbird, Outlook• mensagens de saída e chegando
são armazenadas no servidor
caixa de correio do usuário
fila demensagens
de saída
agentede
usuário
servidorde correio
agentede
usuário
SMTP
SMTP
SMTP
agentede
usuário
agentede
usuário
agentede
usuárioagentede
usuário
servidorde correio
servidorde correio
2: Camada de aplicação 24
Correio Eletrônico: servidores de correio
Servidores de correio• caixa de correio contém
mensagens de chegada (ainda não lidas) p/ usuário
• fila de mensagens contém mensagens de saída (a serem enviadas)
• protocolo smtp entre servidores de correio para transferir mensagens de correio
o cliente: servidor de correio que envia
o “servidor”: servidor de correio que recebe
servidorde correio
agentede
usuário
SMTP
SMTP
SMTP
agentede
usuário
agentede
usuário
agentede
usuárioagentede
usuário
servidorde correio
servidorde correio
2: Camada de aplicação 25
Correio Eletrônico: SMTP [RFC 2821]• usa tcp para a transferência confiável de msgs do correio do cliente
ao servidor, porta 25• interação comando/resposta (texto ASCII, código e frase de
status)• Necessidade dos dados (áudio, vídeo, imagens, etc) sejam
codificados para ASCII e depois decodificado para binário• SMTP é utiliza conexões persistentes
S: 220 atlas.das.ufsc.brC: HELO gloriosoS: 250 Hello glorioso, pleased to meet you C: MAIL FROM: <[email protected]> ...C: QUIT S: 221 closing connection
Interação smtp típica
2: Camada de aplicação 26
Experimente você uma interação smtp :
• telnet smtp.das.ufsc.br 25• veja resposta 220 do servidor• entre comandos HELO, MAIL FROM, RCPT TO,
DATA, QUIT
estes comandos permite que você envie correio sem usar um cliente (leitor de correio)
2: Camada de aplicação 27
Protocolos de accesso ao correio
• SMTP: entrega/armazenamento no servidor do receptor• SMTP não usa servidores internediários para enviar mensagens (ex.
servidores em lados opostos do mundo)
• protocolo de accesso ao correio: recupera do servidoro POP3: Post Office Protocol [RFC 1939]
• autorização (agente <-->servidor) e transferência as claras. Não permite baixar msg em qualquer PC
o IMAP: Internet Mail Access Protocol [RFC 1730]• mais comandos (mais complexo)• manuseio de msgs armazenadas no servidor
o HTTP: Hotmail , Yahoo! Mail, Webmail, etc.
servidor de correioda Maria
SMTP SMTP POP3 ouIMAP
servidor de correiodo José
agenteda
Maria
agentedo
José
2: Camada de aplicação 28
DNS: Domain Name SystemPessoas: muitos identificadores:
o CPF, nome, no. da identidade
o Olá meu nome é“035.254.245-35”
o “Olá Meu nome é Pedro”
hospedeiros, roteadores Internet o endereço IP (32 bit) - usado
p/ endereçar datagramaso “nome”o sj.cefetsc.edu.br - usado por
genteo Roteadores preferem
endereços IP (hierárquicos)o Pessoas preferem nomes de
hospedeiros
Pergunta: como mapear entre nome e endereço IP?
Domain Name System:• base de dados distribuída
implementada na hierarquia de muitos servidores de nomes
• protocolo de camada de aplicaçãopermite que hospedeiros, roteadores, servidores de nomes se comuniquem para resolver nomes (tradução endereço/nome)
• Executam software BIND
o obs: função imprescindível da Internet implementada como protocolo de camada de aplicação
o complexidade na borda da rede
2: Camada de aplicação 29
DNS• Protocolo da camada de
Aplicação (função interna da internet) - UDP e porta 53
• Especificado nas RFCs1034 e 1035 e atualizado em outras RFCs.
• Utilizado por outras entidades da camada de aplicação: HTTP, SMTP e FTP – para traduzir nomes para endereços IP.
• DNS adiciona mais um atraso para as aplicações (veremos como amenizar este atraso).
• Outros serviços:
• apelidos para hospedeiros (nome canônico)
realy1.westcoast.enterprise.com (enterprise.com ou www.enterprise.com)
o apelido para o servidor de e-mailsEx. [email protected]
o Distribuição da cargaRequisições para um endereço, o rodízio de DNS redistribui o tráfego entre os servidores replicados. (ex. servidores de e-mail com muitos usuários)
2: Camada de aplicação 30
Servidores de nomes DNS• Nenhum servidor mantém todos os
mapeamentos nome-endereço IPservidor de nomes local:
o cada provedor, empresa tem servidor de nomes local (default)
o pedido DNS do host vai primeiro ao servidor de nomes local
servidor de nomes oficial(com autoridade):
o p/ host: guarda nome, endereço IP dele
o pode realizar tradução nome/endereço para este nome
Por que não centralizar o DNS?
• ponto único de falha• volume de tráfego• banco de dados
centralizada e distante• manutenção (da BD)
Não é escalável!
2: Camada de aplicação 31
DNS: Servidores raiz
• procurado por servidor local que não consegue resolver o nome
• servidor raiz:o procura servidor
oficial se mapeamento desconhecido
o obtém traduçãoo devolve
mapeamento ao servidor local
• 13 servidores raiz no mundo
2: Camada de aplicação 32
Exemplo simples do DNS
host manga.ic.uff.brrequer endereço IP de www.cs.columbia.edu
1. Contata servidor DNS local, pitomba.ic.uff.br
2. pitomba.ic.uff.brcontata servidor raiz, se necessário
3. Servidor raiz contata servidor oficial cs.columbia.edu, se necessário solicitante
manga.ic.uff.brwww.cs.columbia.edu
servidor de nomes raiz
servidor oficialcs.columbia.edu
servidor local (default)pitomba.ic.uff.br
23
45
1 6
2: Camada de aplicação 33
Exemplo de DNSServidor raiz:• pode não conhecer o
servidor de nomes oficial
• pode conhecer servidor de nomes intermediário: a quem contatar para descobrir o servidor de nomes oficial solicitante
manga.ic.uff.br
www.cs.columbia.edu
servidor localpitomba.ic.uff.br
23
4 5
6
1
servidor oficialcs.columbia.edu
servidor intermediáriosaell.cc.columbia.edu
7
servidor de nomes raiz
8
2: Camada de aplicação 34
DNS: consultas interativas
consulta recursiva:• transfere a
responsabilidade de resolução do nome para o servidor de nomes contatado
consulta interativa:• servidor consultado
responde com o nome de um servidor de contato
• “Não conheço este nome, mas pergunte para esse servidor”
1
23
4
5 6
7
8
consultainterativa
servidor de nomes raíz
servidor localpitomba.ic.uff.br
servidor intermediáriosaell.cc.columbia.edu
servidor oficialcs.columbia.edu
solicitantemanga.ic.uff.br
www.cs.columbia.edu
2: Camada de aplicação 35
DNS: uso de cache, atualização de dados
• uma vez que um servidor qualquer aprende um mapeamento, ele o coloca numa cache localo futuras consultas são resolvidas usando dados
da cacheo entradas na cache são sujeitas a temporização
(desaparecem depois de um certo tempo)ttl = time to live (sobrevida)
2: Camada de aplicação 36
Programação com sockets
API Sockets• apareceu no BSD4.1 UNIX
em 1981• são explicitamente criados,
usados e liberados por apls• paradigma cliente/servidor• dois tipos de serviço de
transporte via API Socketso datagrama não confiável o fluxo de bytes, confiável
uma interface (uma “porta”), local ao
hospedeiro, criada por e pertencente à aplicação, e
controlado pelo SO, através da qual um
processo de aplicação pode tanto enviar como
receber mensagens para/de outro processo
de aplicação (remoto ou local)
socket
Meta: aprender a construir aplicações cliente/servidor que se comunicam usando sockets
2: Camada de aplicação 37
Programação com sockets usando TCP
Socket: uma porta entre o processo de aplicação e um protocolo de transporte fim-a-fim (UDP ou TCP)
Serviço TCP: transferência confiável de bytes de um processo para outro
processo
TCP combuffers,variáveis
socket
estação ouservidor
processo
TCP combuffers,variáveis
socket
controlado peloprogramador deaplicação
controladopelo sistemaoperacional
estação ouservidor
internet
2: Camada de aplicação 38
Cliente deve contactar servidor• processo servidor deve antes
estar em execução• servidor deve antes ter
criado socket (porta) que aguarda contato do cliente
Cliente contacta servidor para:• criar socket TCP local ao
cliente• especificar endereço IP,
número de porta do processo servidor
• Quando cliente cria socket: TCP do cliente estabelece conexão com TCP do servidor
• Quando contatado pelo cliente, o TCP do servidor cria socket novopara que o processo servidor possa se comunicar com o cliente
o permite que o servidor converse com múltiplos clientes
TCP provê transferênciaconfiável, ordenada de bytes
(“tubo”) entre cliente e servidor
ponto de vista da aplicação
Programação com sockets usando TCP