Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Commutazione di Pacchetto e Tecniche di Rete: Analisi Dettagliata, Sbobinature di Telecomunicazioni

Le operazioni di commutazione nelle reti, concentrandosi sulle tecniche di commutazione di circuito e di pacchetto. Esamina i servizi di tipo datagramma e a circuito virtuale, evidenziando le differenze nell'instradamento e nella gestione dei pacchetti. Approfondisce le problematiche di perdita, duplicazione e fuori sequenza dei pacchetti, oltre a discutere l'importanza della trasparenza temporale e della compatibilità tra terminali nelle reti a commutazione di pacchetto. Infine, analizza il modello p2p e le minacce alla sicurezza nelle reti, offrendo una panoramica completa delle sfide e delle soluzioni nel campo delle reti di calcolatori.

Tipologia: Sbobinature

2024/2025

Caricato il 09/08/2025

flavia-menichelli-1
flavia-menichelli-1 🇮🇹

2 documenti

1 / 57

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Tecniche di commutazione
La tecnica di commutazione specifica come le unità informative ricevute da un generico nodo sui
suoi collegamenti entranti siano trasferite attraverso il nodo sui collegamenti uscenti. Tutti i nodi
di una rete adottano generalmente la stessa modalità di commutazione. L'aspetto chiave che
caratterizza la modalità di commutazione è l'individuazione del collegamento uscente da
assegnare a ogni unità informativa ricevuta. L'operazione di commutazione si espleta attraverso
due distinte operazioni:
instradamento: è un'operazione "intelligente", eseguita dal software del nodo, che consiste
nel selezionare, secondo un opportuno algoritmo, il ramo in uscita dal nodo da utilizzare
per l'unità informativa (UI) ricevuta su un'interfaccia di ingresso del nodo stesso;
inoltro: è un'operazione più "meccanica", eseguita tipicamente dall'hardware del nodo, che
consiste nell'attuare la decisione di instradamento presa nel passo precedente trasferendo
l'UI sull'interfaccia di uscita selezionata, dove questa verrà trasmessa.
Le due tecniche di commutazione che vengono adottate nelle reti sono: la commutazione di circuito
e la commutazione di pacchetto. Queste differiscono per la modalità di trasferimento delle UI in
rete e conseguentemente per le relative prestazioni di rete. Con la commutazione di circuito si
riserva nella rete a ogni coppia sorgente-destinazione una capacità trasmissiva tale da garantire
che tutte le Ul saranno consegnate a destinazione con ritardo tipicamente costante. Nella
commutazione a pacchetto questa garanzia viene a mancare in quanto si cerca di commisurare le
risorse di comunicazione da utilizzare alla reale attività delle sorgenti, tenendo conto quindi
della frequenza media generata da ognuna di esse. Nel caso di sorgenti intermittenti ciò conduce a
un'utilizzazione ottimale delle risorse di comunicazione disponibili in rete.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39

Anteprima parziale del testo

Scarica Commutazione di Pacchetto e Tecniche di Rete: Analisi Dettagliata e più Sbobinature in PDF di Telecomunicazioni solo su Docsity!

Tecniche di commutazione La tecnica di commutazione specifica come le unità informative ricevute da un generico nodo sui suoi collegamenti entranti siano trasferite attraverso il nodo sui collegamenti uscenti. Tutti i nodi di una rete adottano generalmente la stessa modalità di commutazione. L' aspetto chiave che caratterizza la modalità di commutazione è l' individuazione del collegamento uscente da assegnare a ogni unità informativa ricevuta. L'operazione di commutazione si espleta attraverso due distinte operazioni:

  • instradamento : è un'operazione "intelligente", eseguita dal software del nodo, che consiste nel selezionare , secondo un opportuno algoritmo, il ramo in uscita dal nodo da utilizzare per l'unità informativa (UI) ricevuta su un'interfaccia di ingresso del nodo stesso;
  • inoltro : è un'operazione più "meccanica", eseguita tipicamente dall' hardware del nodo, che consiste nell' attuare la decisione di instradamento presa nel passo precedente trasferendo l'UI sull'interfaccia di uscita selezionata, dove questa verrà trasmessa. Le due tecniche di commutazione che vengono adottate nelle reti sono: la commutazione di circuito e la commutazione di pacchetto. Queste differiscono per la modalità di trasferimento delle UI in rete e conseguentemente per le relative prestazioni di rete. Con la commutazione di circuito si riserva nella rete a ogni coppia sorgente-destinazione una capacità trasmissiva tale da garantire che tutte le Ul saranno consegnate a destinazione con ritardo tipicamente costante. Nella commutazione a pacchetto questa garanzia viene a mancare in quanto si cerca di commisurare le risorse di comunicazione da utilizzare alla reale attività delle sorgenti, tenendo conto quindi della frequenza media generata da ognuna di esse. Nel caso di sorgenti intermittenti ciò conduce a un'utilizzazione ottimale delle risorse di comunicazione disponibili in rete.

Packet switching Internet è un esempio di rete di commutatore di pacchetti. Quando un sistema periferico (pc, tablet ecc) vuole inviare dati ad un altro sistema periferico, suddivide i dati in sottoparti: l’informazione (che può essere espressa attraverso linguaggio binario, ovvero una sequenza di bit) è spezzettata in tanti piccoli pacchetti (packets). I pacchetti sono inviati attraverso la rete, saltano da un nodo all’altro finchè non trovano la via per la destinazione ( store and forward ) dove vengono riassemblati per ottenere i dati originari. Questi salti possono essere realizzati da qualsiasi sottorete (internet-networking). Esistono due tipi di rete: di accesso (insieme di sottoreti e routers a cui gli utenti si connettono direttamente) e dorsali (insieme di sottoreti e routers che servono per smistare le informazioni). Un commutatore di pacchetto prende un pacchetto che arriva da uno dei collegamenti in ingresso e lo trasmette su uno di quelli in uscita. I due principali commutatori in internet sono: i router e i commutatori a livello di collegamento ( link-layer switch ). (Nelle reti del circuito telefonico è noto come exchange, nel contesto della LAN è noto come switch.) La sequenza di collegamenti e di commutatori di pacchetto attraversata dal singolo pacchetto è nota come percorso ( route o path) attraverso la rete. Commutazione di pacchetto In una rete a commutazione di pacchetto l'informazione che deve essere trasferita tra apparecchiature terminali viene generalmente spezzata in una serie di blocchi di lunghezza opportuna, ognuno dei quali viene dotato di un campo aggiuntivo di " intestazione ", chiamato header , che reca tra l'altro l'indicazione della destinazione. Ogni UI , denominata pacchetto , sarà dunque costituita da un header lungo Lh bit e da un blocco di dati dell'utente , denominato "carico pagante", o payload , lungo Lp bit. In una rete a commutazione di pacchetto ogni nodo riceve unità informative da molti nodi a monte e queste UI devono essere instradate verso i nodi a valle. Ciò implica che un' Ul ricevuta in un nodo, che viene instradata verso la sua destinazione attraverso una specifica uscita del nodo, può trovare il collegamento uscente selezionato già occupato da un'altra trasmissione. Può anche accadere che un'UI debba attendere non solo il completamento della trasmissione in corso, ma anche quella delle altre Ul già ricevute dal nodo e ugualmente in attesa della disponibilità dello stesso ramo in uscita. Definiamo quindi la quarta componente che definisce il tempo di trasferimento in rete di un' UI (le rime tre sono il tempo di trasmission e, il tempo di propagazione e il tempo di elaborazione ): Twk è il tempo di attesa dell’UI nel nodo K prima dell’inizio della sua trasmissione su collegamento uscente. Nel caso della commutazione di pacchetto ogni nodo deve essere dotato di unità di memoria, o buffer , che consentano di memorizzare le Ul in attesa di trasmissione. Per questo motivo i nodi di questa rete sono detti di tipo store and forward (S&F). In genere le Ul vengono trasmesse su ogni collegamento uscente secondo il loro ordine di arrivo al nodo stesso. Risulta evidente che la capacità di memorizzazione del nodo (capacità del buffer) rappresenta un parametro molto importante in una rete a commutazione di pacchetto. Infatti, più grandi sono i buffer, maggiore è il numero delle Ul che vi possono essere immagazzinate in attesa che si renda disponibile il collegamento uscente richiesto. Le unità informative possono essere perse in occasione della saturazione dei buffer. Quindi si dovranno attuare opportune procedure che consentano di controllare il livello di riempimento dei buffer e rendano anche possibile l'eventuale recupero delle unità informative che fossero perse per saturazione dei buffer.

Commutazione di circuito Un servizio di rete a commutazione di circuito rende disponibili connessioni per il trasferimento di dati tra apparecchiature terminali. Si articola in tre fasi: instaurazione , dati , rilascio. Durante la fase di instaurazione, la connessione richiesta viene instaurata e le risorse trasmissive necessarie a trasportare il flusso di Ul generate da una sorgente continua , schematizzabile come sorgente di tipo CBR , sono riservate lungo il percorso nella rete. Queste risorse verranno utilizzate nella fase dati al momento di trasferire in rete le Ul relative alla connessione stessa, per poi essere liberate nella fase di rilascio. Esempio: servizio di rete a commutazione a circuito. Ipotizzando un'interazione tra i sistemi terminali A e B. Questa interazione richiede l'attraversamento di tre nodi, denominati X, Y, Z. I nodi X e Z sono nodi di accesso (interfacciano apparecchiature terminali), mentre Y è un nodo di transito. Durante la fase di instaurazione un sistema terminale A che vuole comunicare con un sistema terminale remoto B invia al nodo di accesso X un'Ul di segnalazione che specifica l'indirizzo di rete del sistema B. Il trasferimento di questa unità viene effettuato in modo analogo a quanto avviene in una rete a commutazione di pacchetto. Ogni nodo attraversato riserva sul collegamento uscente attraversato tutta la capacità richiesta per la comunicazione, fino a che l'Ul raggiunge la destinazione B. Assumendo collegamenti di uguale lunghezza e capacità (nell’esempio), e nodi tutti uguali, il tempo richiesto per la completa ricezione dell’Ul da parte di B è 4(Tt + τ) + 3Tp. se la componente aleatoria del tempo di attesa nei nodi è trascurabile. Trascorso il tempo necessario affinché B accetti la richiesta di connessione , la fase di instaurazione viene completata in un tempo 4 τ + Tt necessario per la propagazione della risposta da B ad A e per la sua trasmissione. In questo caso si ipotizza che le risorse di comunicazione impegnate da A a B siano utilizzate direttamente per la trasmissione anche dell'informazione in direzione opposta, senza richiedere ulteriore elaborazione nei nodi. Alla fase di instaurazione segue la fase dati , nella quale i dati generati da A e da B, sotto forma di UI di lunghezza opportuna, sono trasferiti dalla rete a B e A, rispettivamente, ciò avviene utilizzando la via di rete (sequenza di rami e nodi) tracciata durante la fase di instaurazione. Dato che una richiesta di connessione viene accettata solo se è possibile riservare la capacità richiesta lungo tutto il percorso , la fase dati è caratterizzata dall' assenza dei tempi di elaborazione delle Ul nei nodi. Dunque, il tempo di ritardo di ogni segmento informativo sarà dato dal tempo di propagazione end-to-end in aggiunta al tempo necessario a trasmettere il segmento. La fase di rilascio , che determina la fine del trasferimento di dati, può essere attivata da entrambi i sistemi terminali ; nel nostro esempio il rilascio è richiesto da A. Questa fase è attuata mediante trasferimento di un'UI di segnalazione attraverso la rete lungo la via della connessione da A a B, cosa che determina il rilascio delle risorse di comunicazione riservate per lo scambio dei dati. Servizio datagramma In una rete a commutazione di pacchetto di tipo datagramma la rete trasferisce i pacchetti ricevuti nei nodi sorgente attraverso una sequenza di nodi e di rami sulla base dell'indirizzo di destinazione che è contenuto in ogni pacchetto. La sequenza dei nodi attraversati dipende dagli algoritmi di instradamento che vengono attuati nei singoli nodi. La via da seguire per ogni pacchetto è

memorizzata nella tabella di instradamento , che specifica per ogni destinazione il collegamento uscente da selezionare, e quindi il nodo successivo ( next hop ) lungo il percorso. Esempio: il principio di trasferimento dati in una rete con servizio di tipo datagramma considerando due utilizzatori, A e B. Nell'esempio si ipotizza che il sistema terminale A invii al server B tre pacchetti e che tutti seguano la stessa strada attraverso i nodi X e Y lungo collegamenti che operano alla stessa frequenza di cifra fo. In particolare, non appena ognuno dei pacchetti viene completamente ricevuto in un nodo, ha inizio la sua elaborazione per svolgere varie funzioni, tra le quali quella dell'instradamento, che ha come effetto la scelta del nodo a valle. Si osserva che il tempo che intercorre tra l'istante di fine ricezione del pacchetto in ogni nodo e l'istante di inizio di ritrasmissione a valle include due componenti: il tempo di elaborazione del pacchetto e il tempo di attesa richiesto per la disponibilità delle risorse trasmissive sul ramo uscente selezionato. La definizione della tabella di instradamento in ogni nodo risponde al criterio di minimizzare le risorse di rete richieste per instradare un pacchetto. In generale la via più breve, è il criterio più semplice e immediato ; tuttavia, tecniche più sofisticate richiedono di tenere conto anche degli aspetti di prestazione che si conseguono, espressi in termini di tempi di ritardo dei pacchetti e di throughput di rete. Ne consegue che è buona norma disporre di algoritmi di instradamento "dinamici" , in grado cioè di adattarsi alle mutevoli condizioni di traffico in cui viene a trovarsi la rete. A un algoritmo di instradamento dinamico corrisponde una variabilità del percorso di rete tra un nodo sorgente e un nodo destinazione. Poiché in una rete di tipo datagramma l'instradamento viene effettuato pacchetto per pacchetto , indipendentemente dalla relativa sorgente, un cambiamento nella tabella di instradamento intervenuto durante la ricezione dei pacchetti nel nodo può risultare in instradamenti diversi anche a parità di destinazione. In un servizio di tipo datagramma vi è la possibilità che, nonostante il funzionamento corretto del protocollo di linea lungo tutti i rami utilizzati, si verifichino i seguenti eventi:

  • fuori sequenza : la destinazione riceve attraverso la rete una sequenza di pacchetti in un ordine diverso dalla sequenza di generazione da parte della sorgente ;
  • duplicazione : la destinazione riceve due copie identiche dello stesso pacchetto ;
  • perdita : un pacchetto viene perso in un nodo della rete, senza che siano possibile recuperarlo. L'evento di ricezione fuori sequenza dei pacchetti può naturalmente verificarsi in una rete di tipo datagramma a causa della diversità dei percorsi lungo i quali vengono instradati i singoli pacchetti , che possono quindi subire ritardi diversi. Per quanto riguarda la perdita dei pacchetti si ipotizza che il nodo F si guasti dopo che il pacchetto numero 2 è stato ricevuto e la sua corretta ricezione confermata al nodo B. In queste condizioni né il nodo D, né la destinazione HD hanno modo di rilevare la perdita del pacchetto, che quindi è perso definitivamente. Per rappresentare l'evento di duplicazione di pacchetti si consideri l'esempio in cui entrambi i pacchetti numero 2 e 3 sono instradati lungo il ramo B-F. Il nodo F instrada il pacchetto numero 2 verso il nodo E, che riscontra regolarmente il pacchetto e lo rilancia al nodo D. Purtroppo il riscontro sul ramo E-F viene perduto in seguito a un guasto del ramo, che viene rilevato dal nodo F in uno stato di fuori servizio. In assenza di riscontro, il nodo F prova un nuovo instradamento lungo il ramo F-D, dove vengono trasmessi con successo i
  • nodo a monte del circuito virtuale (o collegamento entrante),
  • identificatore di canale logico lungo il collegamento entrante (o numero di canale logico in ingresso),
  • nodo a valle del circuito virtuale (o collegamento uscente),
  • identificatore di canale logico lungo il collegamento uscente (o numero di canale logico in uscita). Il generico pacchetto ricevuto nel nodo su un collegamento entrante con un dato numero di canale logico viene inoltrato sul collegamento uscente con il nuovo numero di canale logico, cosi come specificato dalla tabella di inoltro. Nelle singole tabelle alcune posizioni possono essere vuote poiché le connessioni virtuali cui facevano riferimento sono state rilasciate e quelle posizioni nono sono state ancora riempite. Solo i pacchetti di segnalazione che sono utilizzati per attuare l'instaurazione della connessione recano gli indirizzi completi di rete dell'host sorgente e dell'host di destinazione. I pacchetti dati infatti, grazie al meccanismo di numerazione dei canali logici , non hanno più la necessità di contenere gli indirizzi di rete degli host (e in particolare di quello di destinazione). Occorre ora giustificare l'operazione di aggiornamento dell'identificatore di canale logico attuata nodo per nodo. Ciò si rende necessario per evitare ambiguità che potrebbero sorgere se fosse mantenuto lungo tutta la connessione virtuale il numero di canale logico scelto dalla sorgente. La sostituzione del numero di canale logico entrante con un nuovo numero che sul ramo uscente sia al momento libero rende priva di ambiguità l'operazione di instradamento. L'assenza di ambiguità poteva essere ottenuta anche partizionando a priori l'insieme di tutti i possibili numeri di canale logico tra tutti gli host della rete. È tuttavia evidente che questa soluzione sarebbe molto meno efficiente, specialmente in presenza di moltissimi host, poiché richiederebbe di determinare a priori il numero massimo di connessioni virtuali che ogni host potrebbe chiedere. Commutazione cut-through Una diversa modalità di commutazione nel servizio circuito virtuale prende il nome di cut- through ( CT ). Questa consiste nel ridurre l'elaborazione del pacchetto al solo header, cosa che consente di attuare la funzione di inoltro mediante lettura della corrispondente tabella ; così l'inizio della trasmissione in uscita non richiede di attendere la ricezione dell'intero pacchetto. Indicando con fi e fo, la capacità dei collegamenti in ingresso e in uscita dal nodo generico, la modalità di commutazione cut-through richiede che fo<= fi Infatti, se ciò non fosse vero, la trasmissione sul lato uscente non potrebbe essere continua per una stessa unità informativa. Tipicamente le due frequenze sono uguali. I tempi di trasferimento sono notevolmente ridotti ; nel caso limite nel quale il tempo di trasmissione dell'header sia trascurabile , il tempo di ritardo minimo end-to-end di un pacchetto si riduce alla somma del tempo di propagazione end-to-end e del tempo di trasmissione (questa volta conteggiato una volta sola). Naturalmente non è più possibile svolgere altre funzioni di controllo sull'unità informativa, come per esempio il controllo di errore, poiché queste richiedono l'elaborazione dell'intera unità. Confronto dei servizi In una rete a commutazione di circuito , la capacità di rete richiesta da una sorgente di tipo continuo viene assegnata in modo esclusivo per ogni chiamata , così che le varie componenti di ritardo di trasferimento in rete delle Ul sono praticamente costanti; non si rende infatti necessaria la memorizzazione delle UI nei nodi intermedi della rete. Ne consegue che una rete a commutazione di circuito gode della proprietà di trasparenza temporale , secondo cui il tempo di trasporto delle diverse unità informative nella rete è caratterizzato da una variabilità nulla, o comunque minima. Nel caso di commutazione di pacchetto , il trasferimento di Ul attraverso la rete non god e implicitamente di trasparenza temporale , poiché la presenza di buffer nei nodi attraversati rende il tempo di ritardo end-to-end variabile e non controllabile facilmente. Una rete

temporalmente trasparente richiede che i due apparecchi terminali siano dello stesso tipo , o comunque mutuamente compatibili, poiché la rete non effettua alcuna "trasformazione" delle UI trasportate. In una rete a commutazione di pacchetto questo vincolo di compatibilità fra terminali è ampiamente rilassato , poiché la funzione di memorizzazione delle UI nei nodi consente di modificare opportunamente i formati e le caratteristiche delle unità informative trasferite attraverso la rete. Inoltre, si osserva che, anche in assenza di errori di trasmissione, solo la commutazione di circuito garantisce che le Ul giungano tutte a destinazione , grazie al meccanismo dell'allocazione a ogni connessione di tutta la capacità richiesta (data dalla frequenza di picco della sorgente). Le Ul possono essere invece perdute in reti a commutazione di pacchetto quando si verifica la saturazione dei buffer destinati a immagazzinare le UI in attesa di trasmissione. Nella commutazione a pacchetto: il servizio circuito virtuale può essere fornito da una rete senza necessariamente adottare procedure automatiche di instaurazione e di rilascio basate sullo scambio in rete di messaggi di segnalazione. Si fa qui riferimento a quel servizio di rete , denominato circuito virtuale permanente , nel quale la fornitura del servizio richiede l'intervento dell'operatore. Tra le operazioni che questi svolgerà al momento dell'attivazione del circuito virtuale permanente, vi sarà l' aggiornamento manuale delle tabelle di inoltro di tutti i nodi attraversati dalla connessione virtuale in questione. Le voci così inserite nelle varie tabelle saranno quindi rimosse solo da un successivo intervento dell’operatore, che avverrà al momento in cui egli, manualmente, attuerà la terminazione del circuito virtuale permanente. Il caso tipico è quello in cui un circuito virtuale permanente viene reso disponibile sulla base di un contratto tra utente e gestore di rete. La differenza sostanziale tra reti datagramma e reti a circuito virtuale (permanente o no) risiede nella preventiva fase di segnalazione per l'instaurazione del circuito virtuale di queste ultime. Ciò consente di accettare solo le richieste di connessione che possono essere fornite con adeguata qualità di servizio , commisurata alle risorse di rete disponibili al momento della richiesta. Inoltre, permette di semplificare la procedura di inoltro dei pacchetti (nella sola fase dati) per mezzo del meccanismo di numerazione dei canali logici (che garantisce implicitamente il controllo di sequenza). Ne consegue, come già osservato, che gli indirizzi completi di sorgente e di destinazione sono necessari sempre nel caso DG , solo nei pacchetti di segnalazione nel caso VC. Infine, si osserva che il guasto di un nodo può implicare la perdita non recuperabile di pacchetti con servizi DG , senza che i destinatari se ne accorgano; nel caso VC viene invece attuato automaticamente il reset di tutti i circuiti virtuali instaurati attraverso il nodo, così che gli host alle estremità di queste connessioni virtuali possono attuare eventuali procedure di recupero. Esempio: Confronto di due modalità di multiplazione dei dati: Packet Switching (PS) e Circuit Switching (CS). Hai N sorgenti ON-OFF che vogliono accedere a un server D. Ogni sorgente:

  • Trasmette alla velocità di picco P = 50 kbit/s.
  • Ha una probabilità B di essere attiva (burstiness): due valori considerati sono B = 0. e B = 0.01.
  • Il canale d’uscita (multiplexer) ha una capacità C, variabile nei diversi casi. Ci sono due approcci di multiplazione:
  • CS (Circuit Switching): ogni sorgente ottiene una fetta fissa della banda (multiplexing deterministico).
  • PS (Packet Switching): le sorgenti condividono dinamicamente la banda (multiplexing statistico). Obiettivo dell’esempio

Questa slide mostra come varia il ritardo medio di un pacchetto nel buffer in funzione del traffico offerto, cioè di quanto la rete è carica. Asse X (orizzontale): Offered traffic A_ Questo rappresenta il traffico offerto al link rispetto alla sua capacità. È chiamato coefficiente di utilizzazione del link , indicato anche come: rho= traffico offerto/ capacità del link= lambda/mu Valori tipici vanno da 0 (nessun traffico) a 1 (canale completamente utilizzato). Rappresentato sull’asse y c’è Tn il ritardo medio che un pacchetto subisce nel buffer , normalizzato, quindi in unità relative (es. rispetto al tempo di servizio). È in scala logaritmica. Andamento del grafico

  • Per basso traffico offerto (valori piccoli di A_0), il ritardo medio è basso : i pacchetti entrano ed escono velocemente, senza accodarsi.
  • Quando il traffico aumenta (verso A_0 = 1), il ritardo cresce rapidamente , in modo non lineare.
  • Appena il traffico si avvicina alla capacità del link (cioè A_0 \to 1), il ritardo esplode : il buffer si riempie, i pacchetti devono aspettare sempre più a lungo. Questo comportamento è classico nella teoria delle code , in particolare nel modello M/M/1, che descrive un sistema con :
  • un solo server (il link) ,
  • arrivi casuali (Poisson) ,
  • tempi di servizio esponenziali. Quando il traffico è basso, il ritardo nel buffer è trascurabile. Quando il traffico raggiunge la capacità massima del link, il ritardo tende all’infinito , cioè il sistema si satura. Anche se un link non è sovraccarico in media, basta avvicinarsi troppo alla sua capacità per causare ritardi enormi.Nelle reti a commutazione di pacchetto si cerca sempre di tenere il carico medio ben al di sotto del 100%, per evitare congestione e perdita di pacchetti. Aspetti protocollari nella modalità di commutazione Al fine di identificare i protocolli coinvolti nelle diverse modalità di commutazione, vogliamo distinguere gli strati di utilizzazione, che risiedono nella parte superiore della pila, dagli strati di trasferimento, che occupano invece la parte inferiore della pila stessa. Gli strati di utilizzazione comprendono funzionalità esclusivamente relative alla generazione e alla strutturazione delle unità informative per il loro trasferimento con una data comunicazione che viene attraversata. Le funzioni definite negli strati di utilizzazione sono dunque svolte solo nei sistemi terminali , non nei dispositivi di rete, sulla base dei protocolli di utilizzazione. Gli strati e i

protocolli di utilizzazione nel nostro modello a strati sono quelli relativi allo strato di applicazione e a quello di trasporto. Gli strati di trasferimento definiscono le modalità di trasferimento delle informazioni di utente attraverso una rete di comunicazione. Quindi le funzioni relative agli strati di trasferimento saranno localizzate sia nei sistemi terminali, sia negli apparati di rete. I protocolli di trasferimento definiscono l'interazione tra apparecchiature di rete e tra queste e i sistemi terminali. Gli strati e i protocolli di trasferimento nel modello a strati sono quelli relativi allo strato di rete , allo strato di collegamento e allo strato fisico. Esempio: Si considera dunque l'interazione tra due sistemi terminali A e B attraverso due generici nodi di rete Re S. Mentre il primo nodo svolge tutte le funzioni protocollari fino allo strato di rete, nel secondo nodo le funzioni di rete sono limitate al livello 2, in quanto il protocollo di rete è assente. Il trasferimento di stringhe binarie coinvolge naturalmente tutte le apparecchiature allo strato fisico. A livello 2 le unità informative , cioè le trame, vengono scambiate tra apparecchiature adiacenti e quindi tra ogni sistema terminale e il corrispondente nodo di rete , nonché tra i due nodi di rete. Le funzioni che vengono svolte sono quelle relative al controllo di integrità delle trame e al controllo di flusso , che regola il riempimento delle memorie di ricezione per evitare la perdita di UI. A livello 3 la principale funzione svolta nei nodi di rete è quella di instradare le unità informative , cioè i pacchetti, verso la loro destinazione. Quindi nell'esempio è il solo nodo R che svolge questa funzione, con la conseguenza che solo questo nodo interagisce con i due sistemi terminali A e B. Con il sistema A il trasferimento è diretto, mentre con il sistema B i pacchetti attraversano trasparentemente il nodo S utilizzando diverse trame nelle due tratte R-S e S-B. Le apparecchiature di rete che svolgono le funzioni dei nodi R e S sono denominate rispettivamente " router " e " bridge ". Nel caso di commutazione di circuito facciamo riferimento alla sola fase di trasferimento dati , omettendo di descrivere la fase di instaurazione della connessione. La funzionalità di ogni nodo di rete in questo caso è implicitamente limitata al solo livello fisico , poiché la rete mette a disposizione tutta la capacità richiesta dalla connessione. Non si rende quindi necessaria la generazione e l'elaborazione di unità informative di livello di collegamento e di rete e ciò corrisponde all'assenza di ogni tipo di protocollo di collegamento e di rete. Quindi i due nodi di rete ritrasmettono semplicemente le stringhe binarie ricevute. Architettura Protocollare e Nodi di Rete Una rete è fatta da due tipi di nodi: i nodi periferici che sono quelli che ospitano le applicazioni e implementano tutti i livelli dell’architettura da livello fisico sempre presente in qualunque elemento di rete fino a livello applicativo perché ospitano le applicazioni e poi ci sono i nodi intermedi della rete, quelli il cui scopo è fare appunto multiplazione e commutazione. I nodi intermedi non sono né sorgenti né destinazioni dei dati, ma un tramite per realizzare una rete con risorse condivise. Essi nascono esattamente con lo scopo di fare multiplazione e commutazione. La domanda cruciale è: "Che hardware e software dovremmo sviluppare per costruire questi nodi?". La risposta è tutto ciò che serve dal livello fisico fino al livello che consente di assolvere il loro scopo: multiplazione e commutazione. Esistono due modi fondamentali di trasferimento delle informazioni:

  • Modo a pacchetto: utilizzato oggi in internet fin dalla sua nascita.
  • Modo a circuito : utilizzato nella rete telefonica per molti decenni ed è tuttora utilizzato in alcune infrastrutture di reti di trasporto.

Una PDU è sempre fatta da una parte dedicata a funzioni di controllo e un’altra parte (opzionale) dedicata al payload (dati dal livello superiore). L’entità di livello n dialoga con l’entità pari usando le PDU del suo protocollo per offrire un servizio al livello superiore. Il livello superiore passa i dati, che vengono caricati nel payload della PDU del livello n, insieme alle informazioni di controllo. Nel caso del pacchetto (PDU del livello di rete), l’informazione di controllo si trova all’inizio ed è chiamata intestazione ( header ), seguita dal campo informativo ( payload ). Le unità dati sono sequenze di bit. Il software le interpreta scandendo i bit secondo le regole del protocollo. Ad esempio, il software del livello di rete sa che i primi 20 byte di un pacchetto IP versione 4 sono l’intestazione. Esempio: Immaginate di ricevere una sequenza di bit. Il software del livello di rete è programmato per leggere i primi byte come l’indirizzo di destinazione. Utilizzando questo indirizzo e la sua tabella di routing, decide a quale uscita inviare il pacchetto. Nodi Intermedi: i Router Nei modi di trasferimento a pacchetto, i nodi intermedi spesso vengono chiamati router. Il termine tecnico corretto è switching nodes (nodi di commutazione). In internet, si usa il termine router, che enfatizza la funzione di instradamento ( routing ). Il simbolo convenzionale per un router è un disco con due segmenti incrociati. Le linee dritte tra i router rappresentano collegamenti a livello di rete , indicando che i pacchetti IP possono essere inviati direttamente tra i router connessi senza passare per altri router intermedi. Un collegamento a livello di rete non implica necessariamente un collegamento fisico diretto. A livelli inferiori (collegamento e fisico) potrebbero esserci altri dispositivi come access point, switch Ethernet, amplificator i, o cross-connect ottici, che però non sono visibili al livello di rete. La capacità di un collegamento dipende da ciò che è presente a livello di collegamento e fisico. Multiplexing Dinamico e Condivisione della Capacità La capacità di un collegamento viene condivisa da flussi di pacchetti provenienti da diverse sorgenti e diretti a diverse destinazioni. La condivisione avviene con una multiplicazione dinamica a divisione di tempo con asse del tempo non diviso. I pacchetti possono avere lunghezza variabile e non sono costretti a stare dentro uno slot o una trama. La delimitazione dei pacchett i è demandata al livello di collegamento. L’informazione di controllo nel pacchetto (a livello di rete) non contiene delimitatori espliciti. Per permettere al demultiplatore di separare i pacchetti appartenenti a diversi flussi, nell’intestazione deve essere presente un’informazione che identifichi il flusso. Un router (nodo di commutazione) ha più ingressi e uscite (porte bidirezionali). I pacchetti entrano da ogni ingresso, vengono analizzati e smistati verso l’uscita appropriata in base alla loro destinazione. I pacchetti provenienti da diversi ingressi e diretti alla stessa uscita vengono serializzati e trasmessi uno alla volta, mischiati tra loro. Questo è possibile perché l’intestazione indica a quale flusso appartengono. Congestione Il ritmo di ingresso dei pacchetti a un router e diretti a una specifica uscita varia nel tempo. La capacità di uscita di un ramo è determinata (e.g., 125 pacchetti al secondo per una capacità di 1. Mbps e pacchetti da 1200 byte). Se il ritmo di ingresso supera temporaneamente la capacità di uscita, i pacchetti si accumulano. Quando il ritmo di ingresso dei dati supera la capacità del

ramo, si verifica la congestione. La congestione è legata alla limitatezza delle risorse, dove la domanda eccede la disponibilità temporaneamente. La multiplazione statistica implica che la congestione non può essere garantita come mai esistente. Le reti gestiscono la congestione accorgendosi che c’è e reagendo per rimuoverla o contenerla attraverso un sistema distribuito di controllo a feedback. Commutazione: Store and Forward e Routing La commutazione avviene secondo il principio immagazzinamento e rilancio (store and forward). I router ricevono i pacchetti completamente, li memorizzano, leggono l’intestazione per determinare la destinazione e quindi li inoltrano. Se ci sono più percorsi possibili verso una destinazione, il router deve decidere quale utilizzare per ogni pacchetto. Un router al suo interno (visto a livello di rete) ha n ingressi e n uscite, rappresentando n porte bidirezionali. A livello fisico e di collegamento , le diverse porte (fibra, Wi-Fi, Ethernet) sono diverse , ma a livello di rete funzionano allo stesso modo. All’ingresso, i pacchetti vengono appoggiati in un buffer di ingresso (coda d’ingresso). Un packet processor (hardware o software) esamina l’intestazione del pacchetto. La decisione di inoltro si basa sull’indirizzo di destinazione presente nell’intestazione e su una tabella di routing. La switch fabric è una struttura hardware che sposta il pacchetto dalla coda d’ingresso alla coda di uscita ( output queue ) corrispondente. All’uscita, se la linea è libera, il pacchetto viene trasmesso subito. Altrimenti, si mette in coda e aspetta il suo turno (solitamente con politica primo arrivato, primo servito - FCFS/ FIFO ). Le code di uscita hanno una dimensione finita. Se una coda di uscita è piena ( buffer overflow ), i nuovi pacchetti che arrivano per quell’uscita vengono scartati ( dropped ). La perdita di pacchetti per buffer overflow è conseguenza di una congestione perdurante sulla specifica uscita. I buffer non risolvono la congestione, ma ne ritardano le conseguenze. Routing e Tabelle di Instradamento I router si parlano continuamente scambiandosi informazioni per creare e mantenere aggiornate le tabelle di routing. Una tabella di routing elementare contiene una colonna con le destinazioni e una colonna con il prossimo router (next hop) per raggiungere quella destinazione. La tabella di routing in un router risponde alla domanda: "Quale uscita uso per questo pacchetto?". Le tabelle sono popolate e aggiornate da un processo di instradamento che al suo cuore ha un algoritmo di instradamento (routing algorithm). Un algoritmo di instradamento risolve un problema di ottimizzazione su un grafo (trovare il cammino a costo minimo). Esempi sono l’algoritmo di Dijkstra e l’algoritmo di Bellman-Ford. I router eseguono un protocollo di instradamento basato su un certo algoritmo per creare e aggiornare le tabelle. Le tabelle devono essere aggiornate perché il costo dei rami o la topologia della rete possono cambiare nel tempo (analogia con il navigatore veicolare e il traffico). Se un router riceve un pacchetto con una destinazione non presente nella sua tabella , i router su internet di solito lo buttano. I core router hanno tabelle molto grandi e "ritengono di sapere tutto". I router periferici (e.g., domestici) potrebbero non avere tabelle complete e usano una rotta predefinita ( default route ) per inoltrare i pacchetti verso router più centrali che hanno maggiori informazioni. Esercizio: Considera un pacchetto con indirizzo di destinazione X che arriva a un router R1. La tabella di routing di R1 ha una riga che associa la rete contenente X all’interfaccia di uscita 2 e al next hop R2. Cosa farà R1 con questo pacchetto? Risposta: R1 inoltrerà il pacchetto all’interfaccia di uscita 2, indirizzandolo al router R2, che è il prossimo hop verso la destinazione X. Ritardo Complessivo in un Salto (Hop)

dell’intestazione è solitamente fissata dal protocollo, mentre la lunghezza del payload può essere decisa. L’obiettivo è trovare la lunghezza ottima del payload (L) per massimizzare la portata netta o minimizzare il tempo di trasferimento di una certa quantità di dati. Considerando un file di 1 MB da trasferire attraverso K rami:

  • Se L tende a zero (payload molto piccolo), si inviano molti più byte di intestazione che di payload, sprecando capacità e aumentando il tempo di trasferimento. Esempio: intestazione di 20 byte e payload di 1 byte. Per 1 MB di dati, si trasmettono 21 MB.
  • Se L tende all’infinito (un unico pacchetto enorme), si perde l’effetto pipeline. I collegamenti vengono utilizzati in sequenza anziché in parallelo, rendendo inefficiente l’uso della capacità totale della rete.
  • Esiste una lunghezza ottima del payload che bilancia lo sfruttamento in parallelo della capacità ( pipelining ) con l’ammortizzazione del costo dell’intestazione. I pacchetti sono stati inventati proprio per sfruttare la capacità di una sequenza di rami attraverso il pipelining, cosa che non sarebbe possibile trasferendo un file come un blocco unico. Trasferimento a Pacchetto con e senza Connessione Con Connessione (Connection-Oriented): Richiede una fase di apertura della connessione (setup) in cui le parti negoziano parametri e potenzialmente riservano risorse. Segue la fase di trasferimento dei dati. Infine, c’è una fase di chiusura della connessione (teardown) per rilasciare le risorse. Tutti i pacchetti appartenenti alla stessa connessione seguono lo stesso percorso stabilito durante la fase di setup. È possibile assegnare un identificativo (nickname) alla connessione, che viene incluso nelle intestazioni dei pacchetti, richiedendo potenzialmente meno bit rispetto a un indirizzo di destinazione completo. Senza Connessione (Connectionless): Non prevede fasi di setup o teardown. Ogni pacchetto viene inoltrato indipendentemente dagli altri, in base all’indirizzo di destinazione presente nella sua intestazione. I pacchetti della stessa comunicazione potrebbero seguire percorsi diversi. Ogni pacchetto deve contenere l’indirizzo completo del destinatario per poter essere correttamente instradato tra tutti i possibili nodi della rete. Esempio: Immaginate di spedire diverse lettere. In modalità "con connessione" (come una raccomandata con ricevuta di ritorno), prima comunicate all’ufficio postale il percorso e ottenete una sorta di "numero di tracciamento" (identificativo di connessione). Tutte le vostre lettere seguiranno quel percorso. In modalità "senza connessione" (posta ordinaria), scrivete l’indirizzo su ogni lettera e l’ufficio postale decide il percorso migliore per ognuna indipendentemente. Le lettere potrebbero arrivare in ordine diverso. Applicazioni e servizi La descrizione dei meccanismi di funzionamento di un'applicazione con riferimento all' architettura a strati richiede la conoscenza dei servizi resi disponibili dallo strato di trasporto sottostante. Architetture di applicazione

Le applicazioni residenti nei sistemi terminali, che vengono rese disponibili tramite esecuzione di processi applicativi, si scambiano informazioni mediante messaggi. I protocolli applicativi definiscono le regole e le modalità secondo cui i messaggi vengono scambiati. Queste regole includono la definizione dei formati dei messaggi e le modalità di interpretazione delle informazioni ivi contenute. Il trasferimento di messaggi tra applicazioni remote richiede l'impiego di risorse di comunicazione in quantità e caratteristiche che dipendono dalla distanza tra sistemi terminali e dai requisiti di trasferimento richiesti dalle applicazioni stesse, come per esempio il tempo di ritardo, il throughput, l'integrità delle informazioni trasportate, ecc. Tradizionalmente l'interazione tra due applicazioni avviene secondo il paradigma client-server (C-S) , secondo cui uno dei due processi svolge solo la funzione di server e fornisce servizi all'altro processo, che svolge solo la funzione di client. Un processo client genera quindi richieste indirizzate al processo server , che le interpreta e fornisce risposte ; richieste e risposte sono definite nel protocollo applicativo che regola l'interazione tra client e server. Affinché ciò possa avvenire, da una parte il processo server deve essere inizializzato e rimanere sempre attivo in attesa di richieste da parte dei client; questa procedura prende il nome di passive open. Dall'altra parte, il processo client che desideri ricevere un servizio viene attivato emettendo una richiesta indirizzata al server; questa procedura prende il nome di active open. Naturalmente, la richiesta emessa dal client deve specificare tramite un "indirizzo" dove si trova il processo server. Il paradigma client-server manifesta tuttavia un importante limite , detto di " scalabilità ", nel momento in cui il numero di client cresce a dismisura e il server deve far fronte alle richieste di tutti i client. Una soluzione naturale a questo problema consiste nel replicare i server in modo che ognuno di questi possa far fronte a un numero limitato di richieste, così da rendere possibile la fornitura del servizio richiesto a tutti i client. Un approccio alternativo alla soluzione del problema della scalabilità nel paradigma client-server risiede nel prevedere che tutti i processi coinvolti nell'interazione , chiamati peer , svolgano lo stesso ruolo che può essere alternativamente , o contemporaneamente , di client oppure di server. Con questo nuovo approccio, denominato paradigma peer-to-peer (P2P), la funzione di fornitore di servizio viene distribuita tra tutti i processi , così che il problema della scalabilità viene implicitamente risolto. Naturalmente occorre coordinare la funzione di server svolta dai singoli peer, affinché la distribuzione delle richieste e delle risposte utilizzi in modo ottimale le risorse di elaborazione e di comunicazione disponibili. Esempio: di interazione tra applicazioni secondo il paradigma client-server è rappresentato nella prima figura, dove sono mostrate tre reti locali (LAN) che connettono host, una delle quali dispone di due server. Si osserva come il server S 1 interagisce con client nella rete LAN 1, mentre il server S 2 è in comunicazione con client delle reti LAN 2 e LAN 3. Nel caso del paradigma peer-to-peer, mostrato nell’ figura a destra, gli stessi host sono mutuamente connessi, senza avere necessità di interagire con server. Servizi di trasporto Le applicazioni, o processi applicativi, che rispondono ai principi delle architetture client-server o peer-to-peer, ricevono un servizio di trasferimento delle informazioni dal livello di trasporto sottostante attraverso uno specifico protocollo , le cui caratteristiche variano a seconda delle

  • controllo del flusso tra le due stazioni terminali, regolato da una procedura di autorizzazione a trasmettere da parte della stazione ricevente a quella trasmittente che previene fenomeni di perdita di informazione per saturazione del buffer in ricezione;
  • controllo della congestione della rete, attuato mediate procedure di regolazione del flusso immesso in rete, che dipendono dalla qualità del servizio di trasferimento rilevato;
  • controllo degli errori sulle unità informative trasportate. Occorre osservare che tutto ciò non è comunque sufficiente a garantire un determinato grado di servizio sui tempi di trasferimento delle informazioni, dato che nella commutazione di pacchetto fornita dal servizio di rete sottostante non è possibile garantire con certezza la disponibilità continua della capacità richiesta dalle stazioni terminali. Protocollo UDP Il servizio di trasporto reso disponibile dal protocollo UDP viene fornito in modalità connectionless , consentendo quindi il trasferimento di informazioni tra due socket senza alcuna preventiva instaurazione di connessione tra le relative stazioni terminali. Ne consegue che il servizio reso ai processi applicativi non può fornire le stesse garanzie di prestazioni del protocollo TCP. Il trasferimento di informazioni avviene sulla base di unità informative che non prevedono alcun tipo di numerazione. Non è quindi possibile garantire un trasferimento affidabile dell'informazione, non essendo disponibili meccanismi di rilevazione della perdita di unità informative. Inoltre, l' assenza di una fase preliminare di negoziazione tra le stazioni terminali rende impossibile attuare procedure di controllo di flusso e di congestione. Viene comunque resa disponibile la funzionalità di controllo degli errori del segmento informativo trasportato. Altri protocolli I requisiti di alcune delle più recenti applicazioni che sono state sviluppate e si sono diffuse nella rete difficilmente possono essere soddisfatti da questi due protocolli. Basti pensare alle applicazioni che forniscono servizi in tempo reale, come per esempio lo streaming live multimediale. In casi come questi, l'applicazione richiede la disponibilità di una capacità minima a supporto del servizio , la garanzia di un tempo di ritardo particolarmente piccolo e la capacità di sincronizzazione alla ricezione dei flussi audio e video che compongono il flusso informativo complessivo. Nessuno dei due protocolli TCP e UDP è stato definito per tenere conto di questi vincoli; quindi, devono essere disponibili altri protocolli di trasporto che siano in grado di soddisfare queste esigenze. Tra gli altri protocolli di trasporto standard citiamo SIP e RTP. Il protocollo session initiation protocol (SIP) svolge funzioni di segnalazione per instaurare e rilasciare connessioni attraverso Internet per il supporto di servizi in tempo reale , come quelli di tipo audio o video. I messaggi del protocollo SIP sono tipicamente trasferiti attraverso la rete incapsulati in segmenti UDP. Per le applicazioni multimediali , il protocollo real time protocol (RTP) realizza la multiplazione dei diversi flussi che compongono il segnale complessivo , per esempio audio e video, provvedendo alla loro riproduzione sincronizzata a destinazione. Il protocollo TCP viene utilizzato per tutte le applicazioni dove non si richiede un tempo di risposta molto stringente , il protocollo UDP viene preferito per i servizi in tempo reale. Le applicazioni a livello applicativo richiedono servizi al livello inferiore, che è il livello di trasporto. I due protocolli fondamentali del livello di trasporto sono TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). TCP offre un servizio con connessione e affidabile: garantisce che i dati arrivino tutti, in ordine, senza duplicati e corretti. Effettua controllo di flusso per evitare il sovraccarico del destinatario e controllo di congestione per evitare il sovraccarico della rete. Tuttavia, non garantisce ritardi

costanti né un throughput minimo e non si occupa di sicurezza (per quella serve TLS). TCP gestisce anche i numeri di porta (multiplexing e demultiplexing). UDP è un protocollo senza connessione e non affidabile (best effort). Non garantisce l’arrivo dei dati, l’ordine, l’assenza di duplicati o la correzione degli errori. Non effettua controllo di flusso né di congestione e non garantisce ritardi o throughput minimo. Fa solo gestione dei numeri di porta (multiplexing e demultiplexing) e un minimo controllo di errore con scarto dei pacchetti errati. TCP è utile per applicazioni che richiedono trasferimento affidabile (molte applicazioni). Implementare l’affidabilità a livello di trasporto permette agli sviluppatori di applicazioni di non doverlo fare per ogni singola applicazione. Allo stesso modo, il controllo di congestione e di flusso, essendo problemi comuni a molte applicazioni, vengono implementati una volta sola in TCP. UDP è utile per applicazioni che non necessitano di affidabilità o che vogliono implementare meccanismi ad hoc (es. applicazioni streaming che possono gestire la perdita di pacchetti tramite la codifica). UDP permette di evitare il sovraccarico e la rigidità di TCP per applicazioni semplici come DNS (una singola richiesta e una singola risposta). Viene poi introdotto il protocollo DNS (Domain Name System) come esempio di protocollo applicativo utilizzato dalle macchine per tradurre nomi di dominio in indirizzi IP e viceversa. Nomi di dominio - DNS La procedura di indirizzamento in Internet , che rappresenta la chiave principale per realizzare la connettività planetaria della rete, si basa su indirizzi numerici , definiti dal protocollo IP. Per questo motivo è stato definito un meccanismo di identificazione alfabetico dei sistemi terminali (host/server), che va sotto il nome di domain name system (DNS). Esso definisce una struttura gerarchica di nomi di più facile gestione per l'uomo, in quanto fanno spesso riferimento alla finalità e alla localizzazione dei sistemi terminali. Esempio : gli host all'interno di una università avranno dei nomi, tutti diversi, ma con un identificativo dell'università e/o del dipartimento per cui forniscono servizio. Il servizio più importante svolto dal DNS è la cosiddetta risoluzione dei nomi , che consiste nell' associare un'identificazione numerica (indirizzo IP) a un nome di dominio. Oltre a questo, il DNS fornisce anche i servizi di: (i) host aliasing che definisce l'associazione tra il vero nome di un host (nome canonico) e i suoi nomi alternativi ("alias"), spesso di più facile memorizzazione per l'uomo; (ii) ripartizione del carico , che distribuisce le richieste di associazione nome-indirizzo tra numerosi server, con lo stesso nome ma diversi indirizzi IP, che possono essere dislocati in diverse zone geografiche. Questa seconda funzione risulta particolarmente importante, al di là del conseguire l'obiettivo di richiedere a ogni server un carico di lavoro compatibile con le sue potenzialità di elaborazione. Infatti, la distribuzione della stessa funzione su più server riduce notevolmente il rischio di indisponibilità del servizio DNS a causa di guasti nella rete. Gerarchia dei nomi La struttura degli indirizzi definiti dal DNS è strettamente gerarchica e si rappresenta come una struttura ad albero di nodi , a ognuno dei quali è associata un' etichetta. Al livello più alto della gerarchia si trova la radice dell'albero, denominata root , cui non è associata alcuna etichetta. Il primo livello dell'albero al di sotto della radice comprende nodi indicati come top level domain ( TLD ), in quanto ognuno di questi identifica un dominio di primo livello in Internet.