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