

















































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
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
1 / 57
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


















































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:
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:
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:
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
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:
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:
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
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.