Camada de Aplicação - sj.ifsc.edu.brtisemp/RES/aulas/cap2.pdf · o endereço IP do host que...

38
Camada de Aplicação MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS SÃO JOSÉ – SANTA CATARINA Prof. Tiago Semprebom [email protected] www.sj.cefetsc.edu.br/~tisemp

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