DNS: Domain Name System



Похожие документы
I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

Programmare con le Socket

Programmare con le Socket TCP

Reti di Calcolatori:

Programmare con le Socket TCP in java. 2: Application Layer 1

DNS: Domain Name System

DNS: Domain Name System

DNS: Domain Name System

Parte II: Reti di calcolatori Lezione 10

Programmazione in Rete

RETI E SISTEMI INFORMATIVI Domain Name System. Prof. Andrea Borghesan

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Telematica II 12. Esercitazione/Laboratorio 4

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Corso di Reti di Calcolatori

Corso di Reti di Calcolatori. Datagrammi

Livello di applicazione. Reti di Calcolatori. Corso di Laurea in Ingegneria Informatica. Livello di applicazione DNS A.A.

Introduzione alle applicazioni di rete

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Programmazione dei socket con TCP #2

Cenni di programmazione distribuita in C++ Mauro Piccolo

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

Reti di calcolatori e Internet: Un approccio top-down. 4 a edizione Jim Kurose, Keith Ross 2-1

Reti di Telecomunicazione Lezione 8

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Reti di Telecomunicazione Lezione 6

TFA 42 Sistemi e Reti di Calcolatori per la Didattica

Il Linguaggio Java: Socket.

Introduzione. Livello applicativo Principi delle applicazioni di rete. Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio 2-1

Transmission Control Protocol

Gestione degli indirizzi

Architettura Client-Server

ARP (Address Resolution Protocol)

Dal protocollo IP ai livelli superiori

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

appunti delle lezioni Architetture client/server: applicazioni client

Reti di Calcolatori

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Gestione degli indirizzi

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls

Protocolli di Comunicazione

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Corso di Reti di Calcolatori L-A

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Inizializzazione degli Host. BOOTP e DHCP

Approfondimento di Marco Mulas

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_ Stefano Millozzi

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Programmazione in Rete

Contesto: Peer to Peer

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Reti di Calcolatori. Il software

Interconnessione di reti

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Reti di Telecomunicazioni LB Introduzione al corso

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel , dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Applicazioni distribuite

Applicazioni di rete. Applicazioni di rete

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

SISTEMA DEI NOMI DI DOMINIO (DNS) Funzionamento del DNS. Soluzione centralizzata

SISTEMA DEI NOMI DI DOMINIO (DNS)

INFORMATICA DISTRIBUITA. lez 4 Livello applicazione

12.5 UDP (User Datagram Protocol)

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 2 a lezione a.a. 2009/2010 Francesco Fontanella

Corso di recupero di sistemi Lezione 8

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005

I Socket. Laboratorio Software M. Grotto R. Farina

Reti di Calcolatori. Vantaggi dell uso delle reti. Cosa è una rete? Punto di vista logico: sistema di dati ed utenti distribuito

Parte II: Reti di calcolatori Lezione 9

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Le Reti Informatiche

Elementi di Informatica e Programmazione

PARTE 1 richiami. SUITE PROTOCOLLI TCP/IP ( I protocolli di Internet )

Altri tipi di connessione

Networking. Mauro Migliardi Ph. D.

Reti di Calcolatori. una rete di calcolatori è costituita da due o più calcolatori autonomi che possono interagire tra di loro una rete permette:

Protocolli applicativi: FTP

Reti di Calcolatori. Il Livello delle Applicazioni

Introduzione alla rete Internet

Introduzione alla rete Internet

Транскрипт:

DNS: Domain Name System Persone: identificatori: CF, nome, Numero di Passaporto Host e router Internet: Indirizzo IP (32 bit) - usato per instradare i pacchetti nome, per es., mario.lit.unicas.it - usati dagli esseri umani D: corrispondenza tra indirizzo IP e nome? Domain Name System: database distribuito realizzato con una gerarchia di molti name server protocollo application-layer host, router, name server comunicano per risolvere i nomi (traduzione indirizzo/nome) nota: una funzione core di Internet realizzata come protocollo application-layer Il Livello Applicazione 1 I name server DNS Perchè non centralizzare il DNS? Singolo punto critico volume di traffico Database centralizzato lontano manutenzione In una parola non è possibile scalare! nessun server ha tutte le corrispondenze nome-indirizzo IP name server locali: ciascun ISP o ente ha un local (default) name server Le query DNS degli host vanno prima al local name server name server authoritative: Per un host: memorizza l indirizzo IP e il nome di quell host Può effettuare la traduzione nome/indirizzo di quel nome di host Il Livello Applicazione 2

DNS: Root name server Vengono contattati dal local name server che non sa risolvere un nome root name server: Contatta un authoritative name server se il name mapping è sconosciuto Ottiene il mapping Invia il mapping al local name server ~ una dozzina di root name server a livello mondiale Il Livello Applicazione 3 Esempio di DNS root name server L hostmax.unisa.it vuole l indirizzo IP di gaia.cs.umass.edu 1. Contatta il suo DNS locale, dns.unisa.it 2. dns.unisa.it contatta il root name server, se necessario 3. Il root name server contatta l authoritative name server, dns.umass.edu, se necessario local name server dns.unisa.it 1 2 6 Host richiedente max.unisa.it 5 3 4 authoritative name server dns.umass.edu gaia.cs.umass.edu Il Livello Applicazione 4

Esempio di DNS root name server Il Root name server: Può non conoscere l authoritative name server Potrebbe conoscere un intermediate name server: chi contattare per trovare l authoritative name server local name server dns.unisa.it 1 2 8 Host richiedente max.unisa.it 7 3 6 intermediate name server dns.umass.edu 4 5 authoritative name server dns.cs.umass.edu gaia.cs.umass.edu Il Livello Applicazione 5 DNS: queries ripetute root name server Query ricorsiva: Molla il problema della risoluzione del nome al name server contattato sovraccarico? Query iterativa: Il server contattato risponde con il nome del server da contattare Non conosco questo nome, ma chiedi a questo server local name server dns.unisa.it 1 2 8 Host richiedente max.unisa.it 3 4 7 query iterativa intermediate name server dns.umass.edu 5 6 authoritative name server dns.cs.umass.edu gaia.cs.umass.edu Il Livello Applicazione 6

DNS: caching/aggiornam. records appena (un qualsiasi) nameserver apprende un mapping, lo memorizza (caches) Le voci della cache scadono (scompaiono) dopo un certo tempo La IETF ha allo studio meccanismi di update/notify RFC 2136 http://dyndns.it/ Il Livello Applicazione 7 DNS records DNS: db distribuito che memorizza resource records (RR) formato RR : (name, value, type,ttl) Type=A name è l hostname value è l IP address Type=NS name è il dominio (es., foo.com) value è l IP address dell authoritative name server per quel dominio Type=CNAME name è un alias per un dato nome canonico (il vero nome) value è il nome canonico Type=MX value è l hostname del mail server associato al nome Il Livello Applicazione 8

protocollo DNS, messaggi protocollo DNS : messaggi di query/reply, con lo stesso formato msg header identificazione: 16 bit # per le query, la reply a una query usa lo stesso # flags: query o reply recursion desired recursion available reply is authoritative Il Livello Applicazione 9 protocollo DNS, messaggi Nome, campi type per una query RRs in risposta ad una query records per server authoritative Info addizionali Il Livello Applicazione 10

Programmazione Socket Obiettivo: imparare come costruire applicazioni client/server comunicanti tramite socket Socket API Introdotte nel BSD4.1 UNIX, 1981 create, usate, rilasciate esplicitamente dalle applicazioni paradigma client/server due tipi di servizi di trasporto disponibili con la socket API: unreliable datagram reliable, byte streamoriented socket Un interfaccia (una porta ) locale all host, creata e posseduta dall applicazione, controllata dal S.O. tramite la quale il processo applicativo può sia inviare che ricevere messaggi da/per un altro processo (remoto o locale) Il Livello Applicazione 11 Programmazione Socket con il TCP Socket: una porta tra il processo applicativo e il protocollo di trasporto end-to-end (UDP o TCP) servizio TCP : trasferimento affidabile di bytes da un processo all altro controllato dallo sviluppatore dell applicazione controllato dal sistema operativo processo socket TCP con buffers, variabili internet processo socket TCP con buffers, variabili controllato dallo sviluppatore dell applicazione Controllato dal sistema operativo host o server host o server Il Livello Applicazione 12

Programmazione Socket con il TCP Il client contatta il server Il processo server deve prima essere attivato Il server deve aver creato una socket (porta) che accetta il contatto del client Il client contatta il server: Creando una socket TCP locale al client Specificando un indirizzo IP, un numero di porta del processo server Quando il client crea la socket: il client TCP stabilisce una connessione con il server TCP Quando viene contattato dal client, il server TCP crea una nuova socket per consentire la comunicazione processo server - processo client Il server può parlare con più di un client application viewpoint Il TCP fornisce un trasferimento affidabile e ordinato di bytes tra client e server Il Livello Applicazione 13 Programmazione Socket con il TCP Esempio di appl. client-server: Il client legge una linea dallo standard input (infromuser stream), la invia al server via socket (outtoserver stream) Il server legge una linea dal socket Il server converte la linea in maiuscole, la re-invia al client Il client legge dalla socket (infromserver stream) e stampa la linea modificata Input stream: sequenza di bytes nel processo Output stream: sequenza di bytes dal processo infromuser outtoserver client socket iinfromserver Il Livello Applicazione 14

Interazione socket client/server: TCP Server (in esecuzione su hostid) Crea la socket, porta=x, per le richieste in ingresso: welcomesocket = ServerSocket() Attesa per richiesta di connessione connectionsocket = welcomesocket.accept() leggi richiesta da connectionsocket Scrivirispota su connectionsocket chiudi connectionsocket TCP setup connessione Client crea socket, Connetti a hostid, porta=x clientsocket = Socket() Invia richiestasu clientsocket Leggi risposta da clientsocket chiudi clientsocket Il Livello Applicazione 15 Esempio: Java client (TCP) import java.io.*; import java.net.*; class TCPClient { Crea input stream Crea client socket, connetti al server Crea output stream connesso a socket public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket("hostname", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream ()); Il Livello Applicazione 16

Esempio: Java client (TCP), cont. Crea input stream connesso a socket invia linea al server Leggi linea dal server 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(); Il Livello Applicazione 17 Esempio: Java server (TCP) import java.io.*; import java.net.*; class TCPServer { Crea socket di attesa sulla porta 6789 attendi, sulla socket di attesa il contatto dal client Crea input stream, connesso alla socket 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())); Il Livello Applicazione 18

Example: Java server (TCP), cont Crea output stream, connesso alla socket leggi linea dalla socket Scrivi linea sulla socket DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; outtoclient.writebytes(capitalizedsentence); Fine del while loop, cicla indietro e aspetta per un altra richiesta di connessione da client Il Livello Applicazione 19 Programmazione Socket con l UDP UDP: nessuna connessione tra client e server nessun handshaking Il mittente aggiunge esplicitamente un indirizzo IP e una porta di destinazione Il server deve estrarre l indirizzo IP address e la porta del mittente dal pacchetto ricevuto UDP: I dati trasmessi possono essere persi o ricevuti fuori ordine application viewpoint UDP fornisce un trasferimento inaffidabile di gruppi di bytes ( datagrammi ) tra client e server Il Livello Applicazione 20

Interazione socket client/server: UDP Server (in esecuzione su hostid) Client Crea socket, porta=x, per le richieste in ingresso: serversocket = DatagramSocket() Leggi richieste da serversocket crea socket, clientsocket = DatagramSocket() Crea, indirizzo (hostid, porta=x, invia un datagrammadi richiesta usando clientsocket scrivi risposta su serversocket specificando l indirizzo host e Il numero di porta del client Leggi risposta da clientsocket chiudi clientsocket Il Livello Applicazione 21 Esempio: Java client (UDP) Crea input stream Crea client socket Traduci da hostname a IP usando il DNS import java.io.*; import java.net.*; 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(); Il Livello Applicazione 22

Example: Java client (UDP), cont. Crea datagramma con lunghezza dati, IP, porta Invia il datagramma al server leggi il datagramma dal server 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(); Il Livello Applicazione 23 Esempio: Java server (UDP) import java.io.*; import java.net.*; Crea datagram socket alla porta 9876 Crea spazio per Il datagramma Ricevi il datagram ma 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); Il Livello Applicazione 24

Esempio: Java server (UDP), cont Estrai IP addr port #, del mittente String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivepacket.getaddress(); int port = receivepacket.getport(); String capitalizedsentence = sentence.touppercase(); Crea datagramma da inviare al client Scrivi datagramma sulla socket senddata = capitalizedsentence.getbytes(); DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, port); serversocket.send(sendpacket); Fine del while loop, cicla indietro e attendi per un altro datagramma Il Livello Applicazione 25 Distribuzione di contenuti Web caching Reti per la distribuzione di contenuti (CDN) Condivisione di file pari a pari Il Livello Applicazione 26

I fornitori di contenuti etichettano i diversi oggetti e li scaricano nei loro server CDN Il Livello Applicazione 27 Le CDN usano il DNS per indirizzare le richieste al server CDN più vicino Il Livello Applicazione 28

Il paradigma peer-to-peer con directory centralizzata Il Livello Applicazione 29 Il paradigma P2P con directory decentralizzata Il Livello Applicazione 30

a) Il pari si unisce con la rete sovrapposta b) inondazione di richieste nella rete sovrapposta Il Livello Applicazione 31 Il Livello Applicazione: Riepilogo Abbiamo studiato un certo numero di applicazioni di rete! protocolli specifici: Requisiti del servizio di applicazione: affidabilità, larghezza di banda, ritardo paradigma client-server Modello di servizio di trasporto Internet connection-oriented, affidabile: TCP inaffidabile, datagrammi : UDP http ftp smtp, pop3 dns Programmazione socket Implementazione client/server Usando le socket tcp, udp Il Livello Applicazione 32

Il Livello Applicazione: Riepilogo Ma il nostro obiettivo principale è stato di: studiare le caratteristiche dei protocolli Tipico scambio di messaggi request/reply: il client chiede info o servizi il server risponde con dati, status code formati del messaggio: header: campi che danno info sui dati dati: info comunicate Messaggi dati o controllo in-based, out-of-band Centraliz./decentralizzati Con o senza stato Trasferimento affidabile/inaffidabile complexity at network edge sicurezza: autenticazione Il Livello Applicazione 33