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

Preview:

DESCRIPTION

Redes de Computadores 2 - Camada de Aplicação (FTP & SMTP & DNS e Sockets). Paulo Roberto Freire Cunha prfc@cin.ufpe.br. 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

Redes de Computadores 2

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

Paulo Roberto Freire Cunhaprfc@cin.ufpe.br

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

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

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

Correio Eletrônico

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

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)

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 alice@cpc.wmin.ac.uk... Sender ok

250 bob@cin.ufpe.br ... 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: <alice@cpc.wmin.ac.uk>

RCPT TO: <bob@cin.ufpe.br>

DATA

Do you like ketchup? How about pickles? .

QUIT

ServidorCliente

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

cabeçalho

e.g.,To:, From:,

Subject:

corpo

mensagem com

caracteres ASCII

cabeçalho

corpo

linhaem

branco

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

declaração dosdados multimídia

método paracodificação dos

dados

versão

dados condificadosde acordo com a declaração acima

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

DNS – Domain Name System

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

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

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)

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

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)

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

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)

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

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

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

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

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

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

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

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

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

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?

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

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

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

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

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)

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)

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

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)

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

}

}

}

Recommended