270 likes | 363 Views
Infra-Estrutura de Comunicação (IF678). Aula Prática 01 Telnet, SMTP, HTTP e Socket. Flávio Almeida ( faas@cin.ufpe.br ) http://www.cin.ufpe.br/~faas/comunicacao. Professor: Paulo Gonçalves ( pasg@cin.ufpe.br ). CIn/UFPE. Nosso objetivo: Visão geral sobre protocolos da camada de aplicação
E N D
Infra-Estrutura de Comunicação(IF678) Aula Prática 01Telnet, SMTP, HTTP e Socket Flávio Almeida (faas@cin.ufpe.br) http://www.cin.ufpe.br/~faas/comunicacao Professor: Paulo Gonçalves (pasg@cin.ufpe.br) 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
Agenda 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
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
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 da Internet Modelo OSI
Camadas da Internet • Estaremos concentrados na camada de aplicação...
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]
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
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]
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 browsersWeb.
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!
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
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: acmb@cin.ufpe.br //tecle enter • 250 2.1.5 acmb@cin.ufpe.br... Recipient ok • data //tecle enter • Alo vc!//Corpo da mensagem - tecle enter • .//tecle enter • quit//tecle enter
SMPT: Prática 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)
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
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
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
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
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 ... .. .. . .. . .. .. . . . . .. . . . . . .. . .. .. . . . . .. . . .
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
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 (User-Agent)? • Utilize o que você aprendeu: • Com o método GET • Com o método HEAD
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
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
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ê: • Transporteconfiá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
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
Próxima aula... • PROGRAMAÇÃO COM SOCKETS!
Referências 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