44
Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets) Paulo Roberto Freire Cunha [email protected]

Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

  • Upload
    rey

  • View
    18

  • Download
    0

Embed Size (px)

DESCRIPTION

Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets). Paulo Roberto Freire Cunha [email protected]. transferência de arquivos de/para um servidor remoto adota o modelo cliente servidor definido pelo RFC 959 porta 21. transferência. interface com o usuário. - PowerPoint PPT Presentation

Citation preview

Page 1: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2

- Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Paulo Roberto Freire [email protected]

Page 2: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

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ênciaservidor

FTP

interfacecom o usuário

clienteFTP

sistema de arquivos local

sistema de arquivos remoto

Page 3: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

FTP

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

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

cliente servidor

porta 21 - controle

porta 20 - dados

Aplicação

Transporte

Rede

Enlace

Física

Aplicação

Transporte

Rede

Enlace

Física

21 2120 20

Page 4: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

FTP

cliente

servidor

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

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

Page 5: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Correio Eletrônico

Page 6: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Correio Eletrônico

componentes

agentes do usuário

pine, Outlook, Eudora,

mail, etc

servidores de mail

armazenam as

mensagens enviadas e

recebidas

protocolo SMTP

componentes

agentes do usuário

pine, Outlook, Eudora,

mail, etc

servidores de mail

armazenam as

mensagens enviadas e

recebidas

protocolo SMTP maibox

fila de mensagens de

saída

servidorde e-mail

servidorde e-mail

servidorde e-mail

pine

SMTP

SMTP

SMTP

pine

pine

pine

pine

Page 7: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

Page 8: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

SMTP

servidorde e-mail

servidorde e-mail

cin.ufpe.br cpc.wmin.ac.uk

220 cin.ufpe.br

250 Hello cpc.wmin.ac.uk, pleased to meet you

250 [email protected]... Sender ok

250 [email protected] ... Recipient ok

354 Enter mail, end with "." on a line by itself

250 Message accepted for delivery

221 cin.ufpe.br closing connection

HELO cpc.wmin.ac.uk

MAIL FROM: <[email protected]>

RCPT TO: <[email protected]>

DATA

Do you like ketchup? How about pickles? .

QUIT

ServidorCliente

Page 9: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Exemplo

telnet mail.cin.ufpe.br 25

comandos HELO

MAIL FROM

RCPT TO

DATA

QUIT

Page 10: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

cabeçalho

e.g.,To:, From:,

Subject:

corpo

mensagem com

caracteres ASCII

cabeçalho

corpo

linhaem

branco

Page 11: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

From: [email protected] To: [email protected] Subject: Vivas news!MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg

dado codificado (base64) ..... ......................... ...... codificado (base64)

declaração dosdados multimídia

método paracodificação dos

dados

versão

dados condificadosde acordo com a declaração acima

Page 12: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

Page 13: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Mensagem com Múltiplas Partes

From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789Content-Transfer-Encoding: quoted-printableContent-Type: text/plain

Dear Bob, Please find a picture of a crepe.--98766789Content-Transfer-Encoding: base64Content-Type: image/jpeg

base64 encoded data ..... ......................... ......base64 encoded data --98766789--

Page 14: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

DNS – Domain Name System

Page 15: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Serviço de Nomes

telnet recife.cin.ufpe.br

telnet 150.161.2.1

endereço numérico difícilde memorizar

nome simbólico

DNS

150.161.2.1recife

150.161.2.2olinda

150.161.2.3moreno

150.161.2.4petrolina

IPNome

Motivação

Page 16: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Serviço de Nomes

abordagem inicial para o serviço de nomes

recife

olinda

fermat

hordes

Rede

host X

hosts.txt

recife 150.161.2.1olinda 150.161.2.2hordes 200.2.1.23fermat 164.34.2.14......

NIC

NIC – Network Infomation Center

acessado por todos os outros

hosts via FTP

Page 17: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Serviço de Nomes abordagem atual: base de nomes

distribuída

Rede

Page 18: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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)

Page 19: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

Page 20: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Hierarquia do Espaço de Nomes

cin é um sub-domínio de ufpe.br,ufpe é um subdomínio de br

edu mil gov com

(root)

br

usp ufs ufpe

cin npd

cin.ufpe.br é um nome de domínio totalmentequalificado (FQDN – Fully Qualified Domain Name)

Page 21: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Hierarquia do Espaço de Nomes hierarquia do espaço de nomes

edu mil gov com

(raiz)

br

domínios genéricos/domínios organizacionais+ domínios geográficos/países

com - organizações comerciaisedu - instituições organizacionaisgov - instituições governamentaisint - organizações internacionaismil - instituições militaresnet - principais centros de suporte de redesorg - organizações não-governamentaiscódigo do país - código dos países (ISO 3166)

http://www.iana.orgIANA – Internet Assigned Numbers Authority

Page 22: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

edu mil gov com

(root)

br

usp ufs ufpe

cin npdbarreiros.cin.ufpe.br

(172.19.33.164)

Page 23: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

150.161.2.1

busca no espaço denomes dos domínios

150.161.2.1

busca em in-addr.arpa

recife.cin.ufpe.br

Page 24: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

Page 25: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Espaço de Nomes Distribuído

edu mil gov com

(root)

br

usp ufs ufpe

cin npd

...13 hosts

Lista de root hosts em ftp.rs.internic.net

(arquivo named.root)

A.ROOT-SERVERS.NET.198.41.0.4

B.ROOT-SERVERS.NET.128.9.0.107

Page 26: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

edu mil gov com

(root)

br

usp ufs ufpe

cin npd

...

hostX

Page 27: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Resolução de Nomes

Programado usuário

ResolvedorServidorde Nomes

Servidorde NomesExterno

Base de Dados

Cache

Cache

user query

user response

query

response

rq

Abordagem I

Page 28: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Resolução de Nomes

Programado usuário

Servidorde Nomes

Servidorde NomesExterno

Base de Dados

Cache

query

response

rq

Resolvedorstub

Programas como FTP e Telnet têm um resolvedor incorporado

Abordagem I

Page 29: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

Page 30: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

Page 31: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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.brTTL = 86400classe =IN (família de protocolo)tipo = A (endereço do host, tipos definidos em RFC 1034, 1035,1706)Rdata = 150.161.2.1

Page 32: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Formato das Mensagens do DNS

Programado usuário

Servidorde Nomes

Servidorde NomesExterno

Base de Dados

Cache

query

response

rq

Resolvedorstub

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

0 3116

Page 33: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Sockets

Page 34: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Sockets

Camada de Abstração do Hardware

Interface de rede

ARP PPP

IP

UDP TCP

Interface de Sockets

Drivers

FTP

TELNET

DNS

HTTP

SMTP

SNMP

Aplicaçãodo Usuário

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

Page 35: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Sockets

cliente

TCP/UDP

socket

controlado pelo

desenvolvedorda aplicação

controladopelo SO

host 1

servidor

TCP/UDP

socket

host 2

internet

controlado pelo desenvolvedorda aplicação

controladopelo SO

A aplicação deve executar

sobre o TCP ou UDP?

Page 36: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

Page 37: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Aplicação com Sockets

socket do cliente

outToServer

inFromServer

inFromUser

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

Streams

Conversor Minúscula / Minúscula

Page 38: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Interação Cliente/Servidor (TCP)

Servidor

(hostid)

Cliente

envia solicitaçãoclientSocket

estabelecimentoda conexão TCP

cria um socketconecta a hostid, porta=xclientSocket =

Socket()

espera por solicitaçõesconnectionSocket =welcomeSocket.accept()

cria um socketporta=x, para antender solicitações:welcomeSocket =

ServerSocket()

lê a respostaclientSocket

fechaclientSocket

fechaconnectionSocket

lê a solicitaçãoconnectionSocket

escreve a respostaconnectionSocket

Page 39: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Interação Cliente/Servidor (TCP)

Passos da Interação (Java)

1. Abre um socket

2. Abre Input/Output streams para o socket

3. Lê/escreve no stream de acordo com o protocolo de

aplicação usado

4. Fecha os streams

5. Fecha os sockets

Page 40: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

}

}

Page 41: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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);

}

}

}

Page 42: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

Redes de Computadores 2 (baseado nos slides do Kurose)

Interação Cliente/Servidor (UDP)

Servidor (hostid)

fechaclientSocket

lê a resposta clientSocket

Cliente

cria socket,clientSocket = DatagramSocket()

usa hostid, port=x,para enviar uma solicitação clientSocket

cria socket,porta=x parasolicitações:serverSocket = DatagramSocket()

lê solicitaçãoserverSocket

escreve emserverSocketespecificando o clienteendereço,porta

UDP não é estabelecida uma conexão o cliente explicitamente envia o seu IP+porta para o servidoro servidor deve explicitamente extrair o IP+porta (cliente) do datagrama

Page 43: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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

}

}

Page 44: Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets)

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);

}

}

}