Scarica Fondamenti delle Reti Informatiche: Protocolli, Trasmissione e Sicurezza - Prof. Tessera e più Schemi e mappe concettuali in PDF di Reti informatiche solo su Docsity!
SISTEMI e RETI INFORMATICI
Daniele Tessera
- La codifica delle informazioni Indice argomenti
- 1.1 la codifica dei numeri (interi)
- 1.2 la codifica dei testi
- 1.3 la codifica delle immagini
- 1.4 la codifica dei suoni
- 1.5 la codifica dei video...............................................................................................................................................
- Tecniche di compressione
- 2.1 compressione senza perdita
- 2.2 comperssione con perdita
- 2.3 codec
- 2.4 caratteristiche generali dei contenuti digitali
- Architettura della rete
- 3.1 tassonomia delle reti di comunicazione
- 3.2 commutazione di circuito
- 3.3 commutazione di pacchetto
- 3.4 tipi di ritardo introdotti dai router
- 3.5 confronto tra la commutazione a circuito e quella a pacchetto............................................................................
- Architettura delle reti: i protocolli di rete
- 4.1 internet
- 4.2 architettura stratificata di internet
- 4.3 l’incapsulamento..................................................................................................................................................
- Protocolli di collegamento (link)
- 5.1 lo strato di collegamento......................................................................................................................................
- 5.2 rete cablate – ethernet
- 5.3 wifi.......................................................................................................................................................................
- 5.4 integrazione reti ethernet e wifi
- I protocolli dello stato di rete
- 6.1 indirizzi ip
- 6.2 la configurazione della rete..................................................................................................................................
- Lo strato di trasporto
- Sistema di nomi a dominio
- 8.1 come associare gli indirizzi ip a nomi simboli
- 8.2 gerarchia dns
- 8.3 l’aliasing, il load balancing e gli altri usi del dns
- 8.4 top level domain italiano (.it)
- Il livello di applicazione
- 9.1 i servizi
- 9.2 world wide web
- 9.3 protocollo http......................................................................................................................................................
- 9.4 messaggi http
- 9.5 html
- 9.6 xml
- La sicurezza delle comunicazioni
- 10.1 cos’è la sicurezza di rete?
- 10.2 la terminologia della rete
- 10.3 autenticazione
- 10.4 la firma digitale....................................................................................................................................................
- 10.5 alcuni scenari
- 10.6 conclusioni
- Applicazioni multimediali
- 11.1 scenari di applicazione.........................................................................................................................................
- 11.2 streaming stored...................................................................................................................................................
- 11.3 voice over ip
1.2 LA CODIFICA DEI TESTI
La prima idea sviluppata è stata quella di codificare le singole lettere dell’alfabeto e poi descrivere i testi come insiemi di lettere. In realtà per codificare le lettere minuscole e maiuscole, i numeri da 1 a 9 e la punteggiatura bastano solo 7 bit, ma se ne usano 8 per convenzione. Inizialmente se ne usavano 8 perché i calcolatori avevano dei tassi di errore molto alti, attualmente i sistemi sono estremamente affidabili. Quindi l’idea è quella di usare sequenze di bit per codificare le lettere. Se (parlando in generale) io prendo una cella, essa contiene un numero o una lettera? Non possiamo saperlo a priori perché dovremmo contestualizzarla in relazione al tipo di informazione. Ogni azienda di calcolatori aveva quindi il proprio sistema di codifica. Successivamente, però, è nata la codifica ASCII (American standard Code for Information interchange) → è stata una dei primi standard adottati dai costruttori di calcolatori che ha permesso lo scambio di informazioni tra i calcolatori di marche diverse. Tuttavia, il limite di questo metodo è quello di non poter essere utilizzato per codificare i testi scritto con lingue non basate sull’alfabeto^1 → questa è una codifica che andava bene agli albori quando i primi calcolatori eran sviluppati solo dagli occidentali, ma quando agli inizi degli anni ’90 è nato il web, l’informatica è esplosa ed è diventata fruibile per tutti e non solo per gli ambienti militari/accademici. Perciò la codifica ASCII diventa un problema in quanto alcune lingue non hanno un alfabeto basate sulle lettere, ma ci son simboli che esprimono parole intere (cinese, arabo, giapponese). Nasce quindi la codifica UNICODE che è un’estensione in cui se la lingua è rappresentabile tramite alfabeto, la codifica rimane uguale a quella ASCII, invece, se è una lingua non basata sull’alfabeto ci sarà una sequenza di bit diversa per ogni parola. → Sono codifiche a lunghezza variabile e possiamo ritrovarlo nelle informazioni dei documenti codificati (es. Standard UFT-8 è quello ASCII), quindi utilizzando solo 1 e 0 possiamo codificare numeri e testi. 1.3 LA CODIFICA DELLE IMMAGINI Esistono vari sistemi, tra cui il BITMAP in cui prendo la mia immagine e la considero come un rettangolo composto da tanti puntini (pixel) → tanti più pixel ho, tanto più la mia immagine sarà ricca di dettagli e questa è la codifica che usiamo normalmente. Uno dei parametri di merito dell’immagine si chiama risoluzione → ci dà il numero di pixel di cui è composta questa immagine.
- Per le immagini in bianco e nero possiamo pensare di utilizzare un bit per descrivere ciascun pixel, ad esempio, 0 - bianco e 1-nero, più qualche metadato che sono informazioni aggiuntive perché in un’immagine non ci sono solo pixel (come la risoluzione o quale colore ho associato allo 0 e quale all’1). Il fax, ad esempio, usa una codifica basata sul bianco e il nero.
- Per le immagini con toni di grigio dobbiamo iniziare ad utilizzare più bit per un singolo pixel. Ad esempio, se utilizziamo il byte per descrivere ciascun pixel, possiamo codificare 255 livelli di grigio. Quanti livelli ci servono? L’occhio umano è in grado di riconoscere al più 10.000 toni di grigio e quindi se usiamo 2 byte possiamo codificare immagini di toni di grigio con una qualità superiore rispetto alla nostra vista. Per codificare un’immagine in toni di grigio posso associare 1 o 2 byte al pixel, ma se uso 1 byte avrò un numero di pixel che equivale al numero di byte che mi serve per me memorizzare l’immagine. Se uso 2 byte mi servirà il doppio, il che vuol dire che per aver un’immagine con più toni devo esser disposto a pagar di più in termini di occupazione di memoria.
- Per le immagini a colori si può utilizzare la codifica additiva , ovvero quella RGB (red, green, blu), dove mescolando opportunamente i tre colori si può ricavare qualsiasi altro colore. Con il modello additivo, posso utilizzare un byte per il rosso, uno per il verde ed uno per il blu ed avere così 3 byte per ogni pixel in modo da descrivere 2^24 (= circa 16 milioni) di colori, che poi è la codifica ROW, quella prodotta dalle macchine fotografiche professionali, ma per ragioni (^1) https://it.wikipedia.org/wiki/ASCII per veder la tabella.
di efficienza e facilità di memorizzazione non si usa mai perché particolarmente pesanti (raggiungendo i 30 Mbyte per ogni foto). Ce ne sono però altre come la YUV (Y luminanza, U e V crominanze blu e rossa) utilizzata, ad esempio, nella codifica dei segnali televisivi analogici. Infine, ci sono le codifiche per stampe a sintesi sottrattiva , ovvero la CMYK (ciano, magenta, giallo e nero) in quanto se si usasse il modello RGB non si potrebbe raggiungere in fase di stampa il colore nero perfetto. Quindi utilizzano 1 e 0 siamo in grado di codificare le immagini → la codifica del tipo BITMAP ha un problema: la risoluzione non è facilmente modificabile. Se voglio ridurre la risoluzione delle immagini devo sostituire, ad esempio, a 4 pixel la loro media riuscendo ad ottenere un risultato non del tutto orrendo, mentre se le ingrandiamo perdiamo totalmente la qualità e non posso farci niente perché non esistono fisicamente le informazioni ≠ se invece volessi delle immagini da poter ingrandire e ridurre in qualsiasi momento senza perdere nulla in risoluzione, allora devo far riferimento alle immagini vettoriali le quali rappresentano solo figure geometriche, smettendo quindi di utilizzare la matrice di pixel perché, ad esempio, una circonferenza posso ingrandirla quanto voglio. Di norma le immagini vettoriali occupano anche poco spazio perché codificano proprietà intrinseche di quell’immagine e non il singolo pixel. Ovviamente con le immagini vettoriali, che sono poi alla base del CAD, posso realizzare figure estremamente complicate che però risultano essere assemblaggi di figure geometriche. Il limite sta però nella possibilità di rappresentare solo figure geometriche, in immagini vettoriali non potrò mai realizzare la foto di un tramonto. 1.4 LA CODIFICA DEI SUONI Prima di capire come si codifica dobbiamo chiederci cos’è un suono? Dal punto di vista fisico è un’alterazione/perturbazione della pressione dell’aria (rispetto alla pressione atmosferica che viene usata come riferimento) che, quando rilevata dall’orecchio umano, viene trasformata in un particolare stimolo elettrico e, tramite processi cognitivi, interpretata. La durata, l’intensità e la frequenza della variazione nel tempo della pressione dell’aria sono le quantità fisiche che rendono un suono diverso da ogni altro. La digitalizzazione dei suoni è la rappresentazione in formato digitale (0 e 1) dell’informazione. Il problema di codificare un suono sta innanzitutto nel fatto che l’informazione è per sua natura continua, mentre la codifica lo trasforma in una rappresentazione discreta, è quindi facile perdersi delle “sfumature”. In secondo luogo, il suono cambia nel tempo quindi dovrò prendere delle istantanee in vari archi temporali per poi sperare di ricostruirla. I principi quindi che vengono utilizzati sono:
- Campionamento (andamento temporale) → quante volte nel tempo andrò a fotografare l’onda sonora: quanto più frequentemente il valore di intensità dell’onda viene campionato, tanto più precisa sarà la sua rappresentazione.
- Quantizzazione (intensità istantanea, quanto bene lo catturo) → è il passaggio di trasformare la foto in un numero.
- Codifica (rappresentazione dei campioni) pulse code modulation → codifico ogni impulso audio. Parecchio dispendiosa come codifica quindi non si usa molto, tendenzialmente si usa quella mp3. Quanto devo campionare per aver una qualità audio ineccepibile? L’orecchio umano si ferma intorno ai 20/22Hz, quindi per codificare le frequenze ho bisogno di farne il doppio, quindi 44Hz, e posso usare 16 bit per campione per avere 60.000.000 livelli d’audio (che il nostro orecchio comunque non percepisce). Per codificare bene dovrei codificare in stereo uno con canale sx e uno dx perché noi percepiamo la spazialità dell’audio. Una codifica del genere equivale circa ad 1.400.000bit/s. → valori usati soprattutto per la codifica dei CD. La codifica MIDI (musical instrument digital interface) si usa quando devo codificare la musica, non il parlato, e quindi posso codificare direttamente lo spartito, segnando anche lo strumento musicale in modo da riprodurre quel determinato suono.
Un’altra codifica è basata sul dizionario in cui il termine dizionario indica un insieme di blocchi sui quali è costruito il messaggio da compiere e il messaggio stesso è codificato come una sequenza di riferimenti al dizionario. Ad esempio, un’intera parola può essere codificata come singolo riferimento al dizionario piuttosto che come una sequenza di singoli caratteri codificati con un sistema – lo svantaggio è che dovrei applicare la codifica anche di parole che nel testo non ci sono e quindi crea pian piano un proprio dizionario – infatti se in media usciamo 2.500 parole con 16 bit le posso codificare tutte (1 parola → 16 bit). Se codifico lettera per lettera devo usare 8 bit per ciascuna lettera. Le codifiche che si usano concretamente sono quelle adattive basate sul dizionario, quindi, anziché usare un dizionario predefinito mi costruisco un dizionario ad hoc. Ad esempio, la coscia LZW è quella alla base dello zip. L’idea è partire da un dizionario che contiene tutti gli elementi base del messaggio (in un testo i singoli caratteri) e man mano che incontro blocchi più grandi nel messaggio, questi vengono aggiunti al dizionario. Esempio testo da codificare: xyx xyx xyx xyx → il dizionario inizialmente vuoto inizio a riempirlo. Simbolo Codifica x 1 y 2 “” (indica lo spazio)
xyx 4 → quindi il testo codificato sarà 1 2 1 3 4 3 4 3 4 Ho costruito il dizionario in modo adattivo con solo i simboli effettivamente utilizzati. Si passa su un testo originale di 1 5 simboli ad un testo compresso di 9 simboli. Se si scrive un testo in word questo non è possibile codificarlo con questa scrittura, mentre con il blocknotes si. Nella compressione dei contenuti multimediali si usa la codifica delta, quindi, anziché codificare il campionamento codifico la differenza rispetto al valore precedente. Limitare un suono implica il limitare la velocità con cui può cambiare. Le tecniche loseless non funzionano bene con i contenuti multimediali, perché non ci sono simboli ripetuti – probabilità invece molto alta con un testo – quindi se io applico queste tecniche, ad esempio, sulle immagini perdo forse l’1% e quindi non è un guadagno significativo. L’unica tecnica senza perdita che si può usare è la codifica delta, da un po’ di vantaggi, ma non risparmiamo tantissimo. 2.2 COMPERSSIONE CON PERDITA Con la compressione con perdita, non è possibile ricostruire esattamente l’informazione originale: si ottiene una versione leggermente degradata , ma accettabile in base all’uso. La parte positiva è che possiamo scegliere quanto comprimere, e quindi quanto degradare i dati. Le tecniche usate sono specifiche per il tipo di contenuto (immagini, audio, video).
- Compressione delle immagini GIF (Graphics Interchange Format) :
- Riduce il numero di colori utilizzati in tutta l’immagine (usa una palette di colori limitata).
- Ogni pixel non viene più codificato con i valori RGB, ma con un indice della palette.
- I pixel simili vengono rappresentati con lo stesso colore, quindi si perdono le sfumature.
- Anziché usare 3 byte per pixel (RGB), se ne usa solo uno.
- È possibile assegnare un colore trasparente alla palette.
- Funziona bene per immagini semplici, come loghi o icone. JPEG (Joint Photographic Experts Group) :
- È lo standard più usato per le fotografie, poiché GIF non è adatto a immagini dettagliate.
- Offre diversi metodi di compressione, anche senza perdita, ma quelli con perdita sono più efficienti.
- Permette di regolare il compromesso tra compressione e qualità.
- Sfrutta il fatto che l’occhio umano è più sensibile alla luminosità che al colore. Come funziona :
- L’immagine viene convertita da RGB a un formato basato su luminanza e crominanza (come CMYK nella stampa).
- Questo non comporta perdita, è solo un modo diverso di rappresentare il colore.
- La crominanza viene mediata su blocchi di 2x2 pixel (perdita minima di dettaglio).
- L’immagine viene suddivisa in blocchi di 8x8 pixel, e compressa con tecniche come la trasformata discreta del coseno (DCT).
- I blocchi vengono poi ulteriormente compressi con metodi come: o Run-length encoding (compressione di sequenze ripetute) o Compressione relativa o Codifica a lunghezza variabile Controllo della qualità:
- Compressione 100 = qualità massima, 5 = compressione elevata ma qualità molto bassa.
- Nella fotografia professionale, si usa spesso una compressione al 75% per mantenere una buona qualità.
- Con JPEG si può ridurre la dimensione del file fino a 10 volte , mantenendo comunque una qualità visiva elevata.
- I file JPEG possono contenere metadati EXIF , come esposizione, tempo di scatto, coordinate GPS, data, ecc.
- Compressione dei contenuti audio
- Alcuni standard sono proprietari e usano crittografia (es. nei contenuti in abbonamento).
- I principali standard audio/video sono sviluppati dal MPEG (Motion Picture Experts Group).
- Audio e video sono contenuti dinamici (cambiano nel tempo), perciò è importante anche il bit-rate , ovvero la quantità di dati trasmessa al secondo (es. bit/secondo). Codifica audio :
- Il formato più usato è MP3 (livello 3 del MPEG).
- Si basa su limiti dell’udito umano , eliminando suoni che non percepiamo. Tecniche principali :
- Mascheramento temporale : dopo un suono forte, l’orecchio per un attimo non sente i suoni deboli. Quindi quei suoni possono essere compressi di più.
- Mascheramento di frequenza : un suono a una certa frequenza può coprire altri suoni più deboli vicini di frequenza, che quindi si possono rappresentare con meno precisione.
- Altre tecniche, come la compressione delta , non vengono approfondite nel corso. Esempio – Audio non compresso (CD audio) :
- 16 bit (2 byte) per ogni campionamento
2.4 CARATTERISTICHE GENERALI DEI CONTENUTI DIGITALI
Vantaggi del digitale :
- Possibilità di scegliere tra qualità e dimensione dei dati → si può trovare un equilibrio tra qualità del contenuto (ad esempio video/audio) e spazio occupato o velocità di trasmissione.
- Facilità di condivisione e trasmissione → prima del digitale, per condividere un audio servivano mezzi come la radio. Oggi, grazie ai contenuti digitali, basta un PC o uno smartphone per inviarlo o riceverlo ovunque.
- Gestione degli errori durante la memorizzazione o la trasmissione → i supporti analogici (come le cassette) si degradavano col tempo, e non era possibile recuperare i dati. Con il digitale, invece, possiamo rilevare e correggere gli errori. Errori nei contenuti digitali → un errore digitale tipico è quando un bit viene letto in modo sbagliato (es. salvo un “1” ma leggo uno “0”, o viceversa). Per gestire questi casi esistono tecniche di rilevazione e correzione degli errori. Tecniche di rilevazione degli errori :
- Bit di parità o Aggiungo 1 bit in più ogni 8 bit di dati → in totale 9 bit. o Questo bit extra non serve per l'informazione, ma per verificare se c’è stato un errore. o Esempio: posso impostare la regola che il numero totale di “1” nei 9 bit deve essere pari → se non è pari, c’è stato un errore durante la trasmissione.
- Parità doppia o Si usano più bit di controllo , ad esempio organizzando i dati in una matrice (righe e colonne). o In questo modo si può individuare la posizione esatta del bit errato, e quindi correggerlo invertendolo. → Tuttavia, la parità doppia ha un costo: per correggere un solo errore ogni 8 byte, servono 16 bit extra (cioè un aumento del 25% della dimensione dei dati ). Se ci fossero più errori contemporanei , il sistema potrebbe non accorgersi degli errori o addirittura considerarli corretti per errore. Tecniche di correzione degli errori :
- Esistono molte tecniche avanzate per correggere errori, anche basate sulla causa dell’errore. Ad esempio, in caso di raffiche di errori (più errori consecutivi), vengono usati sistemi specifici per correggerli in blocco.
- I codici di correzione degli errori sono fondamentali per rendere utilizzabili dispositivi o reti poco affidabili , che altrimenti genererebbero troppi errori per essere usati in modo efficace.
3. ARCHITETTURA DELLA RETE
In questo ciclo di lezioni, verrà fornita una panoramica sull’architettura della rete Internet, trattando i seguenti argomenti:
- Funzionamento delle reti a commutazione di pacchetto e il ruolo dei protocolli: Si spiegherà come le reti gestiscono i dati suddividendoli in pacchetti e come i protocolli garantiscono il corretto scambio di informazioni.
- Tecniche di trasmissione per le reti locali : Verranno esplorate le modalità di trasmissione dei dati in reti cablate, Wi- Fi e ADSL.
- Routing dei pacchetti e il protocollo TCP : Si approfondirà come i pacchetti vengono indirizzati attraverso la rete e come il protocollo TCP garantisce una comunicazione affidabile.
- Reti private e domestiche : Si discuterà della configurazione delle reti utilizzate in ambienti domestici o aziendali.
- Ruolo dei server dei nomi a dominio e il protocollo HTTP : Verrà esaminato il funzionamento dei server DNS (Domain Name System) e del protocollo HTTP per la navigazione sul web.
- Sicurezza delle comunicazioni : Si tratteranno le tecniche per proteggere i dati in transito sulla rete
- Trasmissione di contenuti multimediali in streaming : Verranno forniti cenni sulle tecniche utilizzate per la distribuzione di video e audio in tempo reale. 3.1 TASSONOMIA DELLE RETI DI COMUNICAZIONE La commutazione è il processo che descrive come i nodi di una rete di telecomunicazione gestiscono e instradano i dati. I nodi possono essere terminali (dispositivi finali) o componenti interni della rete (come router e switch). Quando un utente desidera avviare una comunicazione, invia una richiesta alla rete. La rete individua un percorso formato da una sequenza di circuiti elettrici per trasmettere i dati e notifica la ricezione al destinatario. Esistono due principali tipologie di reti di comunicazione:
- Reti a commutazione di circuito : Utilizzate principalmente nelle comunicazioni telefoniche, dove viene stabilito un percorso fisso per tutta la durata della comunicazione.
- Reti a commutazione di pacchetto : Utilizzate per la trasmissione dei dati, dove le informazioni sono suddivise in pacchetti che viaggiano separatamente sulla rete e vengono ricostruiti al loro arrivo. 3.2 COMMUTAZIONE DI CIRCUITO Definizione : Nella commutazione di circuito, le risorse della rete vengono allocate esclusivamente per la durata della comunicazione tra il terminale di origine e quello di destinazione. Questo significa che il percorso scelto per la comunicazione rimane dedicato esclusivamente a quella chiamata fino al suo termine. Durante questo periodo, anche se la comunicazione non è attiva, le risorse sono ancora occupate. Funzionamento : Quando un utente vuole avviare una chiamata, si collega al punto di presenza (tipicamente un centralino), che registra la richiesta di comunicazione. Il sistema identifica la destinazione, seleziona un percorso e riserva le risorse necessarie per la connessione. Una volta stabilita la connessione, i commutatori informano gli altri nodi della rete che la linea è attiva per la trasmissione dei dati, come nel caso di una telefonata. Vantaggi :
- Una volta che il canale è stato stabilito, le prestazioni non dipendono dal numero di utenti che stanno utilizzando la rete in quel momento. Questo è possibile perché gli altri utenti vengono informati che il canale è occupato.
- La tariffazione è semplice, in quanto basata sul tempo di utilizzo del canale.
- Si possono utilizzare tecniche come la modulazione a divisione di frequenze e la modulazione a tempo per far passare più canali sullo stesso filo, separandoli per frequenze diverse. Svantaggi :
- L'efficienza non è elevata, poiché le risorse rimangono allocate anche quando non si sta trasmettendo nulla.
- La complessità del sistema è elevata, poiché ogni commutatore deve coordinarsi con gli altri. In caso di guasto di un commutatore, non è possibile usare canali alternativi senza dover riconfigurare tutta la rete, il che è molto complesso e difficile da gestire in una comunicazione globale.
- Ritardo di Coda/Attesa e Perdita di Pacchetti Descrizione : Quando il router è sopraffatto dal numero di pacchetti in ingresso, si crea una coda. Se i pacchetti non riescono a essere gestiti in tempo, il router li scarta (perdendoli). La perdita di pacchetti avviene senza che il router informi i mittenti A e B. Il motivo è che la progettazione di base di questi router è pensata per essere il più semplice possibile. Esempio : Se A e B continuano a inviare pacchetti senza mai fermarsi, e se il router non ha più spazio per immagazzinarli, i pacchetti vengono persi. Questo avviene perché il router non è progettato per gestire situazioni di traffico troppo elevato: una volta che il buffer è pieno, i pacchetti in eccesso vengono scartati.
- Ritardo di Trasmissione e Propagazione Ritardo di Trasmissione : Si riferisce al tempo che impiega un pacchetto a essere trasmesso sulla rete, in base alla velocità di trasmissione della connessione. Ad esempio, se una rete ha una velocità di 100 Mb/s, ogni secondo vengono trasmessi 100 milioni di bit. Ritardo di Propagazione : È il tempo che i bit impiegano a viaggiare fisicamente dal punto di origine a quello di destinazione. Questo dipende dalla distanza tra i due nodi e dalla velocità con cui i segnali elettromagnetici viaggiano (tipicamente alla velocità della luce).
- Esempio : In una connessione in rame, i bit viaggiano a 200.000 km/s. Quindi, se due nodi sono separati da 10 km, i bit impiegheranno 50 microsecondi per coprire questa distanza. Se la velocità di rete è 1 Gb/s, per trasmettere 1000 byte, si impiegheranno 8 microsecondi. Ritardo Totale : Il ritardo complessivo di un pacchetto è dato dalla somma di questi vari tipi di ritardi:
- Ritardo di elaborazione : Il tempo che il router impiega per decidere dove inviare il pacchetto (di solito molto ridotto).
- Tempo di coda : Quanto tempo un pacchetto rimane in attesa di essere trasmesso (dipende dalle congestioni della rete).
- Ritardo di trasmissione : Il tempo che impiega a "scrivere" i bit sui mezzi fisici.
- Ritardo di propagazione : Il tempo che i bit impiegano a percorrere la distanza tra i router. COMPORTAMENTO DEI RITARDI IN RELAZIONE AL CARICO DI TRAFFICO Quando si analizzano i ritardi introdotti dai router, possiamo generalizzare il comportamento in funzione del traffico che il router deve gestire. Supponiamo che i pacchetti arrivino con un tasso medio di a/s (tasso di arrivo), che ogni pacchetto abbia L bit , e che la velocità della rete sia R b/s (tasso di uscita). Grafico del Ritardo vs. Intensità del Traffico
- Ascissa (orizzontale): Rapporto tra il traffico in ingresso e la capacità di trasmissione del router, indicato come La/R (dove L è la dimensione del pacchetto in bit e a è il tasso di arrivo).
- Ordinata (verticale): Ritardo del sistema.
- La/R ~ 0 : In questo caso, il traffico in ingresso è molto inferiore alla capacità di trasmissione della rete, quindi i ritardi sono minimi, e la rete gestisce tutto senza problemi.
- La/R ~ 1 : Quando il traffico si avvicina alla capacità di trasmissione della rete, i ritardi iniziano ad aumentare, perché il router deve gestire un numero crescente di pacchetti in coda.
- La/R > 1 : Se il traffico supera la capacità di trasmissione, il router non riesce più a tenere il passo e inizia a scartare i pacchetti. Le code crescono all'infinito e i pacchetti vengono persi. In questo scenario, il sistema diventa insostenibile. Questo grafico ci mostra che lavorare al massimo della capacità della rete (La/R ~ 1) non è ideale, poiché i ritardi aumentano drasticamente. Pertanto, non si cerca mai di sfruttare al 100% la capacità di una rete per evitare congestioni e perdite di pacchetti.
In sintesi, tutti questi ritardi (store and forward, coda, trasmissione e propagazione) sono influenzati dalla quantità di traffico in rete e dalla capacità di ciascun componente della rete (router e collegamenti). Un buon design della rete cerca di mantenere i ritardi sotto controllo, evitando la saturazione completa della capacità disponibile. 3.5 CONFRONTO TRA LA COMMUTAZIONE A CIRCUITO E QUELLA A PACCHETTO I problemi descritti riguardano solo la commutazione a pacchetto, mentre nella commutazione a circuito non si verificano questi effetti negativi. Questo perché, nella commutazione a circuito, viene dedicato un percorso fisico esclusivo tra i due punti di comunicazione, e quindi il ritardo è solo quello dovuto alla propagazione del segnale lungo questo percorso, ovvero la distanza tra i due router. Ma allora perché utilizziamo la commutazione a pacchetto nonostante i ritardi? I motivi sono molteplici:
- La rete basata sulla commutazione a pacchetto è più semplice da realizzare.
- La rete può resistere meglio a guasti o attacchi.
- È più efficiente. Esempio pratico: Immagina un collegamento di rete da 1 Mb/s, e supponiamo che ogni utente necessiti di 100 Kb/s quando è attivo. Inoltre, consideriamo che l'utente sia attivo solo per il 10% del tempo, ad esempio quando naviga sul web, apre una pagina, la legge e poi passa alla successiva. In altre parole, il 90% del tempo l'utente non sta trasmettendo dati.
- Commutazione a circuito : Se uso un collegamento a circuito, posso gestire solo 10 utenti contemporaneamente, perché devo riservare l'intero collegamento anche quando l'utente non è attivo, solo per garantire il collegamento durante tutto il tempo di connessione, anche quando non sta trasmettendo.
- Commutazione a pacchetto : In uno scenario con 35 utenti, ciascuno ha solo il 10% di probabilità di essere attivo in un dato momento. Statistiche alla mano, la probabilità che 10 o più utenti siano contemporaneamente attivi è inferiore allo 0,04%. Questo significa che, con la commutazione a pacchetto, posso gestire tranquillamente 35 utenti con lo stesso collegamento, perché è molto improbabile che siano tutti attivi nello stesso momento. In sostanza, con la commutazione a pacchetto, riesco a sfruttare meglio i collegamenti, offrendo il servizio a più utenti e riducendo le spese di gestione. Di conseguenza, posso offrire il servizio a un prezzo più competitivo. Questo è il motivo per cui la commutazione a pacchetto è il metodo preferito nella trasmissione di rete.
4. ARCHITETTURA DELLE RETI: I PROTOCOLLI DI RETE
4.1 INTERNET
Internet è una rete globale basata sulla commutazione di pacchetti. Si tratta di una rete composta da miliardi di dispositivi connessi, chiamati host , che possono essere server, dispositivi mobili, computer portatili, e così via. Ogni host esegue delle applicazioni di rete, che permettono di interagire con altri dispositivi nella rete. La rete stessa è formata da link di comunicazione , che possono essere cablati o wireless, e che utilizzano diverse tecnologie di trasmissione, come fibra ottica, cavi in rame, e onde radio satellitari. Ogni collegamento ha una velocità di trasmissione specifica. Di conseguenza, Internet è una rete estremamente eterogenea, costituita da componenti e dispositivi con caratteristiche diverse che lavorano insieme per far funzionare la comunicazione. Un ruolo fondamentale all'interno di questa rete è svolto dai router , che sono dispositivi di commutazione di pacchetti. I router permettono il corretto instradamento dei dati tra le diverse parti della rete.
4.2 ARCHITETTURA STRATIFICATA DI INTERNET
L’architettura di Internet si basa su un modello a 5 livelli. Ogni livello ha un ruolo specifico nella comunicazione tra i dispositivi e definisce i protocolli utilizzati in ciascuna fase del processo di trasmissione dei dati.
- Livello Applicazione → questo livello riguarda le applicazioni di rete. Definisce i protocolli che regolano le azioni da eseguire all’interno delle applicazioni. Per esempio, nel caso di un servizio web, il browser web e il server web devono essere in grado di scambiarsi messaggi. Esempi di protocolli applicativi includono: o SMTP (per l’invio di email) o IMAP e POP (per ricevere email) o HTTP (per la navigazione web)
- Livello Trasporto → il livello di trasporto gestisce il collegamento tra due programmi che girano su host diversi. Si occupa di garantire che i dati inviati da un programma su un host possano essere correttamente ricevuti da un altro programma su un altro host. I principali protocolli di trasporto sono: o TCP (Transmission Control Protocol), che assicura una comunicazione affidabile o UDP (User Datagram Protocol), che invece è più veloce, ma senza garanzie di affidabilità
- Livello di Rete → questo livello ha il compito di interconnettere gli end-systems (= i dispositivi finali, come computer e server). Si occupa dell’instradamento dei pacchetti di dati attraverso la rete, determinando il percorso più appropriato per raggiungere la destinazione. Alcuni dei protocolli più importanti in questo livello sono: o IP (Internet Protocol), che si occupa dell’indirizzamento e instradamento dei pacchetti o Protocolli di routing, che determinano il percorso migliore per i dati
- Livello di Collegamento → il livello di collegamento si occupa della trasmissione dei pacchetti tra due host che sono direttamente connessi nella stessa rete. Definisce le modalità con cui i dispositivi comunicano all’interno della stessa rete fisica. Alcuni esempi di protocolli di collegamento includono: o Ethernet (per reti locali cablate) o 802.11 (per reti Wi-Fi) o ADSL (per connessioni a Internet tramite linea telefonica) o 5G (per connessioni mobili)
- Livello Fisico → questo livello si occupa di come i dati vengano effettivamente trasmessi attraverso il collegamento fisico. Stabilisce la modalità di invio dei singoli bit attraverso il canale di comunicazione, determinando la velocità di trasmissione e il metodo di iniezione dei bit nella rete. La STRATIFICAZIONE è fondamentale perché permette di separare i vari compiti della comunicazione in livelli distinti, ognuno dei quali si concentra su una parte specifica del processo di trasmissione dei dati. Questo approccio offre numerosi vantaggi:
- Indipendenza delle applicazioni → le applicazioni non devono preoccuparsi delle tecnologie di rete sottostanti. Ad esempio, se si introduce una nuova tecnologia di rete, come il 5G, le applicazioni non necessitano di modifiche, poiché sono progettate per interagire con il livello di trasporto, non con i protocolli di collegamento. Esempio : se una rete Wi-Fi non funziona bene e viene successivamente introdotta una rete 5G, tutte le applicazioni in uso beneficeranno automaticamente del miglioramento della connessione 5G, senza che sia necessario modificare le applicazioni stesse. Basta modificare il livello di collegamento, poiché il livello di rete e il livello di trasporto rimangono invariati.
- Facilità di aggiornamento → quando si aggiunge una nuova tecnologia di rete (come un nuovo tipo di connessione), basta installare i driver necessari. In seguito, tutte le applicazioni che utilizzano i servizi di rete possono beneficiarne senza modifiche. Le applicazioni rimangono indipendenti dalla tecnologia di trasmissione, e il loro funzionamento non è influenzato dai cambiamenti nel livello fisico o di collegamento della rete. Questa pila protocollare (= la serie di livelli che definisce come funziona la comunicazione in rete) rende Internet estremamente flessibile e scalabile, poiché nuovi protocolli possono essere introdotti senza compromettere il funzionamento delle applicazioni esistenti. 4.3 L’INCAPSULAMENTO La stratificazione di Internet avviene tramite un meccanismo chiamato incapsulamento. Immagina che un’applicazione, come un browser web, voglia inviare un messaggio da un punto A a un punto B (ad esempio, quando visiti un sito web). Ecco cosa accade:
- L’applicazione invia il messaggio → quando il browser web crea il messaggio, questo viene passato al livello di trasporto (ad esempio, TCP o UDP).
- Strato di trasporto → prende il messaggio dall’applicazione e aggiunge alcune informazioni di controllo. Queste informazioni riguardano la gestione della connessione e la trasmissione dei dati (ad esempio, numero di sequenza per TCP).
- Strato di rete → successivamente, il messaggio, ora arricchito con le informazioni dello strato di trasporto, scende allo strato di rete. Qui vengono aggiunti ulteriori dati, come l’indirizzo IP di destinazione (e dell’origine) e altre informazioni necessarie per l’instradamento del pacchetto nella rete.
- Strato di collegamento → poi, il messaggio scende al livello di collegamento, dove vengono aggiunti i dati necessari per il trasferimento fisico, come gli indirizzi MAC (Media Access Control) e altre informazioni specifiche per la comunicazione tra dispositivi direttamente connessi.
- Invio del pacchetto → a questo punto, il messaggio (ora chiamato pacchetto) è pronto per essere inviato e viene trasferito al dispositivo di rete più vicino, come uno switch. Gli switch sono dispositivi che lavorano solo sui livelli fisico e di collegamento e si limitano a riprodurre il pacchetto in tutte le porte di uscita, senza modificarlo.
- Arrivo al router → quando il pacchetto arriva a un router, che è il vero e proprio dispositivo di commutazione (instradamento), questo analizza il pacchetto. In base alla destinazione del pacchetto, il router decide quale collegamento utilizzare per inoltrarlo (e modifica l’intestazione a seconda della tecnologia di trasmissione che sta utilizzando per il nuovo percorso). Nota importante : il router può connettere reti che usano tecnologie trasmissive diverse. Ad esempio, può ricevere dati tramite Wi-Fi e trasmetterli tramite ADSL (o altre tecnologie come 5G), gestendo protocolli di collegamento differenti.
- Arrivo al destinatario → quando il pacchetto arriva al dispositivo destinatario, il processo si inverte. Il dispositivo di destinazione esegue una decodifica del pacchetto, partendo dallo strato fisico e risalendo la pila protocollare, estraendo i dati man mano che ogni livello rimuove le informazioni aggiuntive che aveva inserito. → Il meccanismo di incapsulamento consente di aggiungere informazioni a ciascun livello della rete, in modo che ogni strato possa gestire una parte del processo di comunicazione senza influire sugli altri strati. Il pacchetto attraversa la rete, passando attraverso router e switch, che lo elaborano in base alla loro funzione. Solo il dispositivo di destinazione eseguirà l’intero processo di decodifica per recuperare il messaggio originale.
o TDMA (Time Division Multiple Access) → il canale viene suddiviso in intervalli di tempo. Ogni dispositivo trasmette nel proprio intervallo, evitando conflitti. Vantaggio: è equo perché ogni dispositivo ha un tempo prestabilito per trasmettere. Svantaggio: se un dispositivo non ha dati da inviare durante il proprio intervallo, il tempo viene sprecato. Inoltre, ogni dispositivo deve aspettare il proprio turno, causando ritardi. o FDMA (Frequency Division Multiple Access) → la larghezza di banda del canale viene suddivisa in frequenze specifiche per ogni dispositivo. Vantaggio: ogni dispositivo trasmette su una frequenza separata. Svantaggio: la capacità non utilizzata su una frequenza viene sprecata, simile al TDMA.
- A Turno → in questo caso, i dispositivi aspettano il loro turno per trasmettere, riducendo al minimo il rischio di collisioni. o Polling → un nodo centrale (master) interroga gli altri dispositivi per capire se vogliono trasmettere. Il vantaggio è che si riduce al minimo il tempo di attesa, ma se il nodo master fallisce, tutta la rete si blocca. o Token Ring → un “gettone” (token) circola tra i dispositivi. Solo il dispositivo che possiede il gettone può trasmettere. Una volta finita la trasmissione, il gettone viene passato al dispositivo successivo. Vantaggio: evita collisioni e garantisce che solo un dispositivo trasmetta alla volta. Svantaggio: se il gettone si perde, la rete non funziona correttamente, e se un nodo fallisce, l’intera rete può bloccarsi.
- Ad accesso casuale → in questo caso, i dispositivi possono trasmettere in qualsiasi momento, ma c’è il rischio di collisioni. Quando due dispositivi trasmettono contemporaneamente, i messaggi vanno persi. o Il protocollo deve gestire come rilevare le collisioni e come ritrasmettere i pacchetti danneggiati. Vantaggio: È più semplice ed efficiente, perché non c'è un coordinamento centrale. Svantaggio: Se ci sono molte collisioni, il tempo di attesa per trasmettere può aumentare. Tecnologie come Ethernet e Wi-Fi utilizzano protocolli di accesso casuale, che sono molto diffusi nonostante i problemi legati alle collisioni. I protocolli di collegamento sono essenziali per gestire la trasmissione dei dati tra dispositivi collegati fisicamente o via rete wireless. La loro funzione principale è quella di regolare come i dispositivi condividano un canale di comunicazione, per evitare conflitti e garantire un accesso equo ed efficiente. Esistono vari tipi di protocolli, come quelli a partizione del canale, a turno e ad accesso casuale, ognuno con i suoi vantaggi e svantaggi a seconda della situazione. 5.2 RETE CABLATE – ETHERNET Il protocollo utilizzato nelle reti Ethernet per gestire la trasmissione di dati è il CSMA (Carrier Sense Multiple Access) , che sta per “Accesso Multiplo con Rilevazione della Portante”. Questo protocollo è progettato per gestire la trasmissione di pacchetti quando più dispositivi (host) condividono lo stesso canale di comunicazione (la “portante”). Funzionamento del CSMA:
- Rilevazione della portante → ogni dispositivo ascolta il canale prima di trasmettere. Se il canale è libero, l’host inizia a trasmettere il pacchetto. Se il canale è occupato, l’host aspetta che si liberi.
- Ogni dispositivo ha una scheda di rete che consente sia la trasmissione che l’ascolto del canale. Durante la trasmissione, la scheda è in grado di rilevare se c’è stata una collisione , che si verifica quando due dispositivi trasmettono contemporaneamente.
Problema delle collisioni e del Cono Spazio-Tempo → le collisioni avvengono principalmente a causa dei ritardi di propagazione del segnale. Per comprendere meglio, immaginiamo una situazione con due host che condividono lo stesso canale:
- Al tempo t0 , il primo host rileva che il canale è libero e inizia a trasmettere.
- Al tempo t1 , un secondo host rileva il canale come libero e inizia anch’esso a trasmettere, poiché le onde elettromagnetiche del primo host non sono ancora arrivate al secondo. Questo fenomeno è chiamato cono spazio-tempo. Gli eventi rilevabili dal primo host (che inizia a trasmettere) e dal secondo host (che inizia a trasmettere più tardi) sono confinati all’interno di un cono immaginario. Quando le onde elettromagnetiche dei due dispositivi si sovrappongono, avviene una collisione. Perché non viene rilevata subito la collisione?
- La collisione avviene prima che i dispositivi possano rilevarla, poiché solo quando i segnali raggiungono gli altri dispositivi questi possono accorgersi che c’è stata una collisione.
- Anche se gli host interrompono la trasmissione dopo aver rilevato la collisione, le onde elettromagnetiche continuano a propagarsi per un certo intervallo di tempo. CSMA/CD: Carrier Sense Multiple Access with Collision Detection Il protocollo più utilizzato per gestire le collisioni nelle reti Ethernet è il CSMA/CD (Carrier Sense Multiple Access with Collision Detection). Questo protocollo è progettato per ridurre l’impatto delle collisioni e regolare l’accesso al canale. Funziona nella seguente modalità:
- Verifica del canale libero → prima di trasmettere, l’host verifica se il canale è libero.
- Ascolto durante la trasmissione → mentre trasmette, l’host continua ad ascoltare il canale per rilevare eventuali collisioni.
- Rilevamento della collisione → se l’host rileva che si è verificata una collisione (ad esempio, rilevando che il segnale che sta propagando non corrisponde al proprio), interrompe la trasmissione.
- Segnale di errore (jam signal) → dopo la collisione, l’host invia un segnale di errore a tutti gli altri dispositivi connessi per avvisarli della collisione.
- Ritardo casuale prima di riprovare → dopo una collisione, l’host genera un ritardo casuale prima di tentare di trasmettere nuovamente. Se ci sono più collisioni, il ritardo aumenta in modo progressivo per evitare ulteriori conflitti. Il ritardo casuale aumenta con il numero di collisioni per ridurre la probabilità che gli host riprovino nello stesso momento. GESTIONE DELLA COLLISIONE E PROBLEMA DEI PACCHETTI IN VOLO Una caratteristica importante di questo protocollo è che non è possibile avere pacchetti “in volo” quando avviene una collisione → questo significa che il primo host ha finito di trasmettere, ma i dati non sono ancora arrivati al destinatario. Se