22
Camada de aplicação 1 Camada de aplicação Conceitos, implementação de protocolos da camada de aplicação Paradigma cliente-servidor Modelos de serviço Protocolos da camada de aplicação HTTP FTP SMTP, POP DNS Programação de protocolos da camada de aplicação Interface de sockets Camada de aplicação 2 Aplicações em rede Processo é um programa a ser executado numa máquina Na mesma máquina – comunicação entre-processos (sistema operativo) Em máquinas distintas – protocolo da camada de aplicação Agente de utilizador (user agent) Interface com o utilizador e com a rede Implementa o protocolo da camada de aplicação WWW: browser email: leitor de correio (mail reader)

CamadaAplicacao parte2

Embed Size (px)

Citation preview

Page 1: CamadaAplicacao parte2

1

Camada de aplicação 1

Camada de aplicaçãoConceitos, implementação de protocolos da camada de aplicação

• Paradigma cliente-servidor• Modelos de serviço

Protocolos da camada de aplicação• HTTP• FTP• SMTP, POP• DNS

Programação de protocolos da camada de aplicação• Interface de sockets

Camada de aplicação 2

Aplicações em rede

Processo é um programa a ser executado numa máquinaNa mesma máquina – comunicação entre-processos (sistema operativo)Em máquinas distintas – protocolo da camada de aplicação Agente de utilizador (user agent)

• Interface com o utilizador e com a rede• Implementa o protocolo da camada de aplicação• WWW: browser• email: leitor de correio (mail reader)

Page 2: CamadaAplicacao parte2

2

Camada de aplicação 3

Paradigma cliente-servidor

Em geral, protocolo da camada de aplicação tem duas componentes: cliente e servidor Cliente

• Inicia o contacto com o servidor• Solicita pedidos ao servidor• WWW: cliente é implementado no browser• email: cliente (SMTP e POP) é implementado no leitor de

correio

Servidor• Fornece os serviços solicitados pelo cliente• WWW: servidor Web entrega páginas solicitadas• Email: servidor entrega correio ao destinatário

Camada de aplicação 4

Endereçamento e API

Identificação de um processo• Endereço IP identifica a estação onde reside o processo• Porta identifica processo dentro de uma estação

Portas• Portas bem-conhecidas (0-1023): servidor• HTTP – 80; SMTP – 25;SSH - 22• Portas aleatórias: cliente (acima de 1024)

Interface entre a camada de aplicação e a camada de transporte (Application Programming Interface, API)

• Camada de aplicação escreve e lê em sockets

Page 3: CamadaAplicacao parte2

3

Camada de aplicação 5

Requisitos das aplicações

Perdas• Tolerante a perdas: áudio• Intolerante a perdas: transferência de arquivos

Atrasos• Tolerante a atrasos: transferência de arquivos, WWW• Intolerante a atrasos: VoIP, jogos distribuídos

Entrega sequencial dos pacotesLargura de banda

• Aplicações tolerantes: transferência de ficheiros• Aplicações de tempo-real: multimidia

Camada de aplicação 6

Requisitos: exemplos

Aplicação

Transferência arquivosemail

Páginas Webáudio/vídeo tempo-real

áudio/vídeo armazenadoJogos interactivos

Aplicações financeiras

Perdas

nãonãonãotolerante

tolerantetolerantenão

Largura de banda

variávelvariávelvariáveláudio: 5kb-1Mbvídeo:10kb-5Mbcomo o anterior ordem dos kbit/s variável

Atrasos

tolerantetolerantetolerantenão, 100’s ms

não, segnão, 100’s mssim e não !

Page 4: CamadaAplicacao parte2

4

Camada de aplicação 7

Serviços fornecidos pela camada de transporte

Transmission Control Protocol (TCP)• Orientado à sessão (connection-oriented)• Transferência fiável• Entrega sequencial• Controlo de fluxo e de congestão•

User Datagram Protocol (UDP)• Não é orientado à sessão• Não dá garantias às aplicações

Camada de aplicação 8

Aplicações e serviços: exemplos

Aplicação

emailAcesso remoto

WWW Transferência de ficheiros

streaming multimediaFicheiros em rede

VoIP

Protocolo da camada de aplicação

SMTP [RFC 821]Telnet [RFC 854]HTTP [RFC 2068]FTP [RFC 959]proprietárioNFSproprietário

Camada de transporte

TCPTCPTCPTCPTCP ou UDPTCP ou UDPTipicamente UDP

Page 5: CamadaAplicacao parte2

5

Camada de aplicação 9

Hypertext Transport Protocol(HTTP)

O protocolo da camada de aplicação da WWWCliente

• Browser que solicita, recebe e apresenta objectos

Servidor• Envia dados em resposta aos

pedidos• Não guarda informação de

estado sobre pedidos anteriores

Porta usada: 80Camada de transporte: TCP

PC com Explorer

Servidor Apache

PC comNetscape

Pedido HTTP

Pedido HTTP

Resposta HTTP

Resposta HTTP

Camada de aplicação 10

HTTP: exemplo

Sessão TCPwww.ist.utl.ptPorta +1024

Escuta sessões TCPPorta 80

Aceita sessãoPedidoURL: index.html

Resposta OK: index.htmlFecha sessão

Recebe pedidoMostra páginaIdentifica imagens

BrowserServidor HTTPwww.ist.utl.pt

http://www.ist.utl.pt/index.html

Page 6: CamadaAplicacao parte2

6

Camada de aplicação 11

Persistência

Não persistente• HTTP/1.0• Servidor fecha a sessão TCP depois de satisfazer o pedido• 2 x RTT até à recepção do objecto• Browsers podem abrir sessões paralelas

Persistente• HTTP/1.1• Múltiplos pedidos na mesma sessão TCP • Browser envia pedidos logo que os identifica (pipelining)• Mais rápido do que com sessões não-persistentes

Camada de aplicação 12

Pedido: exemplo

GET /index.html HTTP/1.1Accept: text/html, image/gif, image/jpgAccept-Language: en-usUser-agent: Mozilla/4.0Host: www.ist.utl.pt

Linha de pedido(GET, HEAD, POST)

Linhas decabeçalho cr + lf

Page 7: CamadaAplicacao parte2

7

Camada de aplicação 13

Anatomia de um pedido

Método URL VersãoNome do cabeçalho

Nome do cabeçalho

Valor

Valor

cr lflf

lflf

cr

crcr

:

:

Linha de pedido

Linhas decabeçalhos

Corpo damensagem

Camada de aplicação 14

Resposta: exemplo

HTTP/1.1 200 OKDate: Fri, 22 Feb 2001 13:20:50 GMTServer: Apache/1.3.6 (Unix)Content-type: text/htmlContent-Length: 327

<HTML><TITLE>Instituto Superior T&eacute;cnico<TITLE>

Linha de resposta

Linhas de cabeçalho

Corpo damensagem

cr + lf

Page 8: CamadaAplicacao parte2

8

Camada de aplicação 15

Anatomia de uma resposta

Versão Código ExpressãoNome do cabeçalho

Nome do cabeçalho

Valor

Valor

cr lflf

lflf

cr

crcr

:

:

Linha de resposta

Linhas decabeçalhos

Corpo damensagem

Camada de aplicação 16

POST e Common Gateway Interface (CGI)

Geração de conteúdo dinâmicoBrowser apresenta um formulárioPedido do browser ao servidor

• Método POST• URL de um cgi a ser executado no servidor• Corpo da mensagem contem os dados introduzidos no

formulário

Servidor executa o cgiServidor envia o resultado ao browser

Page 9: CamadaAplicacao parte2

9

Camada de aplicação 17

Códigos de resposta

200 OK• Pedido bem sucedido. Objecto no corpo da mensagem

301 Moved Permanently• Localização do objecto foi alterada. Nova URL indicada no

cabeçalho Location:304 Not Modified

• Objecto não foi modificado desde a data contida no cabeçalho If-modified-since

400 Bad Request• Erro genérico. Pedido não é entendido pelo servidor

404 Not Found• O documento não existe no servidor

505 HTTP Version Not Supported

Camada de aplicação 18

Cabeçalhos

Pedidos• Host:• User-Agent:• Accept: (text/*, image/gif)• If-Modified-Since:

Respostas• Date:• Server:• Last-Modified:

Comuns a pedidos e respostas• Content-Type:• Content-Length:• Transfer-Encoding: chunked• Connection: close

Page 10: CamadaAplicacao parte2

10

Camada de aplicação 19

Cookies

Informação de estado permite manter correlação entre pedidos de um utilizador para um mesmo servidorCabeçalho na primeira resposta do servidor

• Set-cookie: 1458279

Entrada numa base de dados do servidorFicheiro na estação do utilizador

• Associação servidor-cookie

Cabeçalhos nos pedidos sucessivos do utilizador• Cookie: 1458279

Camada de aplicação 20

Servidores proxy (Web cache)

Utilizador configura o browser para usar o servidor proxyBrowser faz pedido ao servidor proxy

• Se servidor proxy tiver objecto, envia-o ao cliente

• Caso contrário, faz o pedido ao servidor origem, recebe o objecto, envia-o ao cliente

• Servidor proxy guarda o objecto em cache

cliente

Servidorproxy

cliente

Pedido HTTP

Pedido HTTP

Resposta HTTP

Resposta HTTP

Pedido HTTP

Resposta HTTP

Servidororiginal

Servidororiginal

Page 11: CamadaAplicacao parte2

11

Camada de aplicação 21

Vantagem dos servidores proxy

Melhor tempo de resposta, em geralDiminui o tráfego com destino em servidores distantes

Servidoresorigem

Internet

Ethernet local 10 Mbps LAN

Ligação a 1.5 Mbps

Servidorproxy

Camada de aplicação 22

File Transfer Protocol (FTP)

Transferência de arquivos de e para uma estação remota (inicializada pelo cliente)Porta bem-conhecido: 21 (controle) e 20 (dados)Camada de transporte: TCPServidor guarda informação de estado

Transferência de ficheiros

Servidor FTP

Interface FTP

ClienteFTP

Sistema de arquivoslocal

Sistema de arquivosremoto

utilizador

Page 12: CamadaAplicacao parte2

12

Camada de aplicação 23

Sessão de controle e dados

Sessão de controle• Envio de comando e

recepção de respostas

Sessão de dados• Uma por cada arquivo

transferido (end-of-file)• O servidor inicia o

estabelecimento da sessão para a transferência de dados (modo ativo)

ClienteFTP

ServidorFTP

Sessão de controlena porta 21

Sessão de dadosna porta 20

Camada de aplicação 24

Comandos e respostas FTP

Comandos• USER username• PASS password• LISTdir : lista de ficheiros na

directoria actual• RETR ficheiro: buscar (get)• STOR ficheiro: colocar (put) • PORT n: porto onde o

cliente escuta o pedido de sessão de dados do servidor

Respostas• 331 Username OK,

password required• 125 data connection already

open• 425 Can’t open data

connection• 452 Error writing file

Page 13: CamadaAplicacao parte2

13

Camada de aplicação 25

Correio eletrónico

Componentes• Clientes

(leitores de correio)• Servidores de correio• Simple Mail Transfer

Protocol (SMTP)Servidorde mail

Agente de utilizador

Agente de utilizador

Agente de utilizador

Servidorde mail

Agente de utilizador

Agente de utilizador

Servidorde mail

Agentede utilizador

SMTP

SMTP

SMTP

Mailbox do usuárioFila de mensagensa enviar

Camada de aplicação 26

Simple Mail Transfer Protocol (SMTP)

Porta bem-conhecido: 25Camada de transporte: TCPServidor de correio

• Atua como cliente quando envia mensagens• Atua como servidor quando recebe mensagens

Cliente• Comandos• Mensagem (Cabeçalhos + corpo)

Servidor• Respostas

Page 14: CamadaAplicacao parte2

14

Camada de aplicação 27

SMTP: exemploS: 220 destino.ptC: HELO origem.pt S: 250 Hello origem.pt, pleased to meet youC: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender okC: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itselfC: Deus quer, o homem sonha, a obra nasceC: . S: 250 Message accepted for deliveryC: QUIT S: 221 destino.pt closing connection

Camada de aplicação 28

Anatomia das mensagens de email

Mensagens codificadas em ASCII de 7-bits (enviados em grupos de 8 bits)Cabeçalhos

• Received:• From:• To:• Subject:

Corpo da mensagem termina com cr+lf.cr+lfConteúdo do corpo não pode incluir sequência de caracteres cr+lf.cr+lf

Cabeçalho

Corpo

cr lf

cr lf

cr lf

cr lf

cr lf.

Cabeçalho

Page 15: CamadaAplicacao parte2

15

Camada de aplicação 29

Multipurpose Internet Mail Extensions (MIME)

Cabeçalhos para transmitir mensagens de vários tipos, não apenas texto ASCIICodificação do corpo da mensagem em ASCII de 6 ou 7 bits ( “.” é sempre excluído)

From: [email protected] To: [email protected] Subject: Imagem MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg

base64 encoded data ..... ......................... ......base64 encoded data

Método de codificação do corpo

Versão MIME

Dados codificados

Tipo de dados

Camada de aplicação 30

Tipo MultipartFrom: [email protected] To: [email protected] Subject: ImagemMIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789

--98766789Content-Transfer-Encoding: quoted-printableContent-Type: text/plain

Caro Luis, Junto segue a imagem de que te falei.--98766789Content-Transfer-Encoding: base64Content-Type: image/jpeg

base64 encoded data ..... ......................... ......base64 encoded data

Page 16: CamadaAplicacao parte2

16

Camada de aplicação 31

Post Office Protocol – v3

POP3• Recuperação de mensagens do servidor do destino• Autenticação

Agentede utilizador

Servidor

Agentede utilizador

SMTP SMTP POP3

Servidor

Camada de aplicação 32

Delimitação de mensagens na camada de aplicação

Terminação da sessão de transporte• Uma sessão por mensagem• FTP, HTTP 1.0

Indicação do número de bytes enviados• Várias mensagens por sessão de transporte• HTTP 1.1

Sequência de caracteres de terminação• Várias mensagens por sessão de transporte• Análise de cada byte recebido• Em geral, corpo necessita de codificação• SMTP (cr+lf.cr+lf)

Page 17: CamadaAplicacao parte2

17

Camada de aplicação 33

Domain Name System (DNS)

Serviço de diretório• Tradução entre o nome de uma máquina e seu endereço IP

DNS• Base de dados distribuída, implementada numa estrutura

hierárquica de servidores de nomes• Protocolo da camada de aplicação envolvendo estações e

servidores de nomes

Camada de aplicação 34

Hierarquia DNS

edu gov com mil uk pt

mit umass cisco google utl com

physics ee cs fmvist

deec dei

Serv. domínio de topoServ. raíz

Serv. idóneo(physics)

Serv. intermédio(cs)

Page 18: CamadaAplicacao parte2

18

Camada de aplicação 35

Servidores de nomes

Servidor de DNS local (local DNS server)

Servidor de DNS raiz (root DNS server)

Servidor de DNS de domínio-de-topo (top-level domain DNS server, TLD DNS server)

Servidor de DNS intermédio (intermiediate DNS server)

Servidor de DNS autorativo (authoritative name server)

Camada de aplicação 36

DNS: exemplo

tejo.ist.utl.pt

dijkstra.cs.umass.edu

Root DNS serverh.root-servers.net

local DNS serveralfa.ist.utl.pt

1

2

4

authoritative DNS serverdns.umass.edu

TLD DNS serverdns.edu

3

8

5

6

7

Page 19: CamadaAplicacao parte2

19

Camada de aplicação 37

Servidores de nomes raiz

b USC-ISI Marina del Rey, CAl ICANN Marina del Rey, CA

e NASA Mt View, CAf Internet Software C. Palo Alto, CA

i NORDUnet Stockholmk RIPE London

m WIDE Tokyo

a NSI Herndon, VAc PSInet Herndon, VAd U Maryland College Park, MDg DISA Vienna, VAh ARL Aberdeen, MDj NSI (TBD) Herndon, VA

13 servidores de nomes raíz, no total

Camada de aplicação 38

Registos DNS

Registos (Resource Records, RR) da forma

(name, value, type, TTL)

Type=A• name - nome de estação• value – endereço IP da

estação

Type=NS• name – domínio• value – nome de

servidor DNS idóneo

Type=CNAME• name – nome alternativo• value – nome canónico

Type=MX• name –nome alternativo• value – servidor de mail

Page 20: CamadaAplicacao parte2

20

Camada de aplicação 39

Mensagens do protocoloDNS

Mensagens de interrogação e resposta, ambas com o mesmo formato

Camada de aplicação 40

Sockets

API de sockets• Interface entre a camada de aplicação e a camada de transporte• Interface através da qual um processo aplicacional envia e

recebe mensagens para/de outros processos aplicacionaisTipos de sockets

• Stream – TCP• Datagram - UDP

processo

TCP ou

UDP

socketAplicação

Sistema operativo

processo

socketAplicação

Sistema operativointernet

TCPou

UDP

Page 21: CamadaAplicacao parte2

21

Camada de aplicação 41

Interacção cliente/servidor: TCPsocket()

bind()

listen()

accept()

read()

write()

close()

read()

socket()

connect()

write()

read()

close()

Estabelecimento da sessão TCP

Bloqueado à espera que seja estabelecida

sessão TCP

Fecho da sessão TCP

ServidorCliente

Camada de aplicação 42

Servidores concorrentes

connect()

connect() connect()

listenfd

listenfdconnfd

listenfdconnfd

listenfd

connfd

connect()listenfdconnfd

accept()

fork() close()close()

Page 22: CamadaAplicacao parte2

22

Camada de aplicação 43

Interação cliente/servidor: UDP

socket()

bind()

recvfrom()

sendto()

socket()

sendto()

recvfrom()

close()

ServidorCliente

Camada de aplicação 44

Sockets TCP vs. sockets UDPPorta local, porta remota, endereço IP localread() e write()

Fluxo de bytes

Bytes lidos com read()podem corresponder a vários write(); bytes escritos com write() podem ter de ser lidos com vários read()Nenhum byte é perdido

Porta local

sendto() e recvfrom()Porta remota e endereço IP remoto passados à aplicaçãoPreserva fronteira entre mensagens

Cada mensagem lida com recvfrom() corresponde a um e um só sendto()

Uma mensagem pode ser perdida