TFA 42 Sistemi e Reti di Calcolatori per la Didattica



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

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

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

ARP (Address Resolution Protocol)

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

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

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

Programmazione in Rete

Corso di Reti di Calcolatori

Corso di recupero di sistemi Lezione 8

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Corso di Reti di Calcolatori. Datagrammi

Reti di Calcolatori

Reti di Calcolatori:

Architettura Client-Server

Parte II: Reti di calcolatori Lezione 10

P2-09: Domain Name System (Cap. 24)

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

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP

Algoritmi di Ricerca. Esempi di programmi Java

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Compute engine generici in RMI

Lezione n.2 LPR - Informatica Applicata Thread Pooling, Callable Gestione Indirizzi IP

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

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

Reti diverse: la soluzione nativa

Parte II: Reti di calcolatori Lezione 12

Inizializzazione degli Host. BOOTP e DHCP

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

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Lezione n.2 20/2/2006

RMI. Java RMI RMI. G. Prencipe

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

SISTEMA DEI NOMI DI DOMINIO (DNS)

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

Domain Name System: DNS

Lezione 1 Introduzione

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

Reti di Calcolatori. Il Livello delle Applicazioni

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Telematica II 17. Esercitazione/Laboratorio 6

Reti diverse: la soluzione nativa

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Java threads (2) Programmazione Concorrente

Lezione n.10 LPR- Informatica Applicata RMI CallBacks

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Naming nei Sistemi Distribuiti

Naming nei Sistemi Distribuiti

Active Directory. Installatore LAN. Progetto per le classi V del corso di Informatica

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

Corso di Informatica Modulo T3 B2 - Database in rete

Introduzione al Dns. Loredana Pillitteri. Semplificazione della gestione e delega amministrativa Pisa - CNR - ISTI dicembre 2003

URI. Introduzione. Pag. 1

Domain Name System. Gerarchia nomi simbolici

Comprendere cosa è Internet e sapere quali sono i suoi principali impieghi. 25/09/2011 prof. Antonio Santoro

appunti delle lezioni Architetture client/server: applicazioni client

Programmare in Java. Olga Scotti

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

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

Concetto di Funzione e Procedura METODI in Java

Network Services Location Manager. Guida per amministratori di rete

RMI: metodi equals e hashcode

(Domain Name System) DNS (Domain Name System) Architettura del DNS DNS. A.Lioy - Politecnico di Torino (2013) B-1. Antonio Lioy < lioy@polito.

13. Chain of Responsibility

Dal protocollo IP ai livelli superiori

Multithreading in Java. Fondamenti di Sistemi Informativi

Domain Name System (DNS)

Java: Compilatore e Interprete

DNS: Domain Name System

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

La struttura dati ad albero binario

Protocolli applicativi: FTP

Corso di Reti di Calcolatori L-A

Sistemi avanzati di gestione dei Sistemi Informativi

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

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

DNS: Domain Name System

RMI Remote Method Invocation

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

Sistemi e Servizi di TLC. Lezione N. 6. Il servizio DNS (Domain Name System)

Programmare con le Socket

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Reti di Telecomunicazione Lezione 7

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

Cenni di programmazione distribuita in C++ Mauro Piccolo

GESTIONE DEI PROCESSI

La concorrenza in Java package java.util.concurrent Antonio Furone

Gestione delle Eccezioni

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

19. LA PROGRAMMAZIONE LATO SERVER

Domain Name System: DNS

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

Transcript:

Università degli Studi di Pisa 42 Sistemi e Reti di Calcolatori per la Didattica 29/03/2013 Laura Ricci Laura Ricci 1

DNS: DOMAIN NAME SYSTEM Persone: molti identificativi: o # CF, nome, # passaporto Host e router in Internet: indirizzo IP (32 bit) usato per indirizzare datagrams nome, e.g., luna.di.unipi.it usato dagli esseri umani Domanda: corrispondenza tra indirizzo IP e nome? Domain Name System: database distribuito implementato con una gerarchia di name server protocollo di livello application host, router, e name servers comunicano per risolvere nomi (traduzione indirizzo/nome) Laura Ricci 2

SERVIZI OFFERTI DAL DNS Traduzione di indirizzi mnemonico -> IP Host aliasing indirizzi mnemonici complicati possono avere alias più semplici Distribuzione di carico web server replicati su host con stesso indirizzo cnn.com) ma diversi indirizzi IP mnemonico (e.g., rotazione degli indirizzi nelle risposte (l ordine determina contattare per primo da parte del client HTTP) chi Laura Ricci 3

DNS NAME SERVERS Perché non centralizzare il DNS? punto unico di guasto volume di traffico database centralizzato distante mantenimento non scala! nessun server ha tutte le corrispondenze nome-indirizzo IP name server locali: ogni ISP o azienda ha dei name server locali (default) la query DNS di un host è innanzitutto diretta al name server locale name server autoritativo: per un host: memorizza il nome e l indirizzo IP di quell host può eseguire la traduzione nome/indirizzo per il nome di quell host Laura Ricci 4

ROOT NAME SERVERS root name servers: contattati dai name server locali che non sanno risolvere un nome: Il root name server: contatta il name server autoritativo se non conosce la corrispondenza per il nome ottiene la corrispondenza restituisce la corrispondenza al name server locale Laura Ricci 5

ROOT NAME SERVERS: LOCAZIONE Laura Ricci 6

UN SEMPLICE ESEMPIO DI DNS l host surf.eurecom.fr vuole l indirizzo IP di gaia.cs.umass.edu 1. contatta il suo server DNS locale dns.eurecom.fr 2. dns.eurecom.fr contatta il root name server, se necessario 3. il root name server contatta il name server autoritativo, dns.umass.edu, se necessario Laura Ricci 7

UN SEMPLICE ESEMPIO DI DNS Root name server: può non conoscere il name server autoritativo può conoscere un name server intermedio : chi contattare per trovare il name server autoritativo Laura Ricci 8

QUERY ITERATE/VS. RICORSIVE query ricorsive: scarica il peso della risoluzione del nome sul name server contattato carico pesante? query iterate: il server contattato risponde con il nome del server da contattare non conosco questo nome ma chiedi a questo server Laura Ricci 9

DNS: CACHING uso esteso di caching per rendere più efficiente il processo di ricerca ogni volta che si viene a conoscenza di un authoritative server per una zona, questa informazione viene memorizzata nella cache la successiva ricerca per lo stesso nome di dominio viene risolta localmente con i dati contenuti nella cache Laura Ricci 10

UN ESERCIZIO DI RISCALDAMENTO Progettare un'esperienza pratica che permetta di verificare le politiche di caching utilizzate da JAVA per la gestione dei dati restituiti da interrogazioni al DNS Utilizzare gli strumenti definiti da JAVA Laura Ricci 11

UN ESERCIZIO DI RISCALDAMENTO networkaddress.cache.ttl Questa proprietà descrive la politica di caching per i name look-up inviati al DNS e che sono terminati con successo. Il valore della proprietà è un intero che indica il numero di secondi in cui il risultato di una ricerca che ha avuto successo viene mantenuto nella cache. Il valore di default è -1 che indica che i look-up che hanno avuto successo vengono mantenuti permanentemente nella JVM. Se il valore è 0, allora non viene effettuato caching. Ogni altro valore positivo indica per quanto (numero di secondi) un look-up positivo viene mantenuto nella cache. Laura Ricci 12

UN ESERCIZIO DI RISCALDAMENTO networkaddress.cache.negative.ttl Questa proprietà indica la politica di caching per i name look-up al DNS che sono falliti. La proprietà viene specificata come un valore intero che indica il numero di secondi in cui vengono mantenute nella cache i look-up che non hanno avuto successo. Il valore per default è 10 secondi. Se il valore è impostato a 0, significa che non viene mai effettuato caching dei look-up che si sono rislti con insuccesso. Ogni altro valore positivo indica per quanto tempo va mantenuto nella cache un risultato di insuccesso. Per settare queste proprietà: Security.setProperty("networkaddress.cache.ttl", "10000") Laura Ricci 13

UN ESERCIZIO DI RISCALDAMENTO import java.net.inetaddress; import java.net.unknownhostexception; import java.security.*; public class Caching {public static void main(string [] args) throws InterruptedException {Security.setProperty("networkaddress.cache.ttl", "0"); System.out.println("Cache property:" + Security.getProperty("networkaddress.cache.ttl")); Laura Ricci 14

UN ESERCIZIO DI RISCALDAMENTO long time1 = System.currentTimeMillis(); for (int i=0; i<1000; i++) { try {System.out.println( InetAddress.getByName("www.cnn.com").getHostAddress()); } catch (UnknownHostException uhe) {System.out.println("UHE");} } long time2 = System.currentTimeMillis(); long diff=time2-time1; System.out.println("tempo trascorso e'"+diff); }} Laura Ricci 15

UN ESERCIZIO DI RISCALDAMENTO Registrare il tempo medio necessario per eseguire i 1000 look-up: 800-900 msec Poi modificare la proprietà Security.setProperty("networkaddress.cache.ttl", "10000") Ora il tempo oscilla tra 100-200 msecondi, si noto una notevole diminuzone del tempo richiesto Laura Ricci 16

UN ESERCIZIO PIU' COMPLESSO Obiettivi: illustrare alcune caratteristiche del DNS tramite una esperienza di laboratorio Prerequisiti: conoscenza linguaggio JAVA conoscenza dei metodi che consentono di interrogare il DNS gestione di thread e di pool di thread in JAVA Laura Ricci 17

ESERCITAZIONE PROPOSTA: WEBLOOKUP Scrivere un programma WebLookUp che traduca una sequenza di nomi simbolici di host nei corrispondenti indirizzi IP. WebLookUp legge i nomi simbolici da un file, il cui nome è passato da linea di comando oppure richiesto all'utente: si deve definire un task che, ricevuto come parametro un nome simbolico, provvede a tradurre il nome restituendo il corrispondente indirizzo IP per ottimizzare la ricerca, si deve attivare un pool di thread che esegua i task in modo concorrente. perchè utilizzare più threads? una interrogazione al DNS può richiedere più tempo di altre. Utilizzando un thread per ogni interrogazione, il programma non si blocca su quella interrogazione ottimizzazione delle prestazioni Laura Ricci 18

TASK PER LA TRADUZIONE DI INDIRIZZI SIMBOLICI import java.net.*; import java.util.concurrent.*; public class Translator implements Callable <InetAddress> { private String hostname; //indirizzo ip passato al task corrente public Translator (String name) { hostname = name; } public InetAddress call() throws UnknownHostException { InetAddress netaddr = InetAddress.getByName(hostname); return netaddr; }} Laura Ricci 19

import java.net.*; import java.io.*; import java.util.*; import java.util.concurrent.*; public class WebLookUp { /* * il metodo main accetta un parametro opzionale * 0 param: usa il file di default NameList * 1 param: usa il file specificato nel parametro */ public static void main(string [] args) { if (args.length > 1) { System.out.println("errore argomenti"); Return; } File namelist; if (args.length == 0) namelist = new File("whereami.txt"); else namelist = new File(args[0].toString()); Laura Ricci 20

LETTURA INDIRIZZI SIMBOLICI DAL FILE Scanner scan; try {scan = new Scanner(nameList); } //scanner sul file aperto per leggerlo catch (FileNotFoundException e) { System.out.println("file non trovato"); return; } System.out.println("Il file " + namelist.tostring() + " viene letto"); if (!scan.hasnextline()) { System.out.println("file vuoto"); return; } Laura Ricci 21

ATTIVAZIONE THREAD POOL Future <InetAddress> ris; ArrayList <Future<InetAddress>> futures = new ArrayList <Future<InetAddress>>(); //Pool con core 3 threads, massimo 10 threads e KeepAlive 50 secondi ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 10, 50000, TimeUnit. MILLISECONDS, new LinkedBlockingQueue <Runnable> ()); Laura Ricci 22

ATTIVAZIONE THREAD POOL Future <InetAddress> ris; ArrayList <Future<InetAddress>> futures = new ArrayList <Future<InetAddress>>(); //Pool con core 3 threads, massimo 10 threads e KeepAlive 50 secondi ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 10, 50000, TimeUnit. MILLISECONDS, new LinkedBlockingQueue <Runnable> ()); Laura Ricci 23

ATTIVAZIONE THREAD POOL String line; while (scan.hasnextline()) { line = scan.nextline(); ris = pool.submit(new Translator(line)); futures.add(ris); //legge ogni riga, che contiene un solo indirizzo, e la passa ad un task Translator } Laura Ricci 24

RACCOLTA DEI RISULTATI pool.shutdown(); for(future fu: futures){ try{ System.out.println("Host remoto: " + } fu.get(1000,timeunit.milliseconds)); catch (InterruptedException e){system.out.println("sono stato Interrotto");} catch (Exception e){system.out.println("c'e'stata una eccezione");} }}} Laura Ricci 25

RISULTATI PRODOTTI Il file whereami.txt viene letto Host remoto: www.mprod.net/66.147.244.91 Host remoto: www.google.it/173.194.40.88 Host remoto: www.techxd.net/66.147.244.78 Host remoto: www.di.unipi.it/131.114.3.18 Host remoto: www.vodafone.it/194.20.72.36 Host remoto: www.tre.it/93.57.15.151 Host remoto: www.apple.com/184.85.157.15 Host remoto: www.microsoft.com/65.55.57.27 Host remoto: www.altervista.org/199.27.134.25 Host remoto: www.oracle.com/23.55.6.140 Host remoto: www.fox.it/83.136.146.34 Host remoto: www.sky.it/93.57.33.148 Host remoto: www.ilmeteo.it/94.32.108.10 Host remoto: www.ubuntu-it.org/91.189.94.248 Host remoto: www.unibo.it/137.204.24.35 Host remoto: www.nasa.gov/193.45.10.137 Host remoto: www.ebay.it/66.135.210.182 Host remoto: www.amazon.com/176.32.98.166 Host remoto: www.amazon.de/178.236.6.250 Host remoto: www.amazon.it/178.236.4.216 Laura Ricci 26

CHE ACCADE SE SI MODIFICA IL PROGRAMMA COME SEGUE? while (scan.hasnextline()) { line = scan.nextline(); ris = pool.submit(new Translator(line)); //legge ogni riga, che contiene un solo indirizzo, e la passa ad un task Translator try { InetList.add(ris.get())}; catch (InterruptedException e1) { //aggiunge il risultato all'arraylist System.out.println("interruzione inaspettata"); catch (ExecutionException e2) { } System.out.println("Indirizzo di " + line + " inesistente");} //se la get sul Future fallisce significa che la call ha lanciato un eccezione } Laura Ricci 27

COMPITO PER LE VACANZE progettare altre esperienze di laboratorio che consentano la sperimentazione di qualche aspetto relativo ai protocolli di rete sviluppati nelle lezioni teoriche con riferimento a JAVA, alcuni esempi: verifica che il protocollo UDP non implementa controllo di flusso protocollo HTTP gestione URL...??? altri esempi anche in riferimento ad altri linguaggi/ambienti? Laura Ricci 28