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 1 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) Camada de aplicação 2
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 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 3 Endereçamento e API Identificação de um processo Endereço IP identifica a estação onde reside o processo Porto identifica processo dentro de uma estação Portos Portos bem-conhecidos (0-1023): servidor HTTP 80; SMTP 25;SSH - 22 Portos efémeros: cliente 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 Camada de aplicação 4
Requisitos das aplicações Perdas Tolerante a perdas: áudio Intolerante a perdas: transferência de ficheiros Atrasos Tolerante a atrasos: transferência de ficheiros, WWW? Intolerante a atrasos: VoIP, jogos distribuídos Entrega sequencial dos pacotes Largura de banda Aplicações elásticas: transferência de ficheiros Aplicações de tempo-real: multimedia Camada de aplicação 5 Requisitos: exemplos Aplicação Perdas Largura de banda Atrasos Transferência ficheiros email Documentos Web áudio/vídeo tempo-real áudio/vídeo armazenado Jogos interactivos Aplicações financeiras não não não tolerante tolerante tolerante não elástica elastica elástica áudio: 5kb-1Mb vídeo:10kb-5mb como o anterior ordem dos kbit/s elástica tolerante tolerante tolerante não, 100 s ms não, seg não, 100 s ms sim e não! Camada de aplicação 6
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 Não dá garantias de atraso Não dá garantias de largura de banda User Datagram Protocol (UDP) Não é orientado à sessão Não dá garantias às aplicações Camada de aplicação 7 Aplicações e serviços: exemplos Aplicação email Acesso remoto WWW Transferência de ficheiros streaming multimedia Ficheiros em rede VoIP Protocolo da camada de aplicação SMTP [RFC 821] Telnet [RFC 854] HTTP [RFC 2068] FTP [RFC 959] proprietário NFS proprietário Camada de transporte TCP TCP TCP TCP TCP ou UDP TCP ou UDP Tipicamente UDP Camada de aplicação 8
Hypertext Transport Protocol (HTTP) O protocolo da camada de aplicação da WWW Cliente Browser que solicita, recebe e apresenta objectos Envia objectos em resposta a pedidos Não guarda informação de estado sobre pedidos anteriores Porto bem-conhecido: 80 Camada de transporte: TCP PC com Explorer PC com Netscape Pedido HTTP Resposta HTTP Pedido HTTP Resposta HTTP Apache Camada de aplicação 9 HTTP: exemplo http://www.ist.utl.pt/index.html Browser Sessão TCP www.ist.utl.pt Porto 80 Pedido URL: index.html HTTP www.ist.utl.pt Escuta sessões TCP Porto 80 Aceita sessão Resposta OK: index.html Fecha sessão Recebe pedido Mostra página Identifica imagens Camada de aplicação 10
Persistência Não persistente HTTP/1.0 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 11 Linha de pedido (GET, HEAD, POST) Pedido: exemplo GET /index.html HTTP/1.1 Accept: text/html, image/gif, image/jpg Accept-Language: en-us User-agent: Mozilla/4.0 Host: www.ist.utl.pt Linhas de cabeçalho cr + lf Camada de aplicação 12
Anatomia de um pedido Método URL Versão Nome do cabeçalho Nome do cabeçalho : : Valor Valor cr cr cr lf cr lf lf lf Linha de pedido Linhas de cabeçalhos Corpo da mensagem Camada de aplicação 13 Linha de resposta Resposta: exemplo Corpo da mensagem HTTP/1.1 200 OK Date: Fri, 22 Feb 2001 13:20:50 GMT Server: Apache/1.3.6 (Unix) Content-type: text/html Content-Length: 327 <HTML> <TITLE>Instituto Superior Técnico<TITLE> Linhas de cabeçalho cr + lf Camada de aplicação 14
Anatomia de uma resposta Versão Código Expressão cr Nome do cabeçalho Nome do cabeçalho : : Valor Valor cr cr lf lf cr lf lf Linha de resposta Linhas de cabeçalhos Corpo da mensagem Camada de aplicação 15 POST e Common Gateway Interface (CGI) Geração de conteúdo dinâmico Browser apresenta um formulário Pedido 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 executa o cgi envia o resultado ao browser Camada de aplicação 16
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 17 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 Camada de aplicação 18
Cookies Informação de estado permite manter correlação entre pedidos de um utilizador para um mesmo servidor Cabeçalho na primeira resposta do servidor Set-cookie: 1458279 Entrada numa base de dados do servidor Ficheiro na estação do utilizador Associação servidor-cookie Cabeçalhos nos pedidos sucessivos do utilizador Cookie: 1458279 Camada de aplicação 19 es proxy (Web cache) Utilizador configura o browser para usar o servidor proxy Browser 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 proxy guarda o objecto em cache cliente cliente Pedido HTTP Resposta HTTP Pedido HTTP Resposta HTTP proxy Pedido HTTP Resposta HTTP original original Camada de aplicação 20
Vantagem dos servidores proxy Melhor tempo de resposta, em geral Diminui o tráfego com destino em servidores distantes Internet es origem Ligação a 1.5 Mbps Ethernet local 10 Mbps LAN proxy Camada de aplicação 21 File Transfer Protocol (FTP) Interface FTP Cliente FTP Transferência de ficheiros FTP utilizador Sistema de ficheiros local Sistema de ficheiros remoto Transferência de ficheiros de e para uma estação remota (inicializada pelo cliente) Porto bem-conhecido: 21 (controlo) e 20 (dados) Camada de transporte: TCP guarda informação de estado Camada de aplicação 22
Sessão de controlo e dados Sessão de controlo Envio de comando e recepção de respostas Sessão de dados Uma por cada ficheiro transferido (end-of-file) O servidor inicia o estabelecimento da sessão para a transferência de dados (modo activo) Cliente FTP Sessão de controlo no porto 21 Sessão de dados no porto 20 FTP Camada de aplicação 23 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 Camada de aplicação 24
Componentes Correio electrónico Agentes de utilizador (leitores de correio) es de correio Simple Mail Transfer Protocol (SMTP) Agente de utilizador de mail SMTP de mail SMTP SMTP Mailbox de utilizador Fila de mensagens a enviar Agente de utilizador de mail Agente de utilizador Agente de utilizador Agente de utilizador Agente de utilizador Camada de aplicação 25 Simple Mail Transfer Protocol (SMTP) Porto bem-conhecido: 25 Camada de transporte: TCP de correio Actua como cliente quando envia mensagens Actua como servidor quando recebe mensagens Cliente Comandos Mensagem (Cabeçalhos + corpo) Respostas Camada de aplicação 26
SMTP: exemplo S: 220 destino.pt C: HELO origem.pt S: 250 Hello origem.pt, pleased to meet you C: MAIL FROM: <fernando@origem.pt> S: 250 fernando@origem.pt... Sender ok C: RCPT TO: <luis@destino.pt> S: 250 luis@destino.pt... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Deus quer, o homem sonha, a obra nasce C:. S: 250 Message accepted for delivery C: QUIT S: 221 destino.pt closing connection Camada de aplicação 27 Anatomia das mensagens de email Mensagens codificadas em ASCII de 7-bits (enviados em grupos de 8 bits) Cabeçalhos Cabeçalho cr lf Received: From: To: cr Cabeçalho lf cr lf Subject: Corpo da mensagem termina com cr+lf.cr+lf Conteúdo do corpo não pode incluir sequência de caracteres cr+lf.cr+lf. cr Corpo lf cr lf Camada de aplicação 28
Multipurpose Internet Mail Extensions (MIME) Cabeçalhos para transmitir mensagens de vários tipos, não apenas texto ASCII Codificação do corpo da mensagem em ASCII de 6 ou 7 bits (. é sempre excluído) Versão MIME Método de codificação do corpo Tipo de dados Dados codificados From: fernado@origem.pt To: luis@destino.pt Subject: Imagem MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data.........base64 encoded data Camada de aplicação 29 Tipo Multipart From: fernando@origem.pt To: luis@destino.pt Subject: Imagem MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Caro Luis, Junto segue a imagem de que te falei. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data.........base64 encoded data Camada de aplicação 30
Post Office Protocol v3 SMTP Agente SMTP POP3 de utilizador Agente de utilizador POP3 Recuperação de mensagens do servidor do destino Autenticação Camada de aplicação 31 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) Camada de aplicação 32
Domain Name System (DNS) Serviço de directó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 Outros serviços Nomes alternativos: mnemónicas Endereços IP alternativos: replicação de servidores, distribuição da carga na Internet Camada de aplicação 33 Serv. raíz Hierarquia DNS Serv. domínio de topo edu gov com mil uk pt mit umass cisco google utl com Serv. intermédio physics ee cs (cs) ist fmv deec dei Serv. idóneo (physics) Camada de aplicação 34
es de nomes de DNS local (local DNS server) de DNS raiz (root DNS server) de DNS de domínio-de-topo (top-level domain DNS server, TLD DNS server) de DNS intermédio (intermiediate DNS server) de DNS idóneo (authoritative name server) Camada de aplicação 35 DNS: exemplo 2 3 Root DNS server h.root-servers.net local DNS server alfa.ist.utl.pt 4 5 TLD DNS server dns.edu 6 1 8 7 authoritative DNS server dns.umass.edu tejo.ist.utl.pt dijkstra.cs.umass.edu Camada de aplicação 36
es de nomes raiz a NSI Herndon, VA c PSInet Herndon, VA d U Maryland College Park, MD g DISA Vienna, VA h ARL Aberdeen, MD j NSI (TBD) Herndon, VA k RIPE London i NORDUnet Stockholm m WIDE Tokyo e NASA Mt View, CA f Internet Software C. Palo Alto, CA b USC-ISI Marina del Rey, CA l ICANN Marina del Rey, CA 13 servidores de nomes raíz, no total Camada de aplicação 37 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 Camada de aplicação 38
Mensagens do protocolo DNS Mensagens de interrogação e resposta, ambas com o mesmo formato Camada de aplicação 39 Sockets Aplicação Sistema operativo processo socket TCP ou UDP internet processo socket TCP ou UDP Aplicação Sistema operativo 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 aplicacionais Tipos de sockets Stream TCP Datagram - UDP Camada de aplicação 40
Interacção cliente/servidor: TCP Cliente socket() Estabelecimento da sessão TCP socket() bind() listen() connect() write() read() close() Fecho da sessão TCP accept() read() write() read() close() Bloqueado à espera que seja estabelecida sessão TCP Camada de aplicação 41 es concorrentes connect() listenfd connect() listenfd connfd accept() connect() listenfd connfd connect() listenfd fork() listenfd connfd close() close() connfd Camada de aplicação 42
Interacção cliente/servidor: UDP Cliente socket() sendto() socket() bind() recvfrom() recvfrom() close() sendto() Camada de aplicação 43 Sockets TCP vs. sockets UDP Porto local, porto remoto, endereço IP local read() 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 Porto local sendto() e recvfrom() Porto remoto e endereço IP remoto passados à aplicação Preserva fronteira entre mensagens Cada mensagem lida com recvfrom() corresponde a um e um só sendto() Uma mensagem pode ser perdida Camada de aplicação 44