Paulo Roberto Freire Cunha

Slides:



Advertisements
Apresentações semelhantes
Parte 2: Camada de Aplicação
Advertisements

Capítulo 2: Camada de Aplicação
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Comunicação entre processos distribuídos
Bruno Rafael de Oliveira Rodrigues
Servidor de s e Protocolo SMTP
Prof. Evandro Cantú, Dr. Eng. REDES DE COMPUTADORES.
DNS Introdução.
Redes de Computadores 2 - Camada de Aplicação (HTTP) –
Camada de Aplicação Teleprocessamento e Redes
1 Introdução aos Sockets (Java) Tiago Semprebom DAS – Departamento de Automação e Sistemas UFSC – Universidade Federal de Santa Catarina.
Paulo Roberto Freire Cunha
Capítulo 2 Camada de aplicação
Funcionalidades e Protocolos da Camada de Aplicação
Aula 9 - Camada de aplicação
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Denyson José Eduardo Souza Ivan França Rafael Lima.
Redes de Computadores Camada de Aplicação.
Chamada Remota de Procedimentos
Funcionalidade e Protocolos da Camada de Aplicação
Programação com sockets
Enviando e recebendo mensagens através dos protocolos SMTP e POP3 João Gilberto Magalhães.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
2 © 2005 by Pearson Education  2.1 Princípios de aplicações de rede  2.2 Web e HTTP  2.3 FTP  2.4 Correio eletrônico  SMTP, POP3, IMAP  2.5.
Redes e Sistemas Internet FTP e
Faculdade de Tecnologia SENAI de Desenvolvimento Gerencial
Infra-Estrutura de Comunicação (IF678) Aula Prática CIn/UFPE Rafael Lucena Roberta Mota Rubens Lopes Rodolfo Santos João Pedro Cordeiro.
Implementando comunicação em JAVA via Sockets Alcides Calsavara - Leonardo R. Nunes -
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Davidson Rodrigo Boccardo
Falso, HTTP usa TCP. 1) HTTP usa arquitetura cliente servidor, aceitando conexões UDP na porta 80.
Domain Name System - Sistema de Nomes de Domínios
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio.
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Infra-Estrutura de Comunicação (IF678)
Infra-Estrutura de Comunicação (IF678)
ANTONIO LIMEIRA EDUARDO FRANKLIN LUCAS ARANHA RANIERI VALENÇA RODRIGO PIGATTI DNS.
Administração e Projeto de Redes
(c)AB, WEB: filosofia e origens Grupo de utilizadores Internet Ambiente académico dominado por sistemas UNIX Conjunto de serviços básicos: correio.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP CIn/UFPE Bruno Gentilini Eduardo Souza Amora Albuquerque Anália.
Infra-Estrutura de Comunicação (IF678) Aula Prática 01 – CIn/UFPE Anália Lima Bruno Gentilini Eduardo Souza Ivan França.
Redes de Computadores Camada de Aplicação
Programação Distribuída em Java Aula Na aula passada vimos: I/O Streams Filtros Readers and Writers.
Programação Distribuída em Java Aula Na aula passada vimos: I/O Sockets.
Programação Distribuída em Java Aula Na aula passada vimos Domain Name Server –Funcionamento básico O pacote java.net –Sua finalidade A classe InetAddress.
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
TCP/IP.
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
Tema 07: A camada de aplicação: protocolos HTTP, SMTP, DNS, FTP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.slide 1 Capítulo 2 Camada de aplicação Nota sobre o uso destes slides ppt: Estamos disponibilizando.
Nível Transporte Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.
© 2010 Pearson Prentice Hall. Todos os direitos reservados.slide 1 Capítulo 2 Camada de aplicação Nota sobre o uso destes slides ppt: Estamos disponibilizando.
Redes de Computadores 2 - Camada de Aplicação (Princípios Básicos) –
Administração e Projeto de Redes Material de apoio Camada de Transporte Cap.4 10/02/2010.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Professor: Paulo Gonçalves CIn/UFPE.
2 © 2005 by Pearson Education Prof. Esp Camilo Brotas Ribeiro Redes de Computadores Aula 04 - Camada de Aplicação.
Capítulo 2 Redes de computadores e a Internet Camada de aplicação Prof. Gustavo Wagner.
Capítulo 2 Redes de computadores e a Internet Camada de aplicação Prof. Gustavo Wagner.
Alessandro D. R. Fazenda
Redes de Computadores e Aplicações – Camada de aplicação IGOR ALVES.
2a: Camada de Aplicação 1 Capítulo 2: Roteiro r 2.1 Princípios de aplicações de rede r 2.2 A Web e o HTTP r 2.3 Transferência de arquivo: FTP r 2.4 Correio.
Sistemas Operacionais de Redes DNS
Curso Superior em Redes de Computadores FTP Prof. Sales Filho.
Capítulo 2 Redes de computadores e a Internet Camada de aplicação Prof. Gustavo Wagner.
Capítulo 2 Redes de computadores e a Internet Camada de aplicação Prof. Gustavo Wagner.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Curso Superior em Redes de Computadores SMTP Prof. Sales Filho.
Programação Orientada a Objetos
Transcrição da apresentação:

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 prfc@cin.ufpe.br

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)

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)

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)

Correio Eletrônico

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 e-mail pine SMTP servidor de e-mail pine SMTP servidor de e-mail SMTP pine fila de mensagens de saída pine maibox Redes de Computadores 2  (baseado nos slides do Kurose)

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)

Redes de Computadores 2  (baseado nos slides do Kurose) SMTP cin.ufpe.br cpc.wmin.ac.uk servidor de e-mail servidor de e-mail Servidor Cliente 220 cin.ufpe.br HELO cpc.wmin.ac.uk 250 Hello cpc.wmin.ac.uk, pleased to meet you MAIL FROM: <alice@cpc.wmin.ac.uk> 250 alice@cpc.wmin.ac.uk... Sender ok RCPT TO: <bob@cin.ufpe.br> 250 bob@cin.ufpe.br ... 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)

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)

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)

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: ahmed@cpc.wmin.ac.uk To: user@cin.ufpe.br 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)

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)

Mensagem com Múltiplas Partes From: alice@cpc.wmin.ac.uk To: bob@cin.ufpe.br Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 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 --98766789-- Redes de Computadores 2  (baseado nos slides do Kurose)

DNS – Domain Name System

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

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 150.161.2.1 olinda 150.161.2.2 hordes 200.2.1.23 fermat 164.34.2.14 ... fermat NIC hosts.txt host X Redes de Computadores 2  (baseado nos slides do Kurose)

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)

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 (150.161.2.1) 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)

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)

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)

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) http://www.iana.org IANA – Internet Assigned Numbers Authority Redes de Computadores 2  (baseado nos slides do Kurose)

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 (172.19.33.164) cin npd Redes de Computadores 2  (baseado nos slides do Kurose)

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 150.161.2.1 150.161.2.1 busca em in-addr.arpa recife.cin.ufpe.br Redes de Computadores 2  (baseado nos slides do Kurose)

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)

Espaço de Nomes Distribuído B.ROOT-SERVERS.NET. 128.9.0.107 A.ROOT-SERVERS.NET. 198.41.0.4 ... 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)

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)

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)

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)

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)

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)

Formato dos Registros da Base de Nomes recife 150.161.2.1 olinda 150.161.2.2 moreno 150.161.2.3 petrolina 150.161.2.4 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 = 150.161.2.1 Redes de Computadores 2  (baseado nos slides do Kurose)

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)

Sockets

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)