Infra-Estrutura de Comunicação (IF678) Aula Prática 01 Telnet, SMTP, HTTP e Socket Flávio Almeida ([email protected]) http://www.cin.ufpe.br/~faas/comunicacao Professor: Paulo Gonçalves ([email protected]) CIn/UFPE Nosso objetivo: Visão geral sobre protocolos da camada de aplicação Consulta a RFC’s Entender o Telnet Utilizar o Telnet para enviar e-mail (SMTP) Utilizar o Telnet para efetuar requisições HTTP Compreender a comunicação entre processos – Socket 2 Agenda 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Sobre protocolos Camadas da Internet Telnet: Protocolo x Aplicativo Telnet x SSH Correio Eletrônico O Protocolo SMTP Mensagens SMTP SMTP: Prática O Protocolo HTTP Métodos HTTP HTTP: Prática Definição de Socket 3 Sobre protocolos “...protocolo é um padrão que especifica o formato de dados e as regras a serem seguidas...” Para que possa haver harmonia na comunicação entre as partes envolvidas Análogos aos vários idiomas existentes... Exemplos: HTTP*, FTP*, DNS*, TCP**, UDP** (*) Protocolo da camada de aplicação (**) Protocolo da camada de transporte 4 Camadas da Internet Padrão OSI (Open Systems Interconnection) definido pela ISO (International Standardization Organization) para facilitar a interconexão de sistemas de computadores A Internet não segue a risca este padrão Modelo OSI Modelo da Internet 5 Camadas da Internet Estaremos concentrados na camada de aplicação... 6 Telnet: protocolo x aplicativo Protocolo cliente-servidor da camada de aplicação que permite comunicação entre computadores ligados em rede Permite acesso remoto Pode ser perigoso quando ativado o modo Telnet Server! Existem vários clientes Telnet No Windows chama-se Telnet (aplicativo) Recomendamos o Putty: http://www.cin.ufpe.br/~faas/comunicacao [download] 7 Telnet x SSH Telnet [RFC 854] não possui criptografia Dados podem ser capturados usando-se um sniffer SSH [RFC 4251] (Secure Shell) possui criptografia, apresentando-se muito mais seguro Hoje, pouco se usa o protocolo Telnet para acesso remoto, ele vem sendo substituído pelo SSH 8 Correio eletrônico Comunicação Assíncrona – Mensagens enviadas em determinado momento não necessariamente chegam no mesmo instantaneamente. O envio de uma mensagem possui 3 componentes principais: Agente de usuário: Compor, ler e editar mensagens Servidor de e-mail: Responsável pelas tentativas de envio para o e-mail do destinatário Protocolo SMTP [RFC 2821] 9 Protocolos de acesso ao correio POP3 - Está definido na RFC 1225 e permite que todas as mensagens contidas numa caixa de correio eletrônico possam ser transferidas sequencialmente para um computador local. IMAP – Superior ao POP3, mensagens ficam no servidor e o cliente pode ter acesso a suas pastas e mensagens em qualquer computador, mantém estado. HTTP – Envio/recebimento de e-mail por meio de browsers Web. 10 O Protocolo SMTP O cliente envia a mensagem para o seu servidor de e-mail... Fila de mensagens: depois que o servidor cliente recebe a mensagem ele a encaminha para uma fila de envio... A mensagem chega ao servidor destino... O cliente destinatário baixa sua mensagem do seu servidor de e-mail! 11 SMTP X HTTP SMTP – Protocolo de envio de informações (push protocol) já o HTTP é um protocolo de recebimento de dados (pull protocol) SMTP – Obriga que toda a mensagem, inclusive o corpo dela, esteja em formato ASCII Para transferência com anexo utiliza-se o protocolo MIME Os dois utilizam TCP para o transporte de dados SMTP utiliza a porta 25 e o HTTP a 80 12 Mensagens SMTP telnet ferreiros.cin.ufpe.br 25 //tecle enter 220 CIn-UFPE ESMTP Mail Server Helo comunicacao //tecle enter 250 ferreiros.cin.ufpe.br Hello g3c22.cin.ufpe.br [172.17.67.22], pleased to meet you mail from: [seu login]@cin.ufpe.br //tecle enter 250 2.1.0 [seu login]@cin.ufpe.br... Sender ok rcpt to: [email protected] //tecle enter 250 2.1.5 [email protected]... Recipient ok data //tecle enter Alo vc! //Corpo da mensagem - tecle enter . //tecle enter quit //tecle enter 13 SMPT: Prática 1. 2. 3. 4. 5. Envie um e-mail para sua conta do CIn utilizando o Prompt de Comando do Windows (c:\windows\system32\telnet.exe) Envie e-mail contendo o campo assunto (Consulte a RFC 2821) Agora, utilize o campo “From” (Consulte a RFC ) Envie um e-mail com cópia para outro destinatário (Consulte a RFC) Procure e utilize o campo “Cc” (Consulte a RFC) 14 O Protocolo HTTP HTTP – Protocolo de Transferência de Hipertexto HTTP 1.0: RFC[1945] HTTP 1.1: RFC[2616] É o protocolo base da WEB Viabiliza a obtenção de Objetos(páginas, imagens...) Funciona no modelo cliente-servidor O HTTP define como o cliente (browser) requisita as páginas WEB e como o servidor as transfere Usa o TCP como transportador, podendo assim garantir transmissões confiáveis Utiliza a porta 80 como padrão 15 Métodos HTTP Alguns métodos do HTTP 1.1: GET: busca um objeto definido por uma URL requisição PUT: indica que os dados no corpo da consulta devem ser armazenados na URL especificada POST: envia dados para serem processados pelo servidor no corpo da mensagem HEAD: Similar ao método GET, mas retorna somente o cabeçalho da resposta do servidor DELETE: apaga o arquivo especificado na URL 16 Mensagem de requisição Típica mensagem de requisição cliente-servidor: GET <diretório> HTTP/1.1 Host: <ip de onde se encontra o diretório> Exemplo: GET /~faas/if678_monitoria/ HTTP/1.1 Host: www.cin.ufpe.br 17 Mensagem de resposta (1/2) Na mensagem de resposta temos: Uma linha inicial (Status-Line) Versão do protocolo HTTP (HTTP-Version) Código de status da resposta (Status-Code) e Descrição do código de status (Reason-Phrase) Linhas de cabeçalhos (Responseheader) Uma linha em branco obrigatória e Um corpo de mensagem opcional 18 Mensagem de resposta (2/2) Exemplo: HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 Dados ... .. .. . .. . .. .. . . . . .. . . . . . .. . .. .. . . . . .. . . . 19 Alguns códigos de resposta 200 OK - conexão estabelecida e objeto requisitado encontrado 302 Found - indica um redirecionamento temporário onde no cabeçalho Location está a URL da nova localidade 301 Moved Permanently - indica que o ouve um redirecionamento permanente. E no campo Location do Head está a nova localidade, o registro com a URL antiga deve ser alterado para a nova 304 Not Modified - usado quando o cliente utiliza cache, indicando que o objeto solicitado não foi alterado 404 Not Found - indica que o recurso não foi encontrado 403 - acesso negado 20 HTTP: Prática Procure na Internet a RFC[2616] que especifica a versão 1.1 do HTTP Localize o campo de cabeçalho de requisição (Request Header Fields): Como se define a linguagem preferencial para uma página? Como o cliente indica seu navegador (UserAgent)? Utilize o que você aprendeu: Com o método GET Com o método HEAD 21 Comunicação entre processos Processos em hosts distintos comunicam-se por meio de envio de mensagens... enviadas e recebidas através de seu socket Socket é a interface entre a camada de aplicação e a de transporte 22 Serviços requeridos pelas aplicações Transferência de dados confiável Não pode haver perda de dados durante a transmissão Exemplos: transferência de arquivos, mensagem instantânea Banda passante disponível Algumas aplicações necessitam de uma banda passante mínima para haver consistência dos dados no receptor Exemplos: aplicações multimídia Garantia de tempo Algumas aplicações requerem um tempo máximo de atraso para a transmissão dos dados Exemplos: aplicações em tempo real, jogos multiusuários 23 TCP: transporte confiável A Internet trabalha no esquema do “Melhor esforço” No entanto, muitas aplicações precisam de garantias... O protocolo TCP provê: Transporte confiável: os dados vão chegar corretamente! Controle de congestionamento: diminui a taxa de transmissão de um processo quando a rede está sobrecarregada Controle de fluxo: um host não receberá um volume de dados maior que o suportado por ele 24 UDP: um protocolo leve O UDP é um protocolo de transporte bastante simplificado Não possui a fase de “setup” do TCP E não fornece nenhuma garantia de entrega dos dados Isso o torna mais leve e possibilita menor sobrecarga no servidor que o utiliza É utilizado no transporte de voz sobre IP, por exemplo 25 Próxima aula... PROGRAMAÇÃO COM SOCKETS! 26 Referências 1. 2. 3. 4. 5. James F. Kurose and Keith W. Ross, "Redes de Computadores e a Internet - Uma Nova Abordagem", 3a. edição - 2005 - Ed. Addison Wesley BRA http://www.rfc.net/ http://www.ietf.org/rfc.html http://java.sun.com/j2se/1.5.0/docs/api/java/net/ package-summary.html http://java.sun.com/j2se/1.5.0/docs/api/java/net/ Socket.html 27