Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Sumário • Camada de aplicação • Protocolos de aplicação – HTTP – FTP • Exercícios Redes de Computadores I – Prof. Mateus Raeder Camada de aplicação Metas: • Aprender aspectos conceituais e de implementação de protocolos de aplicação em redes Conhecer... • ...protocolos específicos: – Paradigma cliente /servidor – Modelos de serviço • Aprender sobre protocolos através do estudo de protocolos populares do nível da aplicação – – – – – http ftp smtp pop dns • ...a programação de aplicações de rede. – Programação usando sockets Redes de Computadores I – Prof. Mateus Raeder Camada de aplicação • É a camada mais próxima dos usuários • Nas demais camadas, existem 1 ou 2 protocolos principais • Na camada de aplicação, existem vários protocolos, um para cada tipo de serviço – Além disso, um serviço de rede pode fazer uso de mais de um protocolo • Ex.: o serviço de e-mail pode utilizar os protocolos SMTP, POP e IMAP Redes de Computadores I – Prof. Mateus Raeder Camada de aplicação • Aplicações de rede são a “razão de ser” de uma rede de computadores application transport network data link physical – Qual a necessidade de projetar uma rede se não existissem aplicações que fossem usá-la? • Aplicações de rede são distribuídas em dois ou mais sistemas finais application transport network data link physical application transport network data link physical Redes de Computadores I – Prof. Mateus Raeder Camada de aplicação • Aplicações comunicamse através de troca de mensagens application transport network data link physical – Ex.: Correio eletrônico, transferência de arquivos, WWW, login remoto, voz, etc... – As aplicações de rede têm protocolos da camada de aplicação que definem detalhes desta comunicação via troca de mensagens application transport network data link physical application transport network data link physical Redes de Computadores I – Prof. Mateus Raeder Protocolos de aplicação • Protocolos da camada de aplicação: – Não são a aplicação. – APENAS uma “parte” da aplicação. – Define mensagens trocadas por aplicações e ações tomadas em sua resposta. – Usam serviços providos por protocolos de camadas inferiores Os processos em dois sistemas diferentes comunicam-se entre si, trocando mensagens através da rede de computadores. Um processo de emissão cria e emite mensagens na rede; um processo de recepção recebe estas mensagens e responde possivelmente emitindo mensagens de volta. Redes de Computadores I – Prof. Mateus Raeder Como os processos trocam mensagens • Um protocolo da camada de aplicação define como os processos de aplicação, funcionando em sistemas de extremidade diferentes, trocam mensagens. • Detalhadamente, um protocolo da camada de aplicação define: – Os tipos de mensagens trocadas, por exemplo, mensagens do pedido e mensagens de resposta. – A sintaxe dos vários tipos de mensagem, tais como os campos na mensagem e como os campos são delineados. – A semântica dos campos, isto é, o significado da informação nos campos. – As regras para determinar quando e como um processo emite mensagens e responde às mensagens. Redes de Computadores I – Prof. Mateus Raeder Aplicações de rede • Um processo é um programa que roda num host. – Dois processos no mesmo host se comunicam usando comunicação entre processos (interprocess comunnication), definida pelo sistema operacional (SO). – Dois processos em hosts distintos se comunicam usando um protocolo da camada de aplicação Um agente de usuário (UA) é uma interface entre o usuário e a aplicação de rede. • WWW: browser. • Correio: leitor/compositor de mensagens • Streaming audio/video: tocador (player) de mídia Redes de Computadores I – Prof. Mateus Raeder Paradigma cliente-servidor • Existem 2 figuras: cliente e servidor – Cliente: solicita um serviço • Ex.: leitor de correio eletrônico – Servidor: recebe, processa e responde • Ex.: servidor de correio Redes de Computadores I – Prof. Mateus Raeder Camada de aplicação • API - Aplication Program Interface: – Interface de programação de aplicações • Define a interface entre a aplicação e camada de transporte. • Socket (= tomada) : API da Internet – Dois processos se comunicam enviando dados para um socket , ou lendo dados de um socket. Redes de Computadores I – Prof. Mateus Raeder Comunicação pelos sockets (1) • Os dois processos comunicam-se entre si emitindo e recebendo mensagens através de seus sockets. • O socket de um processo pode ser pensado como do porta do processo: – Um processo emite e recebe mensagens da rede, através de seus sockets. – Quando um processo quer emitir uma mensagem a um outro processo em um outro host, empurra a mensagem para fora de sua porta. – O processo supõe que há um infra-estrutura de transporte no outro lado da porta, a qual transportará a mensagem até a porta do processo do destino. Redes de Computadores I – Prof. Mateus Raeder Como um processo identifica outro ? • Pergunta: Como um processo pode “identificar”o outro processo com o qual quer se comunicar? • Endereço IP do host do outro processo. – Por enquanto: basta saber que o IP ADDRESS é um valor de 32bits que identifica unicamente o sistema de extremidade. Mais precisamente, identifica unicamente a interface (placa) que conecta esse host à Internet. Ex. 200.145.9.9 • “Número de porta” : permite que o hospedeiro receptor determine a qual processo deve ser entregue a mensagem. Exemplo: Porta 80/TCP. • Ex. 200.145.9.9:80 (Ver RFC 1700 - Portas well-known) Redes de Computadores I – Prof. Mateus Raeder Que serviços de transporte a aplicação precisa? • Quando se desenvolve uma aplicação, deve-se escolher um dos protocolos disponíveis do transporte. – Como você faz esta escolha? • Estuda-se os serviços fornecidos pelos protocolos disponíveis do transporte, e escolhe-se o protocolo com os serviços que melhor se adaptem às necessidades de sua aplicação. Redes de Computadores I – Prof. Mateus Raeder Que serviços de transporte a aplicação precisa? Perda de dados: • Algumas aplicações (por exemplo áudio) podem tolerar algumas perdas. • Outras (por exemplo, transferência de arquivos, telnet) exigem transferência 100% confiável Temporização: • Algumas aplicações (por exemplo, telefonia em Internet, jogos interativos) requerem baixo retardo para serem “viáveis”. Largura de banda: • Algumas aplicações (por exemplo , multimídia) requerem quantia mínima de banda para serem “viáveis”. • Outras aplicações (“elásticas”) conseguem usar qualquer quantia de banda disponível. Redes de Computadores I – Prof. Mateus Raeder Requisitos do serviço de transporte de aplicações comuns Aplicação Perdas Banda Sensibilidade temporal transferência de arqs sem perdas elástica não correio sem perdas elástica não documentos WWW sem perdas elástica não áudio/vídeo de tempo real tolerante áudio: 5Kb-1Mb | vídeo:10Kb-5Mb sim, décimos de seg. áudio/vídeo gravado tolerante como anterior sim, alguns seg. jogos interativos tolerante > alguns Kbps sim, décimos de seg. apps financeiras sem perdas elástica sim e não Redes de Computadores I – Prof. Mateus Raeder Serviços providos por protocolos de transporte Internet • Serviço TCP: • Serviço UDP: – Orientado a conexão: estabelecimento exigido entre cliente e servidor. – Transporte confiável entre processos emissor e receptor. – Controle de fluxo: emissor não vai “afogar” receptor. – Controle de congestionamento: estrangular emissor quando a rede está carregada. – Não orientado a conexão – Transferência de dados não confiável entre processos remetente e receptor. – Não provê: estabelecimento da conexão, confiabilidade, controle de fluxo, controle de congestionamento, garantias temporais ou de banda mínima. – Pergunta-se: Qual é o interesse em ter um UDP? Redes de Computadores I – Prof. Mateus Raeder Aplicações Internet: seus protocolos e seus protocolos de transporte Aplicação Protocolo da camada de app. Protocolo de transporte usado Correio eletrônico smtp [RFC 821] TCP Acesso terminal remoto telnet [RFC 854] TCP WWW http [RFC 2068] TCP Transferência de arquivos ftp [RFC 959] TCP streaming multimídia proprietário (Ex: RealNetworks) TCP ou UDP Servidor de arquivo remoto NFS TCP ou UDP Telefonia Internet proprietário (Ex: Volcatec) tipicamente UDP Redes de Computadores I – Prof. Mateus Raeder Os principais protocolos de aplicação HTTP e FTP Redes de Computadores I – Prof. Mateus Raeder WWW • Página WWW: – Consiste de “objetos” – Endereçada por um URL Universal Resource Locator. • Quase todas as páginas WWW consistem de: • Agente de usuário para WWW se chama de browser: – MS Internet Explorer. – Firefox. • Servidor para WWW se chama “servidor WWW”: – Página base HTML, e – Vários objetos referenciados. • URL tem duas partes: – Apache (domínio público). – MS Internet Information Server (IIS). – nome de hospedeiro, e nome de caminho: • www.inf.unisinos.br/imgs/logo.gif Redes de Computadores I – Prof. Mateus Raeder WWW: o protocolo http • http: HyperText Transfer Protocol – Protocolo da camada de aplicação para WWW. – Modelo cliente-servidor • cliente: browser que solicita, recebe (“visualiza”) objetos WWW. • servidor: servidor WWW envia objetos em resposta a pedidos. – http1.0: RFC 1945 – http1.1: RFC 2068 PC running Explorer Server running Apache Web server Mac running Safari Redes de Computadores I – Prof. Mateus Raeder Mais sobre o protocolo http • Usa serviço de transporte TCP: – 1.) Cliente inicia conexão TCP (cria socket) ao servidor, na porta 80. – 2.) Servidor aceita conexão TCP do cliente. – 3.) Troca mensagens http (mensagens do protocolo da camada de aplicação) entre browser (cliente http) e servidor WWW (servidor http). – 4.) Encerra conexão TCP. • http é “sem estado” (stateless) – Servidor não mantém informação sobre pedidos anteriores do cliente. Protocolos que mantêm “estado” são complexos! História passada (estado) tem que ser guardada. Caso caia servidor/cliente, suas visões do “estado” podem ser inconsistentes, devem ser reconciliadas Redes de Computadores I – Prof. Mateus Raeder Exemplo de http Supondo que um usuário digita a URL www.inf.unisinos.br/index.html (Ex: contém texto, referências a 10 imagens jpeg) 1a. Cliente http inicia conexão TCP ao servidor http (processo) em www.inf.unisinos.br Porta 80 é padrão para servidor http. 1b. servidor http no hospedeiro www.inf.unisinos.br espera por conexão TCP na porta 80. “Aceita” conexão, avisando ao cliente 2. cliente http envia mensagem de pedido de http (contendo URL) através do socket da conexão TCP 3. servidor http recebe mensagem de pedido, formula mensagem de resposta contendo objeto solicitado (index.html), e envia mensagem via socket. ... TEMPO Redes de Computadores I – Prof. Mateus Raeder Exemplo de http (continuação) 4. servidor http encerra conexão TCP . 5. cliente http recebe mensagem de resposta contendo arquivo html “inicial.html”, e visualiza Html. Analisando arquivo html, encontra 10 objetos jpeg referenciados. 6. Passos 1 a 5 repetidos para cada um dos 10 objetos jpeg E então, continua... TEMPO Redes de Computadores I – Prof. Mateus Raeder Conexões não-persistente e persistente • Não persistente: • Persistente: – HTTP/1.0 – Servidor analisa pedido, responde, e encerra conexão TCP. – 2 RTTs para trazer cada objeto (RTT = round trip Time tempo de viagem de ida e volta) – Default for HTTP/1.1 – Na mesma conexão TCP: • servidor analisa pedido, responde, analisa novo pedido, etc... – Cliente envia pedidos para todos objetos referenciados, assim que recebe o HTML base . – Menos RTTs. – Consexão é encerrada depois de determinado tempo sem uso Redes de Computadores I – Prof. Mateus Raeder Conexão não-persistente (1) 1. 2. 3. 4. 5. 6. O cliente HTTP inicia uma conexão TCP com o servidor. O cliente emite mensagem de requisição HTTP através do socket associado com a conexão do TCP que foi estabelecida. Servidor HTTP recebe o request através do socket associado com a conexão estabelecida, recupera o objeto /ai/inicial.html de seu armazenamento, encapsula o objeto em uma mensagem HTTP de resposta, e emite a mensagem de resposta através do socket. O servidor diz ao cliente para fechar a conexão TCP. O cliente recebe a mensagem de resposta. A conexão TCP termina. A mensagem indica que o objeto encapsulado é um arquivo HTML. O cliente extrai o arquivo da mensagem de resposta, analisa, e encontra referências a 10 objetos do JPEG. As primeiras quatro etapas são repetidas então para cada um dos objetos JPEG referenciados. Redes de Computadores I – Prof. Mateus Raeder Conexão não-persistente (2) • Cada conexão TCP transporta exatamente uma mensagem de pedido e uma mensagem de resposta. No nosso exemplo, quando um usuário requisita página, 11 conexões TCP são geradas. • Nas etapas das conexões não persistentes, cada conexão do TCP é fechada depois que o servidor envia o objeto: a conexão não persiste para outros objetos. • Quando o browser recebe uma página, mostra a página ao usuário. Dois browsers diferentes podem interpretar (isto é, mostrar ao usuário) um Web page de maneiras um diferentes. O HTTP não tem nada ver como um Web page é interpretado por um cliente. • As especificações do HTTP (RFC1945 e RFC2616) definem somente o protocolo de comunicação entre o programa HTTP do cliente e o programa HTTP do servidor. Redes de Computadores I – Prof. Mateus Raeder RTT (Round Trip Time) • Definição: tempo que um pacote leva para ser enviado e retornar ao cliente; • Tempo de resposta: initiate TCP – Um RTT para iniciar a connection conexão TCP; RTT – Um RTT para enviar requisição request HTTP e receber os primeiros file bytes da resposta; RTT • Tempo de transmissão do arquivo – Total: 2RTT + tempo de transmissão time to transmit file file received time time Redes de Computadores I – Prof. Mateus Raeder Conexão persistente • Problemas do HTTP não persistente: – Gasta 2RTT para cada objeto – OS deve alocar recursos para cada conexão TCP – Browsers costumam abrir conexões paralelas • HTTP persistente – Servidor deixa as conexões abertas após enviar a resposta – Mensagens HTTP seguintes são enviadas usando esta conexão Redes de Computadores I – Prof. Mateus Raeder Conexão persistente • Persistente sem paralelismo – Cliente envia nova requisição apenas quando a mensagem anterior tiver sido recebida – Um RTT para cada objeto referenciado • Persistente com paralelismo – Padrão no HTTP/1.1 – Cliente envia requisições no momento em que encontra objetos referenciados – Pouco maior que um RTT para todos os objetos referenciados Redes de Computadores I – Prof. Mateus Raeder