UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Curso de Redes de Computadores Adriano Mauro Cansian [email protected] Capítulo 2 Camada de Aplicação 1 unesp - IBILCE - SJRP Capítulo 2: Camada de Aplicação Metas do capítulo: q O que? • Aspectos conceituais e de implementação de protocolos de aplicação. Conhecer... q Protocolos específicos: • HTTP FTP SMTP & POP3 DNS P2P • Programação usando sockets. • • Modelo cliente • servidor. • • Modelos de serviço. q Como é feita a programação de aplicações de rede. q Como? • • Estudo de protocolos populares da camada da aplicação. 2 Prof. Dr. Adriano Mauro Cansian 1 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Conceitos Clientes, servidores, processos, portas, sockets e outros bichos… 3 unesp - IBILCE - SJRP Aplicações e protocolos da camada de aplicação q Aplicações: são processos distribuídos que se comunicam. • Rodam em hosts. aplicação transporte rede enlace física Cliente • Sistemas finais. • • Trocam mensagens para implementar a aplicação. Exemplos: • Muitos! • Correio eletrônico, transferência de arquivos, WWW, login remoto, VoIP, etc... q Internet cresceu muito Servidor aplicação transporte rede enlace física aplicação transporte rede enlace física Cliente em complexidade. 4 Prof. Dr. Adriano Mauro Cansian 2 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Protocolos de aplicação q Protocolo da camada de aplicação: • Não é a aplicação. – É APENAS uma parte da aplicação. • O protocolo de aplicação: define mensagens trocadas por aplicações, e ações as tomadas em sua resposta. • Usam serviços providos por protocolos de camadas inferiores. Ou seja: os processos, em dois sistemas de de borda diferentes, se comunicam logicamente trocando mensagens. q Um processo emissor cria e emite mensagens na rede; q Um processo receptor recebe estas mensagens. e responde possivelmente emitindo mensagens de volta. • 5 unesp - IBILCE - SJRP O que faz um protocolo de aplicação: q Um protocolo da camada de aplicação define como os processos de aplicação trocam mensagens. q Como já dito: funcionando em sistemas de extremidade diferentes, q Um protocolo da camada de aplicação define: • Os tipos de mensagens trocadas. • A sintaxe dos vários tipos de mensagem. • • • Os campos na mensagem, e como os campos são delimitados. • Definem campos do header e do corpo da mensagem. A semântica dos campos. • • Por exemplo, mensagens do requisição e mensagens de resposta. Isto é, o significado da informação nos campos. As regras. • Determinar quando e como um processo envia e responde mensagens. 6 Prof. Dr. Adriano Mauro Cansian 3 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Como os processos trocam mensagens Cliente Servidor 7 unesp - IBILCE - SJRP Aplicações de rede: DEFINIÇÕES q Um processo é um programa que roda num host. q Dois processos no mesmo host se comunicam usando comunicação entre processos no SO. q Um agente de usuário (UA) é uma interface entre o usuário e a aplicação de rede. q Exemplos: • • Interprocess comunnication. • • Definida pelo sistema operacional (SO). • q Dois processos em hosts distintos se comunicam usando um protocolo da camada de transporte. WWW: browser. Correio: leitor/compositor de mensagens. Streaming: player de mídia. q Não é o protocolo de aplicação, apesar de conter o protocolo. 8 Prof. Dr. Adriano Mauro Cansian 4 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Paradigma cliente-servidor Aplicação de rede típica tem duas partes: cliente e servidor Cliente: • Inicia contato com o servidor • Aquele que “chama”. • Solicita serviço do servidor. Servidor: • Provê o serviço requisitado ao cliente. • Fica “ouvindo” à espera de pedidos de conexão. • Isso é uma convenção. aplicação transporte rede enlace física pedido resposta aplicação transporte rede enlace física 9 unesp - IBILCE - SJRP Protocolos da camada de aplicação API - Aplication Program Interface: • Interface de programação de aplicações. q Define a interface entre a aplicação e camada de transporte. q APIs à definidas pelos RFCs. q Socket (= tomada). • Dois processos se comunicam enviando dados para um socket , ou lendo dados de um socket. 10 Prof. Dr. Adriano Mauro Cansian 5 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Comunicação pelos sockets (1) q O socket pode ser entendido como a porta de saída e entrada 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, entrega a mensagem para o socket. O processo supõe que há um infra-estrutura de transporte no outro lado, a qual transportará a mensagem até a porta do processo do destino. O processo não precisa se preocupar como a mensagem será transportada. 11 unesp - IBILCE - SJRP Comunicação pelos sockets (2) 12 Prof. Dr. Adriano Mauro Cansian 6 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Comunicação pelos sockets (3) − Pergunta: • Como um processo identifica outro? • Veremos adiante. 13 unesp - IBILCE - SJRP Comunicação lógica client-server 14 Prof. Dr. Adriano Mauro Cansian 7 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Exemplo de comunicação lógica de um processo com conexão TCP, por intermédio dos sockets. buffering buffering 15 unesp - IBILCE - SJRP Como um processo identifica outro ? Pergunta: Como um processo pode “identificar” o outro processo com o qual quer se comunicar? q Endereço IP do host do outro processo. • • Por enquanto: o IP ADDRESS é um valor de 32-bits que identifica unicamente o sistema de extremidade. Mais precisamente: identifica unicamente a interface (placa) que conecta esse host à Internet. Ex. 200.145.9.9! q “Número de porta” : permite que o hospedeiro receptor determine para qual processo deve ser entregue a mensagem. Exemplo: Porta 80. Ex. 200.145.9.9:80 ! (RFC 1700 - Portas well-known ou WKS) 16 Prof. Dr. Adriano Mauro Cansian 8 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP De que tipo de transporte uma aplicação precisa? q Quando se desenvolve uma aplicação: • Escolher um dos protocolos disponíveis para transporte. q Como se faz esta escolha? • • Avaliar os serviços fornecidos pelos protocolos disponíveis do transporte. Escolher o protocolo com as características que melhor se adaptem às necessidades da aplicação. q Programador decide, por exemplo: • “Com Conexão” ou “Sem Conexão”. 17 unesp - IBILCE - SJRP Os principais protocolos de aplicação 18 Prof. Dr. Adriano Mauro Cansian 9 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP http 19 unesp - IBILCE - SJRP WWW q Página WWW: • Consiste de “objetos” • Endereçada por um URL: Universal Resource Locator. q Quase todas as páginas WWW consistem de: • Página base HTML, e • Vários objetos referenciados. q URL tem duas partes: nome do host, e path. q Agente de usuário para WWW = browser: • • • Chrome. Firefox. Safari, etc... q Servidor para WWW se chama “servidor WWW”: • • Apache (Open Software). Internet Information Server (IIS). gww.acmesecurity.org/themes/noprob/logo_cnpq.png 20 Prof. Dr. Adriano Mauro Cansian 10 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP WWW: o protocolo http http: Hypertext Transfer Protocol q Protocolo da camada de aplicação para WWW. PC rodando IE browser q Modelo cliente-servidor • cliente: browser que solicita, recebe (“visualiza”) objetos WWW. • servidor: servidor WWW envia objetos em resposta a pedidos. q http1.0: RFC-1945 q http1.1: RFC-2068 • (visto adiante) ped id oh ttp res pos ta htt p p htt ido tp Servidor d ht executando pe a t s po servidor res WWW Apache Mac rodando Safari 21 unesp - IBILCE - SJRP Mais sobre o protocolo http: Usa serviço de transporte TCP: http é “sem estado” (“stateless”) 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. q Servidor não mantém informação sobre pedidos anteriores do cliente. Protocolos que mantêm “estado” são complexos! • O histórico passado (estado) tem que ser mantido. • Demanda recursos maiores. • São chamados de Protocolos “Statefull”. 22 Prof. Dr. Adriano Mauro Cansian 11 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Exemplo de http (1) Exemplo: Um usuário digita a URL www.unesp.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.unesp.br. Porta 80 é padrão para servidor http. 1b. servidor http no hospedeiro www.unesp.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, elabora mensagem de resposta contendo objeto solicitado (index.html), e envia mensagem via socket. tempo Continua… 23 unesp - IBILCE - SJRP Exemplo de http (2) 4. servidor http encerra conexão TCP . 5. cliente http recebe mensagem de resposta contendo arquivo html “index.html”. Analisando arquivo html, encontra 10 objetos jpeg referenciados. 6. Passos 1 a 5 repetidos para cada um dos 10 objetos jpeg tempo E então, repete e continua... 24 Prof. Dr. Adriano Mauro Cansian 12 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Conexões não-persistente e persistente Não persistente: q HTTP/1.0 q Servidor analisa pedido, responde, e encerra conexão TCP. q 2 RTTs para trazer cada objeto (RTT = round trip time) q Transferência de cada objeto sofre de partida lenta. Persistente: q Default no HTTP/1.1 q Na mesma conexão TCP: servidor analisa pedido, responde, analisa novo pedido, etc... à não fecha a conexão. q Cliente envia pedidos para todos objetos referenciados, assim que recebe o HTML base . q Menos RTTs, e menos partida lenta. A maioria de browsers usa conexões TCP paralelas. 25 unesp - IBILCE - SJRP Conexão não-persistente (1) q O cliente HTTP inicia uma conexão TCP com o servidor. q O cliente emite mensagem de requisição HTTP usuário através do socket associado com a conexão do TCP que foi estabelecida. q Servidor HTTP recebe o request através do socket associado com a conexão estabelecida, recupera o objeto (index.html) de seu armazenamento, encapsula o objeto em uma mensagem HTTP de resposta, e emite a mensagem de resposta ao cliente através do socket. q O servidor diz ao cliente para fechar a conexão TCP. q 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. q As primeiras quatro etapas são repetidas então para cada um dos objetos JPEG referenciados. 26 Prof. Dr. Adriano Mauro Cansian 13 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Conexão não-persistente (2) q Quando o browser recebe uma página, mostra a página ao usuário q Dois browsers diferentes podem interpretar (isto é, mostrar ao usuário) um webpage de maneiras diferentes. • O HTTP não define como uma webpage é interpretada 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. q 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. q Cada conexão TCP transporta exatamente uma mensagem de pedido e uma mensagem de resposta. No nosso exemplo, quando um usuário requisita uma página, 11 conexões TCP são geradas. (discutir conexões paralelas) 27 unesp - IBILCE - SJRP Conexão não-persistente (3) 28 Prof. Dr. Adriano Mauro Cansian 14 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Round Trip Time (1) q Quantidade de tempo gasta entre cliente solicitar um arquivo HTML até que o arquivo esteja recebido? q Tempo round-trip-time (RTT), é o tempo gasto para um pacote viajar do cliente ao servidor e então voltar ao cliente. É o tempo de ida-e-volta. q RTT inclui os atrasos de propagação, de enfileiramento e de processamento em routers e comutadores intermediários. q Usuário clica num hyperlink. Isto faz com que o browser inicie uma conexão do TCP entre o browser e o web server. q Envolve um “three-way handshake”: o cliente emite uma mensagem TCP ao servidor, o servidor reconhece e responde com uma mensagem. Finalmente, o cliente confirma de volta ao servidor. 29 unesp - IBILCE - SJRP Round Trip Time (2) q Mais um RTT decorre após as duas primeiras partes do three-way handshake. • Após ter terminado as primeiras duas partes do handshake, o cliente emite a mensagem de requisição HTTP na conexão TCP, e o TCP “agrega” a última confirmação (a terceira parte do three-way handshake) na mensagem do pedido. Uma vez a mensagem do pedido chega no usuário, o usuário emite o arquivo HTML na conexão do TCP. q Esta interação HTTP “request-response” gasta outro RTT. q Assim, o tempo de resposta total é dois RTTs mais o tempo da transmissão do arquivo HTML pelo servidor. 30 Prof. Dr. Adriano Mauro Cansian 15 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Conexão persistente (1) q Cada objeto sofre dois RTTs: • um RTT para estabelecer a conexão TCP, e • um RTT para solicitar e receber um objeto. q Cada objeto sofre do “partida lenta”(slow start) do TCP. q Com as conexão persistente, o servidor deixa a conexão TCP aberta após ter emitido uma resposta. q Os pedidos e as respostas subseqüentes entre o mesmos cliente e servidor podem ser emitidos na mesma conexão. q Uma webpage inteira (no exemplo, o arquivo HTML base e as 10 imagens) pode ser emitido sobre uma única conexão persistente do TCP. 31 unesp - IBILCE - SJRP Conexão persistente (2) 32 Prof. Dr. Adriano Mauro Cansian 16 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Não-persistente X persistente 33 unesp - IBILCE - SJRP Conexão persistente (2) q Duas versões de conexões persistentes: q sem pipelining (paralelismo) e com pipelining. • Sem pipelining: o cliente emite um pedido novo somente quando a resposta precedente foi recebida. • Com pipelining: o cliente emite um pedido assim que encontrar uma referência. • É o default para HTTP/1.1. 34 Prof. Dr. Adriano Mauro Cansian 17 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Formato das mensagens HTTP q Dois tipos de mensagem http: • • Requisição (Request) Resposta (Reply) q Mensagem http: formato ASCII • Mensagens são legíveis sem necessidade de interpretador. 35 unesp - IBILCE - SJRP Mensagem http de requisição (1) Formato geral de uma mensagem de requisição 36 Prof. Dr. Adriano Mauro Cansian 18 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Mensagem http de requisição (2) linha do pedido (comandos GET, GET /dir/page.html HTTP/1.1 POST, HEAD) User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg linhas do Accept-language:en cabeçalho Carriage return, line feed indica fim de mensagem (carriage return (CR), line feed (LF) adicionais) 37 unesp - IBILCE - SJRP Mensagem http de resposta (1) Note a diferença nestes campos Formato geral de uma mensagem de RESPOSTA 38 Prof. Dr. Adriano Mauro Cansian 19 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Mensagem http de resposta (2) código de status linha de status (protocolo, código de status, frase de status) linhas de cabeçalho dados. Por ex: conteúdo do arquivo html solicitado frase de status HTTP/1.1 200 OK Date: Thu, 06 Jan 2014 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Dec 2013…... Content-Length: 6821 Content-Type: text/html dados dados dados dados ... 39 unesp - IBILCE - SJRP Códigos de status da resposta http q Aparecem na primeira linha da mensagem de resposta cliente-servidor. • Alguns códigos típicos: 200 OK • Sucesso. Objeto pedido segue mais adiante nesta mensagem. 301 Moved Permanently • Objeto pedido mudou de lugar, nova localização especificado mais adiante nesta mensagem (Location:) 400 Bad Request • Mensagem de pedido não entendida pelo servidor. 404 Not Found • Documento pedido não se encontra neste servidor. 505 HTTP Version Not Supported • Versão de http do pedido não aceita por este servidor. 40 Prof. Dr. Adriano Mauro Cansian 20 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP HTML (HyperText Markup Language) q HTML: uma linguagem simples para hipertexto • começou como versão simples de SGML. • construção básica: cadeias de texto. q Construtores de formato operam sobre cadeias • • • <b> .. </b> ! !bold (negrito)! <H1 ALIGN=CENTER> ..título centrado .. </H1>! <BODY bgcolor=white text=black link=red ..> .Texto... </BODY>! q Vários formatos • listas de bullets, listas ordenadas, listas de definição • tabelas • Frames • Etc... Etc... 41 unesp - IBILCE - SJRP Formulários e páginas dinâmicas na web (interação bidirecional e integração com banco de dados) q Formulários transmitem q Páginas dinâmicas: processadas informação do cliente ao servidor. q HTTP permite enviar q formulários ao servidor. q Resposta enviada como página HTML dinâmica. cliente WWW Prof. Dr. Adriano Mauro Cansian GET/POST formulário resposta: HTML usando scripts ou outro tipo de código. Acessam programas que rodam no servidor WWW. • permitem acesso a diferentes serviços. • servidor WWW atua como gateway universal. servidor WWW Sistema de informação 42 21 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Webservices q Solução utilizada para integração de sistemas e comunicação entre aplicações diferentes. • • Permite que novas aplicações possam interagir outras já existentes. Permite que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. q São componentes que permitem às aplicações enviar e receber dados em formato XML. • Cada aplicação pode ter a sua própria linguagem, que é traduzida para uma linguagem universal XML. q O objetivo dos webservices é a comunicação de aplicações através da Internet. 43 unesp - IBILCE - SJRP Web: autenticação q Autenticação: controle de acesso ao servidor. cliente q Sem estado: cliente deve apresentar autorização em cada pedido. q Autorização: tipicamente nome e senha. • authorization: linha de cabeçalho no pedido. • Se não for apresentada autorização, servidor nega acesso, e coloca no cabeçalho da resposta servidor msg de pedido http comum 401: authorization req. WWW authenticate: msg de pedido http comum + Authorization:line msg de resposta http comum WWW authenticate: Browser: faz cache do username e senha para evitar que sejam pedidos ao usuário a cada acesso. Prof. Dr. Adriano Mauro Cansian msg de pedido http comum + Authorization:line msg de resposta http comum tempo 44 22 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Web: cookies q Servidor envia “cookie” ao servidor cliente cliente na msg de resposta Set-cookie: 1678453 msg de pedido http comum resposta http comum+ Set-cookie: # q Cliente apresenta cookie nos pedidos posteriores msg de pedido http comum cookie: 1678453 Ação específica msg de resposta http comum do cookie q Servidor casa o cookie cookie: # apresentado com a info guardada no servidor. • Autenticação. • Lembrando preferências do usuário, opções anteriores, etc… msg de pedido http comum Ação específica msg de resposta http comum do cookie cookie: # 45 unesp - IBILCE - SJRP GET condicional e aplicação em proxies servidor cliente q Meta: não enviar objeto se cliente já tem (no cache) versão atual. q Cliente: especifica data da cópia em cache no pedido http If-modified-since: <date> q Servidor: resposta não contém objeto se a cópia no cache é atual: HTTP/1.1 304 Not Modified msg de pedido http If-modified-since: <date> resposta http objeto não modificado HTTP/1.1 304 Not Modified msg de pedido http If-modified-since: <date> resposta http objeto modificado HTTP/1.1 200 OK … <data> 46 Prof. Dr. Adriano Mauro Cansian 23 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP cache proxy Meta: atender pedido do cliente sem envolver servidor de origem. q Usuário configura browser: acessos WWW via procurador (proxy). q Cliente envia todos pedidos http ao procurador. • • Se objeto está no cache do procurador, este o devolve imediatamente na resposta http. Senão, solicita objeto do servidor de origem, armazena e depois devolve resposta http ao cliente. Servidor de origem cliente Servidor proxy ped id ttp oh d i tp d ht pe sta o p res oh ttp res pos ta htt p ttp h o tp did ht pe a t s po res ped ido htt res p pos ta htt p cliente Servidor de origem 47 unesp - IBILCE - SJRP Por que usar cache WWW ? Suposição: cache está “próximo” do cliente (por exemplo na mesma rede). Internet pública Servidores de origem q Tempo de resposta menor. q Diminui tráfego aos servidores distantes, • Muitas vezes é o gargalo é o enlace (link) que liga a rede da instituição até a Internet. enlace de accesso 2 Mbps rede da instituição LAN 10 Mbps cache da instituição 48 Prof. Dr. Adriano Mauro Cansian 24 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Para se aprofundar em http: q Learn http project - http://project67555.appspot.com/http.html q Detailed Explanation of HTTP Headers. • http://djce.org.uk/dumprequest q The difference between HTTP 1.0 and HTTP 1.1 • http://www8.org/w8-papers/5c-protocols/key/key.html (Links verificados em 01/04/2014) 49 unesp - IBILCE - SJRP FTP File Transfer Protocol 50 Prof. Dr. Adriano Mauro Cansian 25 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP FTP: o protocolo de transferência de arquivos usuário na estação Interface cliente do usuário FTP FTP transferência do arquivo FTP servidor sistema de arquivos remoto sistema de arquivos local q Transferir arquivo de /para hospedeiro remoto q Modelo cliente / servidor cliente: lado que inicia transferência. servidor: host remoto. q FTP - File Transfer Protocol: definido pelo [RFC 959] q Servidor FTP: atende na porta 21 • • 51 unesp - IBILCE - SJRP FTP: conexões separadas para controle e dados q Usa TCP como protocolo de transporte. q São abertas 2 conexões TCP paralelas: FTP: Outband control x (1) conexão de controle TCP, porta 21 21 Controle: troca comandos, y 20 respostas entre cliente, (2) conexão de dados cliente servidor (porta 21). servidor TCP, porta 20 FTP FTP “controle fora da banda” • Dados: dados de arquivo de/para servidor (porta 20). q Servidor ftp mantém “estado”: • • Diretório corrente, e autenticação realizada. 52 Prof. Dr. Adriano Mauro Cansian 26 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP FTP: conexões separadas para controle e dados (Active Open mode) 53 unesp - IBILCE - SJRP FTP Active Open 54 Prof. Dr. Adriano Mauro Cansian 27 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP FTP Active Open e firewall 55 unesp - IBILCE - SJRP FTP Passive Open http://securitywing.com/active-vs-passive-ftp-mode/ 56 Prof. Dr. Adriano Mauro Cansian 28 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Fluxo FTP Passive Open 57 unesp - IBILCE - SJRP FTP: comandos e respostas Comandos típicos: q Enviados em texto ASCII pelo canal de controle. • • • • • USER nome PASS senha LIST devolve lista de arquivos no diretório corrente RETR arquivo recupera (lê) arquivo remoto STOR arquivo armazena (escreve) arquivo no host remoto. Códigos de retorno típicos: q código e frase de status (como para http). • • • • 331 Username OK, password required 125 data connection already open; transfer starting 425 Can’t open data connection 452 Error writing file 58 Prof. Dr. Adriano Mauro Cansian 29 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Correio Eletrônico SMTP e outros protocolos de aplicação 59 unesp - IBILCE - SJRP Correio Eletrônico (1) Três grandes componentes: q Agentes de usuário: q Mail User Agent (MUA). q Agente de transporte (servidores). q Mail Transport Agent (MTA). q Protocolo de correio eletrônico. • Implementado pelo MTA. • SMTP: Simple Mail Transfer Protoco. • É o mais usado. q Observação: O MTA pode ter mais de um protocolo de correio eletrônico. SMTP não é o único, apesar de ser o padrão da Internet. 60 Prof. Dr. Adriano Mauro Cansian 30 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Correio Eletrônico (2) MUA - Agente de Usuário q Conhecido como “leitor de e-mail”. q É o lado “cliente”. q Compor, editar, ler mensagens de correio q Exemplo: Outlook, Firebird, Mac Mail, Pine, e outros. q Mensagens de saída e chegada são armazenadas no servidor. MUA 61 unesp - IBILCE - SJRP Correio Eletrônico: servidores Servidores de correio q Fila de mensagens: • Contém mensagens de saída (a serem enviadas). q Caixa de correio: • Contém mensagens de chegada (ainda não lidas) p/ usuário. q Protocolo SMTP • entre servidores para transferir mensagens de correio. • • Cliente: servidor de correio que envia “Servidor”: servidor de correio que recebe. 62 Prof. Dr. Adriano Mauro Cansian 31 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Correio Eletrônico: SMTP [RFC 821] q Usa TCP para a transferência confiável de mensagens. • Porta 25/TCP q Transferência direta: remetente ao servidor receptor. q 3 fases da transferência: • 1 - Handshaking (cumprimento). • NÃO confundir com handshaking do TCP !! 2 - Transferência das mensagens. • 3 – Encerramento. q Interação comando/resposta • Comandos: são em texto ASCII. • Resposta: envia código e frase de status. • q Mensagens precisam ser em ASCII de 7-bits. 63 unesp - IBILCE - SJRP Interação SMTP típica S: C: S: C: S: C: S: C: S: C: C: C: S: C: S: 220 doces.br HELO consumidor.br 250 Hello consumidor.br, pleased to meet you MAIL FROM: <[email protected]> 250 [email protected]... Sender ok RCPT TO: <[email protected]> 250 [email protected] ... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Eu gostaria de comprar alguns doces. Você tem uma lista de preços? Obrigada. –Ana. . 250 Message accepted for delivery QUIT 221 doces.br closing connection 64 Prof. Dr. Adriano Mauro Cansian 32 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP ( Exercício: experimente uma interação SMTP com seu servidor de e-mail. ) q telnet nomedoservidor.algumlugar.br 25 q Observe a resposta 220 do servidor q Entre comandos HELO, MAIL FROM, RCPT TO, DATA, QUIT, HELP. q Estes comandos permitem que você envie correio sem usar um cliente (leitor de correio). • Basta conhecer o formato das mensagens do protocolo. q Pesquisar a respeito das mensagens de protocolo mais usadas no SMTP. 65 unesp - IBILCE - SJRP SMTP: detalhes q SMTP usa conexões persistentes. q SMTP requer que a mensagem (cabeçalho e corpo) sejam em ASCII de 7-bits. q Algumas cadeias de caracteres não são permitidas numa mensagem (p.ex., CRLF.CRLF). Assim, a mensagem pode ter que ser codificada (normalmente em base-64 ou “quoted printable”). q Servidor SMTP usa CRLF.CRLF para reconhecer o final da mensagem. Exercício: faça uma comparação entre o SMTP e o http. q q q HTTP: pull (puxar)? E-mail: push (empurrar)? Ambos tem interação comando/resposta, e códigos de status em ASCII? HTTP: cada objeto é encapsulado em sua própria mensagem de resposta? q SMTP: múltiplos objetos de mensagem enviados numa mensagem de múltiplas partes? q Discuta outras questões que achar relevantes. q 66 Prof. Dr. Adriano Mauro Cansian 33 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Formato de uma mensagem de e-mail q RFC 822: padrão para cabeçalho formato de mensagem: q Linhas de cabeçalho (header): To: From: • Subject: (NÃO são os comandos de smtp) • linha em branco • corpo q Corpo • • • É a “mensagem”. Somente de caracteres ASCII . Termina com um “.” ponto 67 unesp - IBILCE - SJRP Formato de uma mensagem: extensões para multimídia q MIME: multimedia mail extension, RFC 2045, 2056 q Linhas adicionais no cabeçalho da mensagem declaram tipo do conteúdo MIME. versão MIME método usado para codificar dados tipo, subtipo de dados multimídia, declaração parâmetros Dados codificados From: [email protected] To: [email protected] Subject: Imagem de uma bela torta MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data 68 Prof. Dr. Adriano Mauro Cansian 34 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Tipos MIME Content-Type: tipo/subtipo; parâmetros Text Audio q sub-tipos exemplos: plain, q Sub-tipos exemplos : basic html q charset=“iso-8859-1”, ascii (8-bit codificado mu-law), 32kadpcm (codificação 32 kbps). Image Application q sub-tipos exemplos : jpeg, q Outros dados que precisam ser gif Video q sub-tipos exemplos : mpeg, processados por um leitor para serem “visualizados”. q subtipos exemplos : msword, octet-stream quicktime 69 unesp - IBILCE - SJRP Tipo Multiparte From: [email protected] To: [email protected] Subject: Imagem de uma bela torta MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain caro Bernardo, Anexa a imagem de uma torta deliciosa. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data --98766789-70 Prof. Dr. Adriano Mauro Cansian 35 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Protocolos de acesso ao correio MTA SMTP SMTP MTA MUA POP3 ou IMAP MUA MAA servidor de correio do remetente servidor de correio do receptor q SMTP: entrega/armazenamento no servidor do receptor. q Protocolo de accesso ao correio: recupera do servidor. q MAA - Mail Access Agent • • POP3: Post Office Protocol [RFC 1939] • Autorização (agente - servidor) e transferência. IMAP: Internet Mail Access Protocol [RFC 1730] • Mais comandos e mais opções (mais complexo). • Manuseio de msgs armazenadas no servidor • Através de HTTP: Gmail, Hotmail, Webmail em geral: não é exatamente um “protocolo” de e-mail e sim um mecanismo. 71 unesp - IBILCE - SJRP IMAP x POP3 72 Prof. Dr. Adriano Mauro Cansian 36 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Como funciona tudo junto: MAA MSA - Message Submission Agent 73 unesp - IBILCE - SJRP Sendmail – Qmail – Postfix - Qpopper Fonte: http://www.vanemery.com/Protocols/SMTP/smtp.html (April 7, 14) Prof. Dr. Adriano Mauro Cansian 74 37 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP DNS Domain Name System 75 unesp - IBILCE - SJRP DNS: Domain Name System (1) Pessoas: • Possuem muitos identificadores: • CPF, No. de Passaporte, RG, NOME, etc... Dispositivos na Internet: • Dispositivos Internet (hosts, roteadores, etc...) usam números. Endereço IP (32 bits): usado para endereçar datagramas. Será detalhado no estudo da camada de rede. “Nome” : é usado por humanos. • www.unesp.br = 200.145.9.9 • • • Como mapear entre nome e endereço IP? 76 Prof. Dr. Adriano Mauro Cansian 38 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP DNS: Domain Name System (2) q (1) Uma base de dados distribuída implementada em uma hierarquia de muitos servidores de nomes (nameservers). q (2) Um protocolo da camada de aplicação que permite que os hosts e os servidores de nomes se comuniquem, de modo a fornecer o serviço de tradução → “resolver”. Resolver nome = traduzir nome em endereço IP. q Os servidores de nomes (nameservers) são frequentemente máquinas Unix que rodam o software Berkeley Internet Name Domain (Bind). q O protocolo do DNS funciona sobre UDP e usa a porta 53. 77 unesp - IBILCE - SJRP Servidores de nomes DNS Por quê não centralizar o DNS? q Ponto único de falha. q Volume de tráfego. q Base de dados centralizada seria distante. q Dificuldade de Manutenção da BD. Ou seja: Problemas de escalabilidade q Nenhum servidor mantém todos os mapeamento nomepara-endereço IP. Servidor de nomes local: • • Cada provedor, empresa ou instituição tem servidor de nomes local (default) Pedido DNS de um host vai primeiro ao servidor de nomes local. Servidor de nomes autoritativo: • • Para o host: guarda nome, endereço IP dele. Pode realizar tradução nome/ endereço para este nome. 78 Prof. Dr. Adriano Mauro Cansian 39 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP DNS: Servidores raiz (root servers) q Procurado por servidor local que não consegue resolver o nome. q Servidor raíz: Procura servidor autoritativo se mapeamento for desconhecido. Obtém tradução. • Devolve mapeamento ao servidor local. Existem 13 de servidores raíz no mundo. Seus endereços IP são fixos e raramente mudam. São representados por “letras” de A até M. Cada servidor “letra” tem vários espelhos espalhados pelo mundo. • • q q q q 79 unesp - IBILCE - SJRP DNS Root servers de A até M 80 Prof. Dr. Adriano Mauro Cansian 40 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP DNS Root servers de A até M 81 unesp - IBILCE - SJRP DNS Root servers & mirrors http://root-servers.org/ Exercício: o que é o AS112 ? Prof. Dr. Adriano Mauro Cansian 82 41 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Consulta e resolução de DNS (1) 83 unesp - IBILCE - SJRP Consulta e resolução de DNS (2) 84 Prof. Dr. Adriano Mauro Cansian 42 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Consulta e resolução de DNS (3) 85 unesp - IBILCE - SJRP DNS: uso de cache, atualização de dados q Uma vez um servidor qualquer aprende um mapeamento, ele o coloca numa cache local. • Futuras consultas são resolvidas usando dados da cache. • Entradas no cache são sujeitas a temporização (desaparecem depois de certo tempo) ttl = time to live (sobrevida). 86 Prof. Dr. Adriano Mauro Cansian 43 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Registros DNS DNS: BD distribuída contendo resource records (RR) formato RR: (nome, valor, tipo, sobrevida) q Tipo=CNAME q Tipo=A • nome é nome alternativo • nome é nome de hospedeiro (alias) para algum nome • valor é endereço IP “canônico” (verdadeiro) q Tipo=NS • valor é o nome • nome é domínio (p.ex. canônico foo.com.br) q Tipo=MX • valor é endereço IP de servidor de nomes autoritativo • nome é domínio para este domínio • valor é nome do servidor de correio para este domínio. 87 unesp - IBILCE - SJRP Protocolo DNS: • Mensagens pedido e resposta, ambas com o mesmo formato de mensagem • Cabeçalho de mensagem q identification: ID de 16 bit para pedido, resposta ao pedido usa mesmo ID q flags: • • • • pedido ou resposta recursão desejada recursão permitida resposta é autoritativa http://www.troyjessup.com/headers/ Prof. Dr. Adriano Mauro Cansian 88 44 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP DNS: protocolo e mensagens campos nome, tipo num pedido RRs em resposta ao pedido registros para servidores autoritativos info adicional “relevante” que pode ser usada 89 unesp - IBILCE - SJRP Compartilhamento de arquivos Aplicações P2P 90 Prof. Dr. Adriano Mauro Cansian 45 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Compartilhamento de arquivos P2P Exemplo: • Alice executa a aplicação cliente P2P em seu notebook. • Intermitentemente à conecta-se à Internet; • Obtém novo endereço IP para cada conexão. • Procura por um determinado arquivo de uma música. • A aplicação exibe outros peers que possuem uma cópia da música. • Alice escolhe um dos pares: Bob. • O arquivo é copiado do PC de Bob para o notebook de Alice: • por exemplo via HTTP. • Enquanto Alice faz o download: outros usuários fazem upload da máquina de Alice. • O peer “Alice” é tanto um cliente Web como um servidor Web transiente. Todos os pares são servidores = altamente escaláveis! unesp - IBILCE - SJRP Modelo Cliente / Servidor q Modelo mais usado na Internet. • Dependente de servidores bem configurados em com informação acessível. q Não explora o potencial de computação distribuída proveniente da Rede. • A existência de um ou milhares de computadores é indiferente na interação de um usuário típico com a rede. q PCs clientes com capacidade considerável ficam “escondidos”, formando um exército com alto potencial. Prof. Dr. Adriano Mauro Cansian 46 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Definição de sistema P2P (1) Compartilhamento de recursos e serviços computacionais, diretamente entre sistemas. unesp - IBILCE - SJRP Definição de sistema P2P (1) q Classe de aplicações que leva vantagem de recursos disponíveis nas bordas da rede. q Quais recursos? • • • • • Armazenamento. Tempo de CPU. Bandwidth. Conteúdo. Presença humana. Prof. Dr. Adriano Mauro Cansian 47 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Questões Fundamentais: Triplo “C”: • Colaboração • Cooperação • Compartilhamento unesp - IBILCE - SJRP Características P2P (1) q Sistemas distribuídos sem controle centralizado ou organização hierárquica. q Software executado em cada peer é equivalente em funcionalidade. q Quantidade exponencial de adeptos. Prof. Dr. Adriano Mauro Cansian 48 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Características P2P (2) q Cada participante age como cliente e servidor ao mesmo tempo (servent). q Cada cliente “paga” a sua participação fornecendo acesso a (alguns de) seus recursos. • Peering. unesp - IBILCE - SJRP Características P2P (3) q Sem coordenação central. q Sem banco de dados central. q Sem local único de falha ou gargalo. q Nenhum ponto (peer) tem visão global do sistema. q Comportamento global definido por interações locais. q Todos os dados e serviços são acessíveis de qualquer ponto. q Pontos são autônomos. q Pontos e conexões não são confiáveis. Prof. Dr. Adriano Mauro Cansian 49 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Principais vantagens q Escalabilidade • Não há gargalo para crescimento. q Robustez • Não há ponto de falha único. q Flexibilidade • Auto-configuração / configuração dinâmica. unesp - IBILCE - SJRP Comparação entre Roteadores e sistemas P2P q Descobrem e mantêm topologia. q Não são clientes nem servidores. q Continuamente falam uns com os outros. q São inerentemente tolerantes a falhas. q São autônomos. Prof. Dr. Adriano Mauro Cansian 50 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Teste P2P q O sistema aceita conectividade variável e endereços IP temporários? q O sistema dá uma autonomia significativa aos computadores na borda da rede? q Os nós podem trocar informações livremente entre si, sem arbitragem central? unesp - IBILCE - SJRP P2P X Redes de Cobertura (Overlay) q Overlay • Rede virtual: rede sobre outra rede (IP). • Os enlaces são conexões entre nós da rede. q P2P frequentemente utilizada para criar overlays. • Oferecendo serviços que poderiam ser implementados na camada IP. • Estratégia muito útil para implantação. q Em certos casos, pode contornar barreiras econômicas. • Exemplo: IP era um overlay (sobre a rede de telefonia) q Nem todos os overlays são P2P (AKAMAI). Prof. Dr. Adriano Mauro Cansian 51 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Redes Overlay enlace virtual Rede Overlay enlace físico Rede Física unesp - IBILCE - SJRP Modelos de Sistemas P2P (Classificação 1) q Modelo Centralizado - depreciado • Índice global mantido por um autoridade central. • Contato direto entre clientes e provedores. • Exemplo: Napster. q Modelo Descentralizado • Sem índice global (sem coordenação global) • Exemplos: Gnutella, Freenet. q Modelo Hierárquico • • Introdução dos super-nós (super-nodes ou super-peers). Mistura dos modelos centralizado e descentralizado • Exemplos: KaZaA, Morpheus. Prof. Dr. Adriano Mauro Cansian 52 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Modelos de Sistemas P2P (Classificação 2) q Centralized Service Location (CSL) • Busca centralizada • Exemplo: Napster q Flooding-based Service Location (FSL) • Busca baseada em inundação • Exemplo: Gnutella q Distributed Hash Table-based Service Location (DHT) • • Busca baseada em tabela de hash distribuída Exemplo: Bittorrent unesp - IBILCE - SJRP Modelos de Sistemas P2P (Classificação 3) q Modelo Centralizado • Napster, intant mesengers (ICQ, MSN, etc...) q Modelo Descentralizado e Não Estruturado. • Super-Nós: KaZaA • Inundação: Gnutella q Modelo Descentralizado e Estruturado • DHT. • Bittorrent. Prof. Dr. Adriano Mauro Cansian 53 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Aplicação: Troca de Mensagens q IM (Instant Messaging) q Aplicação popular na Internet, pela facilidade de enviar mensagens on-line. • Exemplos: • • • • MSN Messenger (http://messenger.msn.com) Yahoo! Messenger (http://messenger.yahoo.com) ICQ – (http://web.icq.com) Jabber – (http://ww.jabber.org) unesp - IBILCE - SJRP Aplicação: Compartilhamento de Arquivos q Aplicação de maior sucesso na Internet. • Permite usuários compartilharem diretamente seus arquivos, músicas, vídeos, etc... q Características • • • • Área de armazenamento. Disponibilidade de informações. Anonimato. Gerenciamento. Prof. Dr. Adriano Mauro Cansian 54 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Aplicações: Computação Distribuída q Idéia de aproveitar recursos computacionais ociosos não é nova. q Grade Computacional (Grid) • • Solução de computação distribuída para engenharia e ciências, baseada em compartilhamento de recursos em larga escala. Semelhanças e diferenças com P2P. q SETI@Home (http://setiathome.ssl.berkeley.edu) • The Search for Extraterrestrial Intelligence • Usuários executam partes da “busca”. unesp - IBILCE - SJRP SETI@Home Prof. Dr. Adriano Mauro Cansian 55 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Modelo Centralizado Diretório central Iron Maiden ? unesp - IBILCE - SJRP Modelo por Inundação Prof. Dr. Adriano Mauro Cansian 56 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Modelo por Inundação unesp - IBILCE - SJRP Modelo de Super-Nós Super-Nós Prof. Dr. Adriano Mauro Cansian 57 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Modelo DHT q Hash • Estrutura de dados importantes para desenvolvimento. q Hash distribuído na escala da Internet q Importante para sistemas distribuídos grandes. q Sistemas P2P. q Espelhamento de servidores Web. unesp - IBILCE - SJRP DHT: Funcionamento q Função de hash mapeia objeto para um identificador único. • Ex: hash(“Aquarela do Brasil”) à 8045 q Faixa de resultados da função de hash é distribuída pela rede. Prof. Dr. Adriano Mauro Cansian 58 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP DHT: Funcionamento q Cada nó deve “conhecer” pelo menos uma cópia do objeto que foi colocado na sua faixa de hash. q Localização dos objetos • • Nós armazenam os objetos que são mapeados para a sua faixa de hash. Nós armazenam apontadores para os objetos na sua faixa. unesp - IBILCE - SJRP DHT: Roteamento q Para cada objeto, o nó (os nós) cuja faixa cobre o objeto deve ser alcançável por um caminho “curto”. • De qualquer outro nó. q Em geral, qualquer função aleatória de hash “boa” é suficiente. • Padrão SHA-1 (colisão praticamente impossível) Prof. Dr. Adriano Mauro Cansian 59 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Aplicações mais populares 119 unesp - IBILCE - SJRP Naspter q Primeiro programa de compartilhamento massivo de arquivos através de P2P. q Shawn Fanning. • • • • Primeira versão: 1999 Popularidade: início de 2000. Pico: 2001 à 8 M users/dia ≈ 20 M músicas / dia. No início de 2001 não resistiu a uma série de ações legais e o serviço foi fechado em março. • Batalha judicial com a RIAA* • Novembro de 2002 à direitos * Recording Industry Association of America. Prof. Dr. Adriano Mauro Cansian para a Roxio. 60 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Naspter simplificado q Quando um par se conecta, ele informa ao servidor central: • • Endereço IP. Conteúdo. q Alice procura por “Hey Jude”. q Servidor central informa onde existe este arquivo. q Alice requisita o arquivo de Bob. unesp - IBILCE - SJRP Napster: funcionamento 1. 2. 3. 4. 5. Cliente se conecta com servidor e envia a sua lista de arquivos compartilhados. Cliente envia palavras-chave para fazer busca na lista completa. Cliente testa taxa de transmissão dos pares que têm o arquivo solicitado (ping). Peers respondem (pong). O arquivo é transferido diretamente entre os pares. Prof. Dr. Adriano Mauro Cansian 61 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Napster - Problemas q Servidor centralizado • Ponto único de falhas. • Pode usar o DNS para balancear carga entre servidores. • Sujeito a congestionamentos. • Sob controle total do Napster. • Apenas ilusão de liberdade. q Nenhuma segurança: • Sem criptografia. • Sem autenticação. • Sem privacidade (identidade é revelada). unesp - IBILCE - SJRP Gnutella (1) q Sistema de busca totalmente distribuído. • Protocolo aberto. q Busca baseada em inundação (flooding). q História: • 14/03/2000: Disponibilizado sob licença pública GNU no servidor web da Nullsoft (pertencente à AOL). • Retirado apenas algumas horas depois. • Tarde demais: muitos usuários fizeram download. • O protocolo Gnutella foi “descoberto” através de engenharia reversa. • Outros clientes foram disponibilizados e Gnutella começou a se popularizar. Prof. Dr. Adriano Mauro Cansian 62 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Gnutella (2) q A sua principal característica é a busca distribuída. q Problema: Tráfego gerado = Escalabilidade. q Despertou grande interesse na comunidade acadêmica. • • Não depende de servidor central. Problema inicial: descobrir algum nó que está na rede. Depois, já está na rede. unesp - IBILCE - SJRP BitTorrent q Bram Cohen – Abril de 2001. q Procolo aberto. q Descentralizado. q Modelo híbrido. q DHT (Kademlia). q Implementado pelo Azureus (atual Vuze) 126 Prof. Dr. Adriano Mauro Cansian 63 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP BitTorrent (2) q Tracker. • Peer cria um arquivo de metadata: .torrent contendo um hash do que vai ser compartilhado. • Envia para o tracker à servidor supernode. • Clientes buscam informações dos compartilhamento nos trackers. • Também possibilidade de operação trackerless e multitracker. q Clientes: • • BitTorrent, µTorrent, rTorrent, KTorrent, BitComet à DHT Vuze (Ex-Azureus) à suporta trackerless (incompatível com DHT, apesar de que desenvolveu o DHT primeiro). 127 unesp - IBILCE - SJRP BitTorrent- funcionamento 128 Prof. Dr. Adriano Mauro Cansian 64 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Programação com sockets Como funcionam as aplicações cliente/servidor 129 unesp - IBILCE - SJRP Programação com sockets Meta: aprender construir aplicação cliente/servidor que se comunica usando sockets. API Sockets socket q Surgiu em BSD4.1 UNIX, 1981 q Explicitamente criados, usados e liberados por aplicações. q Paradigma cliente/servidor q Dois tipos de serviço de transporte via API Sockets • • Datagrama não confiável 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 de/ para outro processo de aplicação (remoto ou local) 130 Prof. Dr. Adriano Mauro Cansian 65 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP 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 controlado pelo programador de aplicação processo processo socket TCP com buffers, variáveis controlado pelo sistema operacional estação ou servidor internet socket TCP com buffers, variáveis controlado pelo programador de aplicação controlado pelo sistema operacional estação ou servidor 131 unesp - IBILCE - SJRP Programação com sockets usando TCP Cliente deve contactar servidor: q Quando cliente cria socket: TCP do cliente estabelece conexão ao q Processo servidor deve antes servidor TCP estar em execução q Quando contactado pelo cliente, q Servidor deve antes ter criado servidor TCP cria socket novo socket (porta) que aguarda processo servidor poder se contato do cliente comunicar com o cliente. • Permite que o servidor Cliente contacta servidor por: converse com múltiplos q Criar socket TCP local ao clientes. cliente q Especificar endereço IP, ponto de vista da aplicação número de porta do processo TCP provê transferência servidor confiável, ordenada de bytes (“tubo”) entre cliente e servidor 132 Prof. Dr. Adriano Mauro Cansian 66 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Programação com sockets usando TCP Input stream: seqüência de bytes para dentro do processo. doUsuário doServidor Output stream: seqüência de bytes para fora do processo. pparaServidor Exemplo de aplicaçao clienteservidor: q Cliente lê linha da entrada padrão (fluxo doUsuário), envia para servidor via socket (fluxo paraServidor). q Servidor lê linha do socket. q Servidor converte linha para letra maiúscula, e devolve para o cliente. q Cliente lê linha modificado do socket (fluxo doServidor), imprime-a socket do cliente 133 unesp - IBILCE - SJRP Capítulo 2: Sumário Terminamos nosso estudo de aplicações de rede! q Requisitos do serviço de aplicação: • Confiabilidade, banda, retardo. q Paradigma cliente-servidor. q Modelo de serviço do transporte orientado a conexão, confiável da Internet: TCP. q Modelo não confiável: datagramas UDP. q Protocolos específicos: • HTTP • FTP. • SMTP, IMAP e POP3. • DNS. • P2P. q Sockets • Implementação cliente/ servidor. • Usando sockets tcp, udp. 134 Prof. Dr. Adriano Mauro Cansian 67 UNESP - IBILCE - SJRP - Curso de Redes de Computadores Capítulo 2 unesp - IBILCE - SJRP Capítulo 2: Sumário Mais importante - aprendemos de protocolos: q Troca típica de mensagens em pedido/resposta: • • Cliente solicita info ou serviço. Servidor responde com dados, e código de status. q Formatos de mensagens: • • Cabeçalhos: campos com informações sobre dados (metadados). Dados: informação sendo comunicada. q Msgs de controle X dados. • na banda, fora da banda q Centralizado X descentralizado q Sem estado X com estado q Transferência de msgs confiável X não confiável q “Complexidade na borda da rede”. 135 Prof. Dr. Adriano Mauro Cansian 68