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

DNS: Domain Name System

Programmare con le Socket TCP

Capitolo 2: Livello di applicazione

Programmare con le Socket

Reti di Calcolatori:

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

DNS: Domain Name System

Programmazione in Rete

DNS: Domain Name System

Livello applicazione: P2P, programmazione socket

Livello applicazione: programmazione socket, P2P

PROVA FINALE Ingegneria del software

Parte II: Reti di calcolatori Lezione 11 (35)

Capitolo 2 Livello di applicazione

Reti di Calcolatori. Acknowledgement. Credits. Il livello Applicazione

Livello di trasporto:

Capitolo 2 Livello di applicazione

Parte II: Reti di calcolatori Lezione 13 (37)

Parte II: Reti di calcolatori Lezione 12 (36)

Applicazioni di rete

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

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

Reti (già Reti di Calcolatori )

Fondamenti di Internet e Reti. Achille Pattavina, Francesco Musumeci

Capitolo 2 Livello di applicazione

Parte II: Reti di calcolatori Lezione 12

Fondamenti di Internet e Reti. Antonio Capone, Achille Pattavina, Francesco Musumeci, Matteo Cesana

Parte II: Reti di calcolatori Lezione 10

Il Linguaggio Java: Socket.

Reti di Calcolatori:

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

Reti di Calcolatori e Laboratorio

Di seguito si riporta il codice necessario per la verifica in oggetto:

Reti di Calcolatori:

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

Programmazione in Rete

Applicazioni web. Parte 10 Socket. Alberto Ferrari

Livello applicazione: DNS

Parte II: Reti di calcolatori Lezione 13 (37)

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Telematica II 12. Esercitazione/Laboratorio 4

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Esercizi su UDP. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 22/10/2008. Università di Pisa

Livello applicazione: Protocollo DNS

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione

Reti datagram. Reti a commutazione di pacchetto (datagram) Datagram è caratterizzato dall indirizzo di destinazione (indirizzi IP) Servizio di routing

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

Socket (TCP/IP) Socket (TCP/IP) Concetto di socket. Cenni (reti)

Applicazioni di rete. Applicazioni di rete

Lo strato di Trasporto

Corso di Reti di Calcolatori

Architettura Client-Server

Programmazione distribuita in Java. Socket & Client-Server

Esercizio Trasferimento File e Multicast

Modello client-server

Corso di Reti di Calcolatori. Datagrammi

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

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

Applicazioni e protocolli a livello applicazione

Lezione n.7 LPR- Informatica Applicata

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

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

LPR A 2005/2006 Lezione 5. Riepilogo Caratteristiche Datagram Socket Stream Mode Socket API Sockets Lato Client Sockets Lato Server Esempi

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

RETI DI CALCOLATORI Home Work ritardi e livello applicativo

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Esercitazione: Socket Java senza connessione

Organizzazione della lezione

Programmazione dei socket con TCP #2

Introduzione. Obiettivo: Sommario: Introduzione alle reti di telecomunicazioni approccio:

Lo strato di applicazione in Internet

Esempi di programmi client/server in Python

Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.

Tecnologie di Sviluppo per il Web. Introduzione alle Reti di Calcolatori

UDP. User Datagram Protocol. UDP Connectionless

Nome e Cognome : Anno di corso Numero di matricola : Como, 7 maggio Quiz a risposta multipla

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

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

Architetture di rete. 4. Le applicazioni di rete

Configurazione delle interfacce di rete

Corso di Reti di Calcolatori L-A

Introduzione alla rete Internet

RETI DI CALCOLATORI Home Work ritardi e livello applicativo

Il livello trasporto: Introduzione e protocollo UDP

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

(Domain Name System) DNS (Domain Name System)

! " # $ % &! ' ( ) (! 9 :! ; " / < 0 < "! 9 0 & %. 0 % & =! < 0 ; <. < > > <! 9?! ". & %!

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Le Reti Informatiche

Corso di Telematica II

Uso di Internet: Esempio. Prof. Franco Callegati

LPR 2005/2006 Lezione 7. paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio

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

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 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://www.ietf.org/html.charters/dnsind-charter.html 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: ndo 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 maiscole, 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) 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 { input stream client socket, connetti al server 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. 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 { socket di attesa sulla porta 6789 attendi, sulla socket di attesa il contatto dal client 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 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 socket, porta=x, per le richieste in ingresso: serversocket = DatagramSocket() Leggi richieste da serversocket crea socket, clientsocket = DatagramSocket(), 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) input stream 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. 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.*; datagram socket alla porta 9876 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(); datagramma da 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 25 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 26

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 27