Beruflich Dokumente
Kultur Dokumente
de rede
Protocolos de aplicação aplicação
transporte
transporte
rede
• aprenda sobre protocolos rede enlace
– socket API – fazem parte das aplicações enlace física
examinando algumas física
Paradigma Cliente-Servidor
Aplicações de Rede
Aplicações de rede típicas têm duas aplicação
transporte
partes: cliente and servidor rede
enlace
linha de pedido
(comandos GET GET /somedir/page.html HTTP/1.0
, POST,HEAD ) User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
linhas de Accept-language:fr
cabeçalho
fila de
ftp comandos, respostas Correio Eletrônico saída de mensagem
caixa postal
agente
Três componentes principais: usuário
protocolo POP3 S: +OK POP3 server ready DNS: Domain Name System
C: user alice
fase de autorização S: +OK
C: pass hungry Domain Name System:
• comandos do cliente: S: +OK user successfully logged on
Pessoas: muitos • base de dados distribuída
– user: declara nome do usuário implementada numa hierarquia de
C: list identificadores:
– pass: password S: 1 498 muitos servidores de nomes
– RG, nome, passporte
• respostas do servidor S: 2 912 • protocolo de camada de aplicação
– +OK S: . Internet hosts, roteadores: host, roteadores se comunicam com
C: retr 1
– -ERR – endereços IP (32 bit) - servidores de nomes para resolver
S: <message 1 contents>
usados para endereçar nomes (translação nome/endereço)
fase de transação, cliente: S: .
C: dele 1 datagramas – nota: função interna da Internet,
• list: lista mensagens e tamanhos C: retr 2 – “nome”, ex., implementeda como protocolo da
• retr: recupera mensagem pelo S: <message 1 contents> gaia.cs.umass.edu - usados camada de aplicação
número S: . por humanos
C: dele 2
– complexidade na “borda” da rede
• dele: apaga Q: relacionar nomes com
C: quit
• quit S: +OK POP3 server signing off endereços IP?
Servidores de Nomes DNS DNS: Servidores de Nomes Raiz
• são contatados pelos servidores de nomes locais que não podem resolver um nome
• nenhum servidor tem todos os • servidores de nomes raiz::
Porque não centralizar o mapeamentos de nomes para endereços – buscam servidores de nomes autoritativos se o mapeamento do nome não for
DNS? IP conhecido
• ponto único de falha servidores de nomes locais: – conseguem o mapeamento
– cada ISP ou empresa tem um servidor
– returnam o mapeamento para o servidor de nomes local
• volume de tráfego de nomes local (default)
a NSI Herndon, VA
– Consultas dos computadores locais ao c PSInet Herndon, VA k RIPE London
• base de dados distante DNS vão primeiro para o servidor de
d U Maryland College Park, MD
g DISA Vienna, VA
i NORDUnet Stockholm
h ARL Aberdeen, MD
nomes local m WIDE Tokyo
• manutenção e NASA Mt View, CA
j NSI (TBD) Herndon, VA
gaia.cs.umass.edu
DNS: consultas encadeadas DNS: armazenando e atualizando
servidor de nomes
raiz registros
consulta recursiva: consulta
2 • uma vez que um servidor de nomes apreende um
3 encadeada
• transfere a tarefa de
resolução do nome para o 4 mapeamento, ele armazena o mapeamento num
servidor de nomes registro to tipo cache
consultado 7
• carga pesada? servidor de nomes local servidor de nomes intermediário
– registro do cache tornam-se obsoletos
dns.eurecom.fr dns.umass.edu (desapareçem) depois de um certo tempo
consulta encadeada: 5 6
1 8 • mecanismos de atualização e notificação estão sendo
• servidor contactado
responde com o nome de projetados pelo IETF
servidor de nomes autoritativo
outro servidor de nomes dns.cs.umass.edu
para contato computador solicitante
– RFC 2136
• “Eu não sei isto ,mas
surf.eurecom.fr – http://www.ietf.org/html.charters/dnsind-charter.html
pergunte a este servidor”
gaia.cs.umass.edu
inFromUser
input
• cliente lê linha da entrada padrão do stream
solicitação entrante:
welcomeSocket =
sistema (inFromUser stream) , processo stream de entrada:
ServerSocket()
Process
envia para o servidor via socket cliente seqüência de bytes TCP cria socket,
(outToServer stream) para dentro do processo
espera por pedido
estabel. de conexão
stream de saída: de conexão entrante conecta com hostid, port=x
• servidor lê linha do socket clientSocket =
seqüência de bytes connectionSocket =
Socket()
para fora do processo welcomeSocket.accept()
• servidor converte linha para letras
inFromServer
outToServer
maiúsculas e envia de volta ao cliente output input
envia pedido usando
stream stream
lê pedido de clientSocket
• cliente lê a linha modificada através connectionSocket
do (inFromServer stream)
TCP socket
clientSocket
escreve resposta para
cliente TCP
connectionSocket lê resposta de
socket clientSocket
fecha
para rede da rede fecha
connectionSocket
clientSocket
ordem ou perdidos
Exemplo: cliente Java (UDP) Exemplo: cliente Java (UDP)
teclado monitor
import java.io.*;
import java.net.*;
inFromUser
stream
de entrada
class UDPClient {
processo public static void main(String args[]) throws Exception
Process Entrada: recebe
cliente Cria
{
pacote (TCP recebe
“byte stream”) stream de entrada BufferedReader inFromUser =
Saída: envia pacote
new BufferedReader(new InputStreamReader(System.in));
(TCP envia “byte Cria
receivePacket
sendPacket
stream”) pacote pacote
socket cliente DatagramSocket clientSocket = new DatagramSocket();
UDP UDP
Translada
nome do host para InetAddress IPAddress = InetAddress.getByName("hostname");
socket UDP
clientSocket endereço IP
cliente UDP usando DNS byte[] sendData = new byte[1024];
socket
byte[] receiveData = new byte[1024];
para rede da rede
sendData = capitalizedSentence.getBytes();
Cria datagrama Tutoriais sobre Java:
DatagramPacket sendPacket =
para enviar ao cliente
new DatagramPacket(sendData, sendData.length, IPAddress, • “Socket Programming in Java: a tutorial,”
port);
Escreve o http://www.javaworld.com/javaworld/jw-12-1996/jw-12-
datagrama para serverSocket.send(sendPacket);
dentro do socket } sockets.html
}
} Termina o while loop,
retorna e espera por
outro datagrama
Parte 2: Sumário
Parte 2: Sumário
Nosso estudo das aplicações está agora completo!
Mais importante: características dos protocolos
• tipica troca de mensagens
• exigências dos serviços de • protocolos especificos: • controle vs. dados
comando/resposta:
aplicação: – http – in-band, out-of-band
– cliente solicita informação ou
– confiabilidade, banda – ftp serviço • centralizado vs. descentralizado
passante, atraso – smtp, pop3 • stateless vs. stateful
– servidor responde com dados e
• paradigma cliente-servidor – dns código de status • transferência de mensagens
• programação de sockets confiável vs. não confiável
• modelo do serviço de – formatos das mensagens:
• “complexidade na borda da rede”
transporte da Internet l – implementação cliente/servidor – cabeçalhos: campos que dão
informações sobre os dados • segurança: autenticação
– orientado à conexão, – usando sockets tcp, udp
confiável: TCP – dados: informação sendo
– não confiável, datagramas: comunicada
UDP