DNS: Domain Name System



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

Capitolo 2: Livello di applicazione

DNS: Domain Name System

Livello applicazione: P2P, programmazione socket

Parte II: Reti di calcolatori Lezione 10

Livello applicazione: programmazione socket, P2P

Parte II: Reti di calcolatori Lezione 12

Programmazione in Rete

Programmazione in Rete

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

Reti di Calcolatori:

PROVA FINALE Ingegneria del software

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.

INFORMATICA DISTRIBUITA. prof. Carlo Bellettini. lez 8 DNS (cont)

Reti di Calcolatori. Il livello Applicazione. A.A. 2010/2011 Laurea in Informatica

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

Programmazione dei socket con TCP #2

Cenni di programmazione distribuita in C++ Mauro Piccolo

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

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

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

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

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.

Transmission Control Protocol

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

Dal protocollo IP ai livelli superiori

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

Gestione degli indirizzi

Architettura Client-Server

ARP (Address Resolution Protocol)

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP

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

appunti delle lezioni Architetture client/server: applicazioni client

Reti di Calcolatori

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Inizializzazione degli Host. BOOTP e DHCP

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

Gestione degli indirizzi

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

Protocolli di Comunicazione

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

Corso di Reti di Calcolatori L-A

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

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

Approfondimento di Marco Mulas

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Interconnessione di reti

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

Programmazione in Rete

Contesto: Peer to Peer

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

Applicazioni distribuite

Reti di Calcolatori. Il software

Reti di Calcolatori. Acknowledgement. Credits. Il livello Applicazione

Capitolo 2 Livello di applicazione

Reti di Telecomunicazioni LB Introduzione al corso

Laboratorio di Programmazione in rete

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

INFORMATICA DISTRIBUITA. lez 4 Livello applicazione

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)

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

I Socket. Laboratorio Software M. Grotto R. Farina

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

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

Parte II: Reti di calcolatori Lezione 11 (35)

Le Reti Informatiche

Elementi di Informatica e Programmazione

Capitolo 2 Livello di applicazione

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

Networking. Mauro Migliardi Ph. D.

Altri tipi di connessione

Sistemi avanzati di gestione dei Sistemi Informativi

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 diverse: la soluzione nativa

Reti di Calcolatori. Il Livello delle Applicazioni

Transcript:

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., massimotto.diiie.unisa.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 host max.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 serve 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 mai 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 RRsin risposta ad una query records per server authoritative Info addizionali Il Livello Applicazione 10

Distribuzione di contenuti Web caching Reti per la distribuzione di contenuti (CDN) Condivisione di file pari a pari Il Livello Applicazione 11

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 12

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 13

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 14

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 15

Interazione socket client/server: TCP Server (in esecuzione suhostid) Creala socket, porta=x, per le richieste in ingresso: welcomesocket = ServerSocket() Attesa per richiesta di connessione connectionsocket = welcomesocket.accept() leggirichiesta da connectionsocket Scrivi rispota su connectionsocket chiudi connectionsocket TCP setup connessione Client crea socket, Connetti a hostid, porta=x clientsocket = Socket() Invia richiesta su clientsocket Leggirisposta da clientsocket chiudi clientsocket Il Livello Applicazione 16

Esempio: Java client (TCP) import java.io.*; import java.net.*; class TCPClient { Crea input stream Crea client socket, connetti al server Crea output stream onnesso 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 17

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 18

Esempio: Java server (TCP) import java.io.*; import java.net.*; class TCPServer { Crea socket di attesa sulla porta 6789 ttendi, sulla socket i 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 19

Example: Java server (TCP), cont Crea output stream, connesso alla socket leggi linea dalla socket DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; Scrivi linea sulla socket } } } outtoclient.writebytes(capitalizedsentence); Fine del while loop, cicla indietro e aspetta per un altra richiesta di connessione da client Il Livello Applicazione 20

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 21

Interazione socket client/server: UDP Server (in esecuzione suhostid) Client Crea socket, porta=x, per le richieste in ingresso: serversocket = DatagramSocket() Leggirichieste da serversocket crea socket, clientsocket = DatagramSocket() Crea, indirizzo (hostid, porta=x, invia un datagramma di richiesta usando clientsocket scrivi risposta su serversocket specificando l indirizzo host e Il numero di porta del client Leggirisposta da clientsocket chiudi clientsocket Il Livello Applicazione 22

Esempio: Java client (UDP) import java.io.*; import java.net.*; Crea input stream Crea client socket Traduci da hostname a IP usando il DNS 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 23

Example: Java client (UDP), cont. Crea datagramma con lunghezza dati, IP, porta via il datagramma al server ggi 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 24

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 25

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(); rea datagramma inviare al client Scrivi datagramma sulla socket } } String capitalizedsentence = sentence.touppercase(); 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 26

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 27

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 28

I fornitori di contenuti etichettano i diversi oggetti e li scaricano nei loro server CDN Il Livello Applicazione 29

Le CDN usano il DNS per indirizzare le richieste al server CDN più vicino Il Livello Applicazione 30

Il paradigma peer-to-peer con directory centralizzata Il Livello Applicazione 31

Il paradigma P2P con directory decentralizzata Il Livello Applicazione 32

a) Il pari si unisce con la rete sovrapposta b) inondazione di richieste nella rete sovrapposta Il Livello Applicazione 33