Camada de aplicação. Aplicações em rede



Documentos relacionados
Camada de aplicação Conceitos, implementação de protocolos da camada de aplicação

Transferência de arquivos (FTP)

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

REDES DE COMPUTADORES. Prof. Evandro Cantú

INTRODUÇÃO ÀS REDES DE COMPUTADORES

HYPERTEXT TRANSFER PROTOCOL

REDES DE COMPUTADORES I 2007/2008 LEIC - Tagus-Park TPC Nº 2. Avaliação sumária da matéria do Capítulo 2

INTRODUÇÃO ÀS REDES DE COMPUTADORES

FTP: protocolo de transferência de arquivos

Redes de Computadores I

Redes de Computadores

Universidade Federal do Rio Grande do Norte

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

PROTOCOLOS DE COMUNICAÇÃO

FPROT HTTP(s), FTP, DHCP, SQUID e SAMBA. Aula 1 SENAC TI Fernando Costa

REDES DE COMPUTADORES

DNS Domain Name System

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Redes de Computadores Camada de Aplicação. Prof. MSc. Hugo Souza

2Arquitetura cliente-servidor

Camada de Aplicação. Prof. Tiago Semprebom. 2: Camada de aplicação 1

INTRODUÇÃO ÀS REDES DE COMPUTADORES

Redes de Computadores e a Internet

A Camada de Aplicação

Programação para Internet Flávio de Oliveira Silva, M.Sc.

O espaço de nomes DNS Registros de recursos de domínio Servidores de nome

INTRODUÇÃO ÀS REDES DE COMPUTADORES

Rede de Computadores (REC)

Universidade Federal de Mato Grosso

Redes de Computadores

Aplic. distribuídas e protocolos da camada de aplic.

O protocolo HTTP. O que é o protocolo HTTP?

Redes de Computadores Aula 3

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Redes de Computadores I Licenciatura em Eng. Informática e de Computadores 1 o Semestre, 26 de Outubro de o Teste A

Teia de alcance mundial (World Wide Web WWW) Web composta de

Correio Eletrônico e os protocolos SMTP, POP3 e IMAP

Camada de aplicação. Camada de aplicação

Teleprocessamento e Redes

1.264 Lição 11. Fundamentos da Web

Camada de Aplicação. Protocolos. Tópicos & Objetivos 16/01/13

DNS. Usa o UDP e a porta 53. Não é uma aplicação com a qual o usuário interage diretamente Complexidade nas bordas da rede


Hyper Text Transfer Protocol (HTTP) ADI HTTP 1/18

Redes - Internet. Sumário Aula 3,4 e 5 9º C } Estrutura baseada em camadas. } Endereços IP. } DNS -Domain Name System

6127. Redes comunicação de dados. 2014/2015. Acesso à Internet.

DNS: Sistema de Nomes de Domínio

INTRODUÇÃO A REDES DE COMPUTADORES. Alan Nakai

Permite o acesso remoto a um computador;

HyperText Transfer Protocol (HTTP)

INTERNET. TCP/IP protocolo de comunicação sobre o qual se baseia a Internet. (conjunto de regras para a comunicação entre computadores)

Introdução à Camada de Aplicação. Prof. Eduardo

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Camada de Aplicação. Prof. Eduardo

Redes de Computadores

DNS - Domain Name System

Fluxos Multimédia Armazenados

DNS Domain Name System

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

O protocolo HTTP. Você aprenderá: O que é e como funciona o protocolo HTTP. Quais são as partes de um pedido HTTP.

REDES DE COMPUTADORES

REC- Redes de Computadores. Capítulo 5 Camada de Aplicação

Aula-28 Camada Aplicação - DNS. Prof. Dr. S. Motoyama

Imagem digital. Configuração de 640 x 480 e 24 bits/pixel (RGB) 7,37 Mbits Solução compactação

Cap 03 - Camada de Aplicação Internet (Kurose)

Camada de Aplicação Protocolo FTP e Correio Eletrônico

TECNOLOGIA WEB. Principais Protocolos na Internet Aula 2. Profa. Rosemary Melo

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Redes de Computadores e a Internet

Redes de Computadores

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

Universidade da Beira Interior

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

Camada de Aplicação. Redes de Computadores e a Internet, 6a ed, Kurose & Ross

Redes de Computadores. Arquitetura de Protocolos Profa. Priscila Solís Barreto

Prof. Marcelo Cunha Parte 5

Redes de Computadores e a Internet

Internet ou Net. É uma rede mundial de computadores ligados entre si através s de linhas telefónicas comuns.

Transcrição:

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