DNS: Domain Name System
Identificazione Persone:

Cod.Fiscale , nome,
Passaporto
Internet hosts, routers:


indirizzo IP (32 bit) used for indirizzamento
datagrams (pacchetti)
“nome simbolico”,
cclii.dis.uniroma1.it usato da utenti
Corrispondenza indirizzo
IP e nome
Domain Name System:
 database distribuito
(gerarchic.) implementato su
molti name servers
 protocollo strato application
host, routers, name servers
communicano per risolvere
(resolve) nomi (traduzione
address/name)
 Funzione Internet critica
realizzata come protocollo
application-layer
2: Application Layer
1
DNS name servers
DNS- Perche’ distribuito?
 robusto a guasti
 minor traffico
 mantenimento
local name servers: nessun
server conosce tutte le
corrispondenze nomiindirizzi


ogni ISP, ha local (default)
name server
un host prima effettua una
DNS query first al local
name server
Soprattutto: non si adatta a
authoritative name server:
aggiornamenti (“non
 per un host: memorizza il
scala”)!
suo indirizzo

effettua traduzione per
quell’host
2: Application Layer
2
Root name servers
root name server
 contattato dal local name
server che non puo’
tradurre il nome
 root name server:
 contatta authoritative
name server se non
conosce l’indirizzo
 prende l’indirizzo
 lo comunica al local
name server
 ~ decine di root name
servers (nel mondo)
2
4
5
local name server
dns.uniroma1.it
1
3
authorititive name server
dns.umass.edu
6
richiesta
gaia.cs.umass.edu
uniroma1.it
2: Application Layer
3
Root name servers (cont.)
Root name server:
6
2
 potrebbe non sapere
authoratiative name
server
 puo’ sapere
intermediate name
server: chi sa dov’e’
authoritative name
server
root name server
7
local name server
dns.uniroma1.it
1
8
3
intermediate name server
dns.umass.edu
4
5
authoritative name server
dns.cs.umass.edu
requesting host
uniroma1.it
gaia.cs.umass.edu
2: Application Layer
4
DNS: query iterata
root name server
query ricorsiva:
2
 il name server
3
contattato si fa
carico della richiesta
 heavy load?
query iterata:
 il name server
contattato risponde
“non so la risposta, ma
prova a chiedere a…”
query iterata
4
7
local name server
dns.uniroma1.it
1
8
intermediate name server
dns.umass.edu
5
6
authoritative name server
dns.cs.umass.edu
requesting host
surf. uniroma1.it
gaia.cs.umass.edu
2: Application Layer
5
DNS: caching e aggiornamento dati
 quando un name server conosce un qualunque
nome mette in cache la traduzione (entrate
cache hanno un time out)
 meccanismo di aggiornamento in corso di
progetto

RFC 2136

http://www.ietf.org/html.charters/dnsind-charter.html
2: Application Layer
6
DNS records:Resource Record (RR)
Resource Record (RR) record base dati distribuita
RR formato:
(nome, valore, tipo,ttl)
 Tipo=A
 name e’ hostname
 value e’ indirizzo IP
 Tipo =NS
 nome e’ dominio (e.g.
foo.com)
 valore e’ indirizzo
IP del server
authoritative name
server per il dominio
 Tipo=CNAME
 nome e’ un alias (nome
canonico)
 valore e’ nome
canonico
 Tipo=MX
 valore e’ hostname del
mailserver associato a
 name
2: Application Layer
7
Protocollo DNS: messaggi
Protocollo DNS : query e reply- stesso formato
header messaggio
 identificazione: 16 bit #
per query, reply a query usa
stessa sequenza
 flags:
 query o reply
 ricorsione richiesta
 ricorsione disponibile
 reply e’ “authoritative”
2: Application Layer
8
Protocollo DNS: messaggi
Corpo messaggio
Nome, campi tipo
di una query
RRs di risposta
alla query
records per
authoritative servers
additional “helpful”
info that may be used
2: Application Layer
9
Socket programming
Come realizzare applicazioni client/server che
comunicano usando i sockets
Socket API
 introdotti in BSD4.1 UNIX,
1981
 creati, usati, rilasciati da
applicazioni
 paradigma client/server
 due tipi di trasporto con
socket API:
 datagrammi non affidab.
 flusso affidabile di byte
socket
un’interfaccia host-local,
creata e gestita
dall’applicazione,
controllata dal SO
una “porta” in cui il
processo applicativo puo’
spedire e ricevere
messaggi
a/da un altro processo
applicativo (remoto)
2: Application Layer
10
Programmazione socket con TCP
Socket: un aporta tra processo applicazione e endend-protocollo trasporto (UDP o TCP)
TCP service: trasferimento di byte affidabile da un
processo ad un altro
controllato da
applicazione
controllato da
sistema operativo
processo
processo
socket
TCP con
buffers,
variabili
host o
server
internet
socket
TCP con
buffers,
variabili
controllato da
applicazione
controllato da
sistema operativo
host o
server
2: Application Layer
11
Socket programming with TCP
Client must contact server
 server process must first
be running
 server must have created
socket (door) that
welcomes client’s contact
Client contacts server by:
 creating client-local TCP
socket
 specifying IP address, port
number of server process
 When client creates socket:
client TCP establishes
connection to server TCP
 When contacted by client,
server TCP creates new
socket for server process to
communicate with client
 allows server to talk with
multiple clients
application viewpoint
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server
2: Application Layer
12
Programmazione socket con TCP
Esempio client-server app:
 cliente legge linea da
standard input (inFromUser
stream), e la manda la server
via socket (outToServer
stream)
 server legge linea dal socket
 server converte la linea in
caratteri maiuscoli e la manda
indietro al client
 client legge e stampa linea
modificata dal socket
(inFromServer stream)
Input stream: sequenza di
bytes nel processo
Output stream: sequenza di
bytes fuori dal processo
client socket
2: Application Layer
13
Interazione Client/server socket
Server (eseguito su
Client
hostid)
crea socket,
porta=x, per
incoming request:
welcomeSocket =
ServerSocket()
realizzazione
aspetta per richiesta
connessione
di connessione
connectionSocket =
welcomeSocket.accept()
leggi richiesta da
connectionSocket
scrivi risposta a
connectionSocket
chiudi
connectionSocket
TCP
crea socket,
connesso a hostid, porta=x
clientSocket =
Socket()
manda richiesta usando
clientSocket
leggi risposta da
clientSocket
chiudi
clientSocket
2: Application Layer
14
Strato Applicativo: conclusioni
 requisiti strato
applicativo:

affidabilita’, banda,
ritardo
 servizio di trasporto
 affidabile e orientato
alla connessione: TCP
 non affidabile
datagrammi: UDP
 protocolli specifici:
 http
 smtp
 dns
 paradigma client-server
 programmazione socket
2: Application Layer
15
Strato Applicativo: conclusioni
protocolli
 scambio di messaggi
tipo richiesta/risposta


cliente fa richiesta
server risponde con
dati, codici stato
 formato messaggi:
 headers: danno info su
dati
 dati: info communicata
 mess. controllo vs.
mess. dati
 stateless vs. stateful
 affidabile vs. non
affidabile
 sicurezza:
autenticazione
2: Application Layer
16
Scarica

File5