A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Paulo Roberto Freire Cunha

Apresentações semelhantes


Apresentação em tema: "Paulo Roberto Freire Cunha"— Transcrição da apresentação:

1 Paulo Roberto Freire Cunha prfc@cin.ufpe.br
Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets) Paulo Roberto Freire Cunha

2 FTP - File Transfer Protocol
transferência de arquivos de/para um servidor remoto adota o modelo cliente servidor definido pelo RFC 959 porta 21 transferência servidor FTP interface com o usuário cliente sistema de arquivos local sistema de arquivos remoto Redes de Computadores 2  (baseado nos slides do Kurose)

3 Redes de Computadores 2  (baseado nos slides do Kurose)
FTP cliente servidor porta 21 - controle porta 20 - dados Aplicação Transporte Rede Enlace Física usa duas conexões TCP porta 21 (controle) troca de comandos porta 20 (dados) transferência dos dados o protocolo mantém o estado da conexão diretório atual autenticação 20 21 Redes de Computadores 2  (baseado nos slides do Kurose)

4 Redes de Computadores 2  (baseado nos slides do Kurose)
FTP Comandos (ASCII) USER username PASS password LIST arquivos no diretório corrente RETR filename recupera um arquivo STOR filename armazena o arquivo no diretório remoto servidor Respostas (código + mensagem) 331 username OK, password required 125 data connection already open; transfer starting 425 Can’t open data connection 452 Error writing file cliente Redes de Computadores 2  (baseado nos slides do Kurose)

5 Correio Eletrônico

6 Redes de Computadores 2  (baseado nos slides do Kurose)
Correio Eletrônico pine componentes agentes do usuário pine, Outlook, Eudora, mail, etc servidores de mail armazenam as mensagens enviadas e recebidas protocolo SMTP servidor de pine SMTP servidor de pine SMTP servidor de SMTP pine fila de mensagens de saída pine maibox Redes de Computadores 2  (baseado nos slides do Kurose)

7 SMTP – Simple Mail Transfer Protocol
RFC 821 usa o TCP (porta 25) usado na comunicação servidor-servidor etapas da comunicação handshaking transferência de mensagens encerra conexão interação comandos: texto ASCII resposta: código + descrição mensagens codificadas em 7-bits ASCII Redes de Computadores 2  (baseado nos slides do Kurose)

8 Redes de Computadores 2  (baseado nos slides do Kurose)
SMTP cin.ufpe.br cpc.wmin.ac.uk servidor de servidor de Servidor Cliente 220 cin.ufpe.br HELO cpc.wmin.ac.uk 250 Hello cpc.wmin.ac.uk, pleased to meet you MAIL FROM: 250 Sender ok RCPT TO: Recipient ok DATA Do you like ketchup? How about pickles? . 354 Enter mail, end with "." on a line by itself 250 Message accepted for delivery QUIT 221 cin.ufpe.br closing connection Redes de Computadores 2  (baseado nos slides do Kurose)

9 Redes de Computadores 2  (baseado nos slides do Kurose)
Exemplo telnet mail.cin.ufpe.br 25 comandos HELO MAIL FROM RCPT TO DATA QUIT Redes de Computadores 2  (baseado nos slides do Kurose)

10 Formato da Mensagem SMTP
cabeçalho e.g.,To:, From:, Subject: corpo mensagem com caracteres ASCII linha em branco cabeçalho corpo Redes de Computadores 2  (baseado nos slides do Kurose)

11 Formato da Mensagem: Extensão Multimídia (MIME)
RFCs 2045 e 2056 o cabeçalho passa a ter linhas adicionais para definir os parâmetros do tipo de conteúdo versão From: To: Subject: Vivas news! MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg dado codificado (base64) ..... codificado (base64) método para codificação dos dados declaração dos dados multimídia dados condificados de acordo com a declaração acima Redes de Computadores 2  (baseado nos slides do Kurose)

12 Redes de Computadores 2  (baseado nos slides do Kurose)
Tipos MIME Texto plain, html Imagem jpeg, gif Áudio basic (8-bit mu-law encoded), 32kadpcm (32 kbps coding) Vídeo mpeg, quicktime Aplicações msword Redes de Computadores 2  (baseado nos slides do Kurose)

13 Mensagem com Múltiplas Partes
From: To: Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe. Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......base64 encoded data Redes de Computadores 2  (baseado nos slides do Kurose)

14 DNS – Domain Name System

15 Redes de Computadores 2  (baseado nos slides do Kurose)
Serviço de Nomes Motivação telnet recife.cin.ufpe.br telnet endereço numérico difícil de memorizar nome simbólico DNS recife olinda moreno petrolina IP Nome Redes de Computadores 2  (baseado nos slides do Kurose)

16 Redes de Computadores 2  (baseado nos slides do Kurose)
Serviço de Nomes abordagem inicial para o serviço de nomes recife NIC – Network Infomation Center acessado por todos os outros hosts via FTP hordes olinda Rede recife olinda hordes fermat ... fermat NIC hosts.txt host X Redes de Computadores 2  (baseado nos slides do Kurose)

17 Redes de Computadores 2  (baseado nos slides do Kurose)
Serviço de Nomes abordagem atual: base de nomes distribuída Rede Redes de Computadores 2  (baseado nos slides do Kurose)

18 Redes de Computadores 2  (baseado nos slides do Kurose)
DNS DNS – Domain Name System RFC 1034 e RFC 1035 refere-se a base de nomes distribuída ou ao protocolo função: mapeamento de qualquer nome simbólico (recife) em endereços IP ( ) e vice-versa não usa uma base de dados contendo todos os nomes usa TCP ou UDP (porta 53) Redes de Computadores 2  (baseado nos slides do Kurose)

19 Hierarquia do Espaço de Nomes
os nomes dos domínios são montados de uma forma hierárquica Sobre os nomes 63 caracteres deve iniciar com uma letra pode conter hífen / dígitos Redes de Computadores 2  (baseado nos slides do Kurose)

20 Hierarquia do Espaço de Nomes
edu mil gov com (root) br usp ufs ufpe cin npd cin é um sub-domínio de ufpe.br, ufpe é um subdomínio de br cin.ufpe.br é um nome de domínio totalmente qualificado (FQDN – Fully Qualified Domain Name) Redes de Computadores 2  (baseado nos slides do Kurose)

21 Hierarquia do Espaço de Nomes
domínios genéricos/domínios organizacionais + domínios geográficos/países edu mil gov com (raiz) br com organizações comerciais edu instituições organizacionais gov instituições governamentais int organizações internacionais mil instituições militares net principais centros de suporte de redes org organizações não-governamentais código do país código dos países (ISO 3166) IANA – Internet Assigned Numbers Authority Redes de Computadores 2  (baseado nos slides do Kurose)

22 Mapeamento Nome -> IP
o mapeamento de nomes em endereços IP é realizado por servidores de nomes independentes que cooperam para realizar esta tarefa e que estão organizados em uma hierarquia (root) edu mil gov com br usp ufs ufpe barreiros.cin.ufpe.br ( ) cin npd Redes de Computadores 2  (baseado nos slides do Kurose)

23 Mapeamento IP -> Nome
o mapeamento de endereços IP em nomes usa um outro espaço de nomes localizado no domínio in.addr-arp recife.cin.ufpe.br busca no espaço de nomes dos domínios busca em in-addr.arpa recife.cin.ufpe.br Redes de Computadores 2  (baseado nos slides do Kurose)

24 Espaço de Nomes Distribuído
o DNS usa o conceito de espaço de nomes distribuído os nomes simbólicos são agrupados em zonas cada zona possui um host (servidor de nomes) que realiza o mapeamento Nome->IP os nomes são administrados independentemente em cada zona os servidores são organizados logicamente em uma árvore hierárquica de domínios a autoridade do topo é compartilhada entre os servidores de nomes da raiz Redes de Computadores 2  (baseado nos slides do Kurose)

25 Espaço de Nomes Distribuído
B.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. ... 13 hosts (root) edu mil gov com br usp ufs ufpe Lista de root hosts em ftp.rs.internic.net (arquivo named.root) cin npd Redes de Computadores 2  (baseado nos slides do Kurose)

26 Redes de Computadores 2  (baseado nos slides do Kurose)
Resolução de Nomes exemplo de busca por recife.cin.ufpe.br feita a partir do host X ... (root) edu mil gov com br usp ufs ufpe hostX cin npd Redes de Computadores 2  (baseado nos slides do Kurose)

27 Redes de Computadores 2  (baseado nos slides do Kurose)
Resolução de Nomes Abordagem I Cache query user query Programa do usuário Servidor de Nomes Resolvedor user response response Base de Dados Cache r q Servidor de Nomes Externo Redes de Computadores 2  (baseado nos slides do Kurose)

28 Redes de Computadores 2  (baseado nos slides do Kurose)
Resolução de Nomes Abordagem I Programa do usuário Servidor de Nomes Externo Base de Dados Cache query response r q Resolvedor stub Programas como FTP e Telnet têm um resolvedor incorporado Redes de Computadores 2  (baseado nos slides do Kurose)

29 Operação do Resolvedor de Nomes
tipos de queries recursiva: quando o servidor não consegue resolver o nome, o próprio servidor executa queries a outros servidores iterativa: quando o servidor não consegue resolver o nome, o servidor retorna uma lista de servidores que podem ser consultados tipos de respostas authoritative: quando a resposta é fornecida por um servidor que tem autoridade sobre o domínio consultado non-authoritative: quando a resposta é fornecida por um servidor que não tem autoridade sobre o domínio consultado Redes de Computadores 2  (baseado nos slides do Kurose)

30 Operação do Resolvedor de Nomes
tipos de servidores de nomes (cada servidor tem autoridade para zero ou mais zonas) primário: carrega as informações da zona do disco e tem autoridade sobre a zona tipos de servidores (cont.) secundário: tem autoridade sobre uma zona, mas obtem as informações sobre a zona do servidor primário (~3horas) cache: não tem autoridade sobre a zona e obtém as informações de servidores primários ou secundários Redes de Computadores 2  (baseado nos slides do Kurose)

31 Formato dos Registros da Base de Nomes
recife olinda moreno petrolina nome TTL classe tipo Rdata nome = recife.cin.ufpe.br TTL = 86400 classe =IN (família de protocolo) tipo = A (endereço do host, tipos definidos em RFC 1034, 1035,1706) Rdata = Redes de Computadores 2  (baseado nos slides do Kurose)

32 Formato das Mensagens do DNS
Cache Programa do usuário query Servidor de Nomes Resolvedor stub response Base de Dados r q Servidor de Nomes Externo identificação parâmetros QDcount ANcount NSCount ARCount seção de questão seção de resposta seção de autoridade seção de informação adicional 16 31 Redes de Computadores 2  (baseado nos slides do Kurose)

33 Sockets

34 Redes de Computadores 2  (baseado nos slides do Kurose)
Sockets processos se comunicam enviando/ recebendo mensagens através de sockets (API) socket é a interface entre o processo da aplicação e a camada de transporte um processo identifica o outro processo que ele quer se comunicar através de um endereço IP e uma porta T E L N Aplicação do Usuário F T P H T P S M T P S N M P D N S Interface de Sockets UDP TCP IP ARP PPP Interface de rede Camada de Abstração do Hardware Drivers Redes de Computadores 2  (baseado nos slides do Kurose)

35 Sockets A aplicação deve executar sobre o TCP ou UDP? internet host 2
controlado pelo desenvolvedor da aplicação controlado pelo desenvolvedor da aplicação servidor cliente socket socket controlado pelo SO controlado pelo SO TCP/UDP TCP/UDP internet host 2 host 1 A aplicação deve executar sobre o TCP ou UDP? Redes de Computadores 2  (baseado nos slides do Kurose)

36 Redes de Computadores 2  (baseado nos slides do Kurose)
Sockets servidor deve executar primeiro cria um socket para receber as solicitações dos clientes o socket deve usar uma porta (1023- ) cliente cria um socket para se comunicar com o servidor identifica o servidor através do endereço IP + Porta o socket deve usar a mesma porta do servidor (1023- ) Redes de Computadores 2  (baseado nos slides do Kurose)

37 Aplicação com Sockets inFromUser socket do cliente
Conversor Minúscula / Minúscula o cliente lê uma linha da entrada padrão (inFromUser) e envia para o servidor via socket (outToServer) o servidor lê a linha do socket e converte-a em maiúscula o servidor envia a linha convertida para o cliente o cliente lê a linha do socket (inFromserver) e imprime-a na tela inFromUser socket do cliente Streams outToServer inFromServer Redes de Computadores 2  (baseado nos slides do Kurose)

38 Interação Cliente/Servidor (TCP)
(hostid) cria um socket porta=x, para antender solicitações: welcomeSocket = ServerSocket() Cliente estabelecimento da conexão TCP cria um socket conecta a hostid, porta=x clientSocket = Socket() lê a resposta clientSocket fecha connectionSocket espera por solicitações connectionSocket = welcomeSocket.accept() envia solicitação clientSocket lê a solicitação connectionSocket escreve a resposta Redes de Computadores 2  (baseado nos slides do Kurose)

39 Interação Cliente/Servidor (TCP)
Passos da Interação (Java) Abre um socket Abre Input/Output streams para o socket Lê/escreve no stream de acordo com o protocolo de aplicação usado Fecha os streams Fecha os sockets Redes de Computadores 2  (baseado nos slides do Kurose)

40 Redes de Computadores 2  (baseado nos slides do Kurose)
Cliente Java (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence, modifiedSentence; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 6789); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println(“FROM SERVER: " + modifiedSentence); clientSocket.close(); } Redes de Computadores 2  (baseado nos slides do Kurose)

41 Redes de Computadores 2  (baseado nos slides do Kurose)
Servidor Java (TCP) import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream outToClient = new DataOutputStream (connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } Redes de Computadores 2  (baseado nos slides do Kurose)

42 Interação Cliente/Servidor (UDP)
(hostid) cria socket, porta=x para solicitações: serverSocket = DatagramSocket() lê solicitação serverSocket cria socket, clientSocket = DatagramSocket() usa hostid, port=x, para enviar uma solicitação clientSocket UDP não é estabelecida uma conexão o cliente explicitamente envia o seu IP+porta para o servidor o servidor deve explicitamente extrair o IP+porta (cliente) do datagrama fecha clientSocket lê a resposta escreve em serverSocket especificando o cliente endereço, porta Redes de Computadores 2  (baseado nos slides do Kurose)

43 Redes de Computadores 2  (baseado nos slides do Kurose)
Cliente Java (UDP) class UDPClient { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket); DatagramPacket receivePacket =new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } Redes de Computadores 2  (baseado nos slides do Kurose)

44 Redes de Computadores 2  (baseado nos slides do Kurose)
Servidor Java (UDP) class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); } Redes de Computadores 2  (baseado nos slides do Kurose)


Carregar ppt "Paulo Roberto Freire Cunha"

Apresentações semelhantes


Anúncios Google