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


Sistemi e reti informatiche, Appunti di Reti informatiche

Sistemi e reti informatiche - appunti

Tipologia: Appunti

2020/2021

Caricato il 10/12/2022

giorgiagrendene2231
giorgiagrendene2231 🇮🇹

4.3

(3)

7 documenti

1 / 91

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
SISTEMI E RETI INFORMATICI A.A. 2021/2022 PROF. DANIELE TESSERA [email protected]
ESAME = test scritto con risposte aperte, qualche giorno dopo la discussione orale + esercitazione Prof. Tosi
BIBLIOGRAFIA = per la parte di Informatica. Una panoramica generale, J. Glenn Brookshear, Dennis Brylow;
per la parte di Reti di calcolatori e internet. Un approccio top-down, James F. Kurose, Keith W. Ross, (traccia).
LEZIONE 1
MODULO 1 - LA CODIFICA DELLE INFORMAZIONI
I calcolatori elettronici elaborano informazioni estremamente elementari che possono avere solo due valori 0
o 1 (= presenza o assenza di una determinata carica elettrica)
Questa informazione elementare in informatica è chiamata bit (il minimo dell’informazione)
Un bit è una celletta di memoria che può contenere 0 oppure 1 (unità di base delle informazioni)
Un calcolatore è costituito da un microprocessore, detto anche CPU (Central Processing Unit), una memoria
(RAM) e dai dispositivi di ingresso/uscita (es. tastiera, video, touchscreen, mouse, disco rigido…)
Un calcolatore a 32 (o 64) bit vuol dire che la CPU interna è in grado di elaborare contemporaneamente 32 o
64 bit
I BYTE
Il bit è una rappresentazione troppo semplice e troppo piccola, solitamente per rappresentare informazioni e
si utilizzano multipli del byte
Un byte è un insieme di 8 bit e rappresenta la misura fondamentale dei sistemi informatici (in informatica si
usa il byte, esattamente come dal salumiere si usa l’etto e dal gioielliere i carati)
Una delle componenti dei calcolatori è la memoria che serve a preservare l’informazione che noi scriviamo:
noi immettiamo informazione e loro la tengono.
Esistono due tipi di memorie:
- la RAM = memoria principale veloce e volatile che ha bisogno che la circuiteria sia alimentata da corrente
- altre memorie permanenti = hard disk, SD ecc. che sono in grado di memorizzare e mantenere
l’informazione anche in assenza di alimentazione per tempi molto lunghi, decine e decine di anni
La memoria dei calcolatori, quindi può essere rappresentata da un punto di vista ideale come una sequenza
di celle di memoria di un byte con la particolare capacità di preservare le informazioni che immettiamo
LA MEMORIA
N rappresenta il numero di celle disponibili (è detto anche capacità della memoria)
Es. memoria di 8 Giga = quella memoria contiene 8 miliardi di celle disponibili. Celle = blocchi di 8 bit
Ogni cella contiene 8 bit e a ogni cella è associato un numero (indirizzo) che la identifica in modo univoco
UNITA’ DI MISURA DELLA MEMORIA
Dato che le memorie contengono moltissime celle (byte), si usano i seguenti suffissi:
K (Kilobyte) 1000 = mille byte à 103
M (Megabyte) 1000000 = un milione di byte à 106
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
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b

Anteprima parziale del testo

Scarica Sistemi e reti informatiche e più Appunti in PDF di Reti informatiche solo su Docsity!

SISTEMI E RETI INFORMATICI A.A. 2021/2022 PROF. DANIELE TESSERA [email protected] ESAME = test scritto con risposte aperte, qualche giorno dopo la discussione orale + esercitazione Prof. Tosi BIBLIOGRAFIA = per la parte di Informatica. Una panoramica generale, J. Glenn Brookshear, Dennis Brylow ; per la parte di Reti di calcolatori e internet. Un approccio top-down, James F. Kurose, Keith W. Ross , (traccia). LEZIONE 1 MODULO 1 - LA CODIFICA DELLE INFORMAZIONI I calcolatori elettronici elaborano informazioni estremamente elementari che possono avere solo due valori 0 o 1 (= presenza o assenza di una determinata carica elettrica) Questa informazione elementare in informatica è chiamata bit (il minimo dell’informazione) Un bit è una celletta di memoria che può contenere 0 oppure 1 (unità di base delle informazioni) Un calcolatore è costituito da un microprocessore, detto anche CPU (Central Processing Unit), una memoria (RAM) e dai dispositivi di ingresso/uscita (es. tastiera, video, touchscreen, mouse, disco rigido…) Un calcolatore a 32 (o 64) bit vuol dire che la CPU interna è in grado di elaborare contemporaneamente 32 o 64 bit I BYTE Il bit è una rappresentazione troppo semplice e troppo piccola, solitamente per rappresentare informazioni e si utilizzano multipli del byte Un byte è un insieme di 8 bit e rappresenta la misura fondamentale dei sistemi informatici (in informatica si usa il byte, esattamente come dal salumiere si usa l’etto e dal gioielliere i carati) Una delle componenti dei calcolatori è la memoria che serve a preservare l’informazione che noi scriviamo: noi immettiamo informazione e loro la tengono. Esistono due tipi di memorie:

  • la RAM = memoria principale veloce e volatile che ha bisogno che la circuiteria sia alimentata da corrente
  • altre memorie permanenti = hard disk, SD ecc. che sono in grado di memorizzare e mantenere l’informazione anche in assenza di alimentazione per tempi molto lunghi, decine e decine di anni La memoria dei calcolatori, quindi può essere rappresentata da un punto di vista ideale come una sequenza di celle di memoria di un byte con la particolare capacità di preservare le informazioni che immettiamo LA MEMORIA N rappresenta il numero di celle disponibili (è detto anche capacità della memoria) Es. memoria di 8 Giga = quella memoria contiene 8 miliardi di celle disponibili. Celle = blocchi di 8 bit Ogni cella contiene 8 bit e a ogni cella è associato un numero (indirizzo) che la identifica in modo univoco UNITA’ DI MISURA DELLA MEMORIA Dato che le memorie contengono moltissime celle (byte), si usano i seguenti suffissi: K (Kilobyte) 1000 = mille byte à 103 M (Megabyte) 1000000 = un milione di byte à 106

G (Gigabyte) 1000000000 = un miliardo di byte T (Terabyte) 1000000000000 = mille miliardi di byte Una memoria RAM di 8 gigabyte à contiene 8 000000000 celle (approssimato, in realtà sarebbe di più: circa 8590903459 2 poiché ai byte (bit da 0 e 1) sono associate le potenze del 2 quindi 8 giga sarebbero 8 x 2^30 ) La potenza di 2 più vicina al 1000 (K) è 2^10 che è 1024; la potenza di 2 più vicina al milione (M) è 2^20 che è 1024x1024; la potenza di 2 più vicina al miliardo (G) è 2^30 ecc. quindi 8 giga invece di essere 8000000000 è 8 x 1073741724 che è 85909034592, quindi un po’ di più Questo è il motivo per cui quando abbiamo una chiavetta venduta come da “8 giga” in realtà la possiamo riempire al massimo fino a 7 giga e mezzo à perché per motivi commerciali 8000000000 byte è il massimo ( giga e 5909 092 byte) ELABORAZIONE DELLE INFORMAZIONI L’elaborazione delle informazioni consiste nello spostare i dati da una posizione a un’altra (da una cella all’altra) e/o nell’eseguire operazioni (come calcoli aritmetici, elaborazione di testi e manipolazioni di immagini) e poi riscrivere nella cella il risultato aggiornato Per quanto l’elaborazione può essere complessa, tutto è riconducibile ad una sequenza (anche infinita) tra uni e zeri, nulla in più Componenti essenziali di un sistema:

  • CPU ( C entral P rocessing U nit) o processore che è la circuiteria che esegue le operazioni sui dati
  • (Memoria principale) RAM
  • Dispositivi di I nput/ O utput ARCHIETETTURA DI VON NEUMAN: che descrive come sono connessi tra di loro i dispositivi da un pov funzionale, non da un pov tecnologico. Ci sono:
  • 1 o più CPU (connesse col bus mediante connettori elettrici)
  • MEMORIA PRINCIPALE
  • BUS (connesso con il resto mediante un insieme di fili)
  • PERIFERICA 1 (monitor, tastiere, mouse, stampanti, hard disk)
  • PERIFERICA N° qualsiasi (rete ecc.) L’architettura di Von Neumann porta con sé un concetto importantissimo: quello di programma memorizzato à nella memoria principale non ci sono solo le sequenze di numeri da elaborare, ma si riescono a codificare anche le operazioni che la CPU deve fare sui dati (le operazioni che l’operatore deve fare sulle informazioni) Questo concetto rende una macchina un dispositivo estremamente versatile che sa fare di tutto, se caricato di opportuni programmi (o app) che lo specializzano a fare delle determinate mansioni, che magari quando era stata creata la macchina non erano ancora state inventate! Cellulari non smartphone VS smartphone con app scaricabili che lo rendono specializzabile e molto versatile I programmi hanno quindi le informazioni e le informazioni con le operazioni da fare, insieme integrate. QUINDI: una memoria è fatta da tante cellette, ogni celletta contiene 8 bit che fanno un byte e quindi ogni cella ha diverse combinazioni, tutte giocate tra 0 e 1 in 8 posizioni diverse, ma che possono essere solo 0 o 1.

Standard interoperabile = se tutti i costruttori di calcolatori usano questa tabella come riferimento, tutti i calcolatori possono codificare e decifrare i file di testo secondo uno stesso standard (chiave di codifica) ASCII è stata una dei primi standard, adottato dai costruttori di calcolatori che ha permesso lo scambio di informazioni tra calcolatori anche di marche diverse! Tra Apple e Windows a volte le visualizzazioni sono un po’ diverse perché non sono ben allineati gli standard Gli standard aperti sono standard di cui tutti conoscono le informazioni e quindi tutti possono averne accesso Gli standard chiusi sono standard le cui informazioni non vengono comunicate a nessuno es. Netflix and Co non sono interoperabili tra piattaforme, perché non viene reso pubblico come si codifica l’informazione Il problema di questa codifica è che non può essere utilizzata per codificare testi scritti con lingue non basate sull’alfabeto Questo sistema è andato bene per un po’ di tempo (dovendo codificare solo l’alfabeto latino) e poi ci si è resi conto che aveva un problema grande, non poteva codificare gli ideogrammi (arabo, russo, cinese) in cui con un solo carattere si rappresenta la parola stessa LA CODIFICA UNICODE Unicode è un sistema di codifica per le lingue non occidentali à a una sequenza di bit corrisponde una parola Si assegna quindi una sequenza di bit (non più per codificare una singola lettera, ma) per codificare una parola Un byte può codificare 255 parole in questo modo, ma sono un po’ poche à 2 byte à 16 bit = 65536 parole Es. l’italiano ha 50 mila parole e un italiano alfabetizzato ne usa circa 10 mila al giorno, quindi sono sufficienti La codifica UNICODE è quindi un sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzato. Utilizza più byte per codificare i testi à 24 bit = 16 milioni di parole e via così. Quindi abbiamo visto come è possibile codificare qualunque testo (numeri, parole, punti e ) usando solo 1 e 0 LA CODIFICA DELLE IMMAGINI Di solito ci troviamo di fronte ad un’immagine in JPEG che è un formato compresso con perdita, adesso noi stiamo trattando invece il formato raw, grezzo che è al principio del trattamento, usato di solito nell’ambito della fotografia professionale perché richiede molto spazio per memorizzarlo. Un approccio molto diffuso per codificare le immagini è di rappresentarle come un insieme di puntini colorati (pixel) organizzati in una matrice rettangolare, chiamata immagine basata su bitmap (o codifica raster). Per capire se un’immagine è rasterizzata, codificata su bitmap, basta ingrandirla à si vedono i quadratini (pixel) Per le immagini in bianco e nero (i vecchi FAX) possiamo pensare di utilizzare i bit per descrivere ciascun pixel (es. 0 = bianco, 1 = nero o viceversa) à posso attribuire un bit a ciascun pixel e il gioco è fatto Ci servono anche altre informazioni, ad esempio dobbiamo memorizzare il numero di righe e di colonne dei pixel es. fotocamera da 12 Megapixel = le immagini che scatta sono formate da 12 milioni di pixel, di puntini

Il numero totale di pixel che io uso per codificare un’immagine prende il nome di risoluzione = più pixel ci sono, più l’immagine è di qualità Queste informazioni (numero di righe, numero di pixel in ogni riga, numero totale) si chiamano metadati e sono essenziali per poter interpretare correttamente il contenuto fotografico, non sono legati ai singoli pixel LE IMMAGINI IN TONI DI GRIGIO Usando solo un bit per ogni pixel possiamo codificare solo il fatto che sia bianco oppure nero Se vogliamo codificare un’informazione più complessa come i livelli di grigio del pixel dobbiamo usare più bit Ad esempio, se utilizziamo un byte per descrivere ciascun pixel possiamo codificare max 255 livelli di grigio Quanti livelli ci servono? L’occhio umano è in grado di riconoscere più di 10 000 toni di grigio quindi se usiamo 2 byte possiamo codificare immagini in toni di grigio già con una qualità superiore a quella della nostra vista! Per codificare un’immagine in bianco e nero a 16 Megapixel mi servono 16 milioni di bit che sono 2 Megabyte (= 2 milioni x 8). Se la stessa immagine la codifico in toni di grigio e uso 2 byte per ogni sfumatura, allora mi servono il doppio di Megabyte (16 x 2 milioni) cioè 32 M byte, solo perché ho aggiunto la sfumatura di grigio E IL COLORE? Come faccio a codificare il colore di un pixel? Nella scuola di primo grado abbiamo imparato che si possono creare tutti i colori componendo solo tre colori (i primari) à da RAW GREZZO = i tre primari (tramite sintesi additiva = aggiungendo colore) a tutti i colori Mescolando opportunamente i colori primari RGB ( R ed, G reen and B lue) possiamo creare qualsiasi colore Codifica additiva = aggiungendo a diversi livelli i tre colori primari partendo dalla base RGB. Quindi potenzialmente posso descrivere tutti i descrivendo in termini di: quanto rosso, quanto verde e quanto blu Volendo ce ne sono altre es. YUV (Y = luminanza, Ue V = crominanze blu e rossa) Se utilizziamo 3 byte (uno per il rosso, uno per il verde e uno per il blu) possiamo descrivere 2^24 che sarebbe 28 x 2^8 x 2^8 (circa 16 milioni) di colori diversi. Dallo 0 al 255 ho 256 livelli per ciascuno dei colori primari 16 milioni di colori diversi sono tantissimi, nessun monitor è in grado di visualizzare così tanti colori diversi à la qualità dei contenuti ha un impatto anche sui requisiti di sistema che usiamo per fruire questi contenuti Questo metodo di codifica va benissimo per immagini generali, ma ha due problemi: 1) occupa un bel po’ di volume di byte che si vogliono utilizzare e 2) se io volessi aumentare le dimensioni dell’immagine, perderei qualità à vedi esempio in cui zommando si vedono tutti i quadratini dei pixel; ma anche a ridurre le dimensioni mi porta ad avere dei problemi, dovrei dimezzare i pixel o fare una media dei quattro pixel vicini IMMAGINI VETTORIALI La codifica di immagini vettoriali è stata creata per risolvere questi problemi di “sgranatura” I metodi visti in precedenza sono largamente utilizzati per la rappresentazione di immagini generali ma che hanno un problema di fondo: non è possibile allargare l’immagine (aumentare la risoluzione) senza perdite consistenti di qualità. In alcune applicazioni, come CAD (computer-aid design) questo limite non è accettabile L’idea è di rappresentare le forme geometriche in termini delle loro proprietà (cioè formate da altri elementi geometrici descrivibili) e non come un insieme di pixel es. posso rappresentare una circonferenza come coordinate del suo centro + la misura del raggio ecc. o un quadrato come lunghezza dei lati e luogo dei vertici

Qualunque segnale s(t) definito nell’intervallo temporale che va da 0 a T può essere rappresentato in termini di somme armoniche (una sommatoria approssimata unita ad un valore costante) La frequenza di campionamento fc si ricava con t/ΔT, mentre l’approssimazione del segnale si esprime con Sn Per avere tutte le frequenze dell’onda bisogna campionare al doppio della velocità Per ottenere la frequenza di campionamento bisogna raddoppiare x2 la frequenza dell’armonia superiore n/t LA CODIFICA AUDIO Campionamento = segmentazione in intervalli regolari dell’andamento temporale Quantizzazione = approssimazione dell’intensità istantanea dell’onda Codifica = rappresentazione dei campioni La codifica di base nel suono (equivalente del formato RAW delle immagini) si chiama PCM (Pulse Code Modulation) e fondamentalmente va a misurare ciascuno dei campioncini Quanto più frequentemente il valore di intensità dell’onda viene campionato, tanto più precisa sarà la sua rappresentazione. L’orecchio umano è in grado di percepire come frequenza massima quella di 20 000 Hz = 20 KHz (equivale ai 10/10 delle diottrie, ma per l’orecchio), di solito le persone possono percepire 16/17 KHz Lo standard che è stato inventato dalla Philips, che si è usato per i CD (compact disc) che contenevano la musica con qualità massima, invece di 20KHz avevano un margine di 2KHz à 22 KHz Per avere tutte le frequenze dell’onda fino a 22KHz bisogna campionare al doppio della velocità, quindi bisogna campionare a 44KHz = per ogni secondo di musica servono 44K misure (intervalli di campionamento) E si usano 16 bit = 65 536 possibili valori (livelli di intensità istantanea) e si superano già i limiti dell’orecchio Quindi per campionare la musica devo misurare per ogni secondo 44 000 misure e usare 16 bit per ciascuna di queste misure, ma dato che lo standard è stereofonico (dato che abbiamo due orecchie) si raddoppia x Codifica di 44KHz x 16 bit per campione à Codifica stereo (canali SX e DX) à ~ 1.400.000 bit/s di musica Quindi una canzone di 3 minuti occupa dai 50 ai 70 Mb, in un CD di 650 Mb ci stavano 10/11 brani in qualità assoluta à con la qualità appena superiore a quella che l’orecchio umano è in grado di distinguere Questo è solo uno dei modi di codifica dell’audio (musica), esistono delle tecniche che ci permettono di ridurre il numero di bit necessari per codificare queste informazioni se siamo disposti ad accettare un qualche degrado della qualità dell’informazione stessa LA CODIFICA MIDI Se invece bisogna codificare dell’audio che è solo strumentale è possibile codificare direttamente lo spartito Con un dispositivo informatico che è in grado di riprodurre tutte le note (di uno strumento musicale) e lo spartito si è in grado di descrivere perfettamente alla macchina come riprodurre quella musica Questa interfaccia sia chiama M usical I nstrument D igital I nterface = si codificano le note musicali e la loro rappresentazione con un determinato strumento musicale LA CODIFICA VIDEO Possiamo immaginare un contenuto video come una sequenza di immagini (fotogrammi) e una traccia audio

Facendo scorrere in sequenza le foto abbiamo l’idea di movimento à tantissime foto acquisite con una certa frequenza e velocità (un’immagine ha un tempo di permanenza sulla retina umana di circa 1 decimo di sec.) Già con una acquisizione di 30 fotogrammi al secondo il nostro occhio ha la percezione di un movimento assolutamente fluido à la luce delle lampade in realtà non è mai continua, è un filamento che pulsa alimentato da corrente alternata (che è un’onda e che quindi ha una frequenza à 50 Hz in EU/60Hz in USA) Se catturiamo un filmato a 25 Hz minimizziamo gli effetti di questa luce pulsante in funzione all’elettricità, motivo per cui noi vediamo l’immagine continua anche se la corrente è alternata e quindi intermittente Un filmato è concepito come una serie di immagini + audio, ma con il sistema descritto non è realizzabile Es. Full HD offre immagini (approssimando) di 2000 pixel per 1000 pixel = 2 milioni di pixel x 3 byte che mi servono per codificare il colore sono 6Mb che equivalgono a 48 Mbit (6x8) à tutto solo per 1 fotogramma e di fotogrammi bisogna acquisirne almeno 30 al secondo + l’audio (che in confronto è irrilevante) La velocità con cui dovrei poter scrivere o leggere questo flusso di bit che codifichi il video è così elevata che supera le capacità di qualunque dispositivo di memorizzazione a lungo termine es. Hard disc e quindi bisogna trovare delle soluzioni per ridurre il numero di bit che mi servono per codificare questa informazione In qualità digitale un video non è acquisibile senza degradazioni in quanto il flusso di informazioni è troppo elevato per poterlo fruire (servirebbero 7 gg per acquisirlo + 7 gg per ricaricarlo in un device da milioni di $) TECNICHE DI COMPRESSIONE Le tecniche di compressione sono importanti perché il modo con cui codifico un contenuto multimediale influisce profondamente sul modo con cui ne posso fruire es. Spotify free mette a disposizione musica in qualità scarsa utilizzando solo 128 kbit al secondo, mentre Spotify Premium la riproduce al doppio ( kbit/s) Per memorizzare o trasferire i dati è spesso utile (e talvolta obbligatorio es. video) ridurne le dimensioni pur cercando di preservare e mantenendo le informazioni. Le tecniche di compressione dei dati servono per ridurre il numero di byte necessari per codificare le informazioni (testi, immagini, audio e video ecc.). Esistono due categorie di tecniche di compressione:

  • senza perdita (loseless) à il file si può rigenerare esattamente come l’originale dopo averlo compresso
  • con perdita (lossy) à l’operazione di compressione è irreversibile, una volta avuto il contenuto compresso non si riuscirà mai più ad avere il contenuto originale da cui si è partiti. Il risultato è di dimensioni ridotte, ma ha una qualità minore. Il degrado della qualità dell’informazione compressa e poi decompressa consiste in una approssimazione dell’originale, che è comunque molto simile a quella di partenza (quindi non mi interessa di aver perso delle informazioni). COMPRESSIONE SENZA PERDITA Con queste tecniche possiamo comprimere e decomprimere i dati senza perdere nessuna informazione. Es. ho un file da 1000 byte e lo posso comprimere a (codificare usandone solo) 600, poi se voglio decomprimerlo può tornare esattamente com’era prima di essere compresso, con le stesse informazioni alla stessa qualità. Il problema di queste tecniche è che hanno dei guadagni irrilevanti per contenuti molto ricchi di informazione es. immagini, audio e video si possono comprimere, anzi si devono comprimere perché sono i file più grossi, ma con queste tecniche non si possono ridurre di molto, quando invece servirebbe una grande diminuzione Ci sono più tecniche, da utilizzare in base alle caratteristiche dei dati (si sceglie la tecnica adatta in modo da sfruttare certe proprietà dei dati e che magari altri dati non hanno):

Questo è lo stesso algoritmo su cui si basa la compressione ZIP à l’idea di base è che man mano che vado a prendere le informazioni, costruisco un dizionario formato dai blocchi di base utilizzati per quell’informazione LA COMPRESSIONE DI CONTENUTI MULTIMEDIALI Le tecniche loseless non funzionano bene qui perché fondamentalmente non ci sono sequenze ripetute, non ci sono dizionari (al massimo possono esserci più pixel con lo stesso colore, ma non è in modo sistematico) Anche se zippassimo un contenuto multimediale ci accorgeremmo che il guadagno massimo in termini di compressione è dell’1%, che non è dato dalla compressione dell’informazione, ma dei metadati dell’informazione stessa es. quanti pixel per riga, quante righe nell’immagine ecc. LA CODIFICA DELTA L’unica tecnica senza perdita che si utilizza è la codifica Delta che si chiama così perché è una “codifica differenziale” = anziché codificare il singolo campionamento, io codifico la differenza rispetto al valore precedente, confidando che il valore di quel campionamento sia abbastanza simile a quello precedente, in modo che, per codificare le differenze, io possa usare meno bit à anziché usare 16 bit per un campione uso 5 bit per le differenze es. onda sonora codificata per livelli di campione VS differenze tra i livelli di campione Io sono sicura che funzionerà perché l’onda sonora, per come è fatta, non può avere delle variazioni più veloci della metà della frequenza di campionamento (si campiona ogni tot. in modo da avere valori + o – vicini) La codifica differenziale però ha delle pecche: se si perde il valore di riferimento non si può più riprodurlo e anche se comprimiamo, risparmiamo poco es. nella compressione di immagini non ne vale la pena LA COMPRESSIONE CON PERDITA NEI CONTENUTI MULTIMEDIALI Siamo giunti alla conclusione che qui le tecniche loseless non funzionano bene, perché non ci sono simboli ripetuti. Non è possibile comprimere contenuti multimediali senza perdita riducendoli significativamente Per cui si usano tecniche di compressione CON perdita, consapevoli del grado di degrado quando lo riprodurrò perché non sarà più possibile recuperare esattamente l’originale, ma solo una versione degradata Si sfruttano le caratteristiche del tipo di informazione (immagine, audio, video) e i limiti fisiologici con cui noi fruiamo di quel contenuto (es. noi sappiamo quali sono i limiti dell’orecchio umano e li sfruttiamo negli audio) LA CODIFICA DELLE IMMAGINI (gif) GIF = G raphic I nterchange F ormat e richiama la tecnica del dizionario = fare un dizionario dei colori (una palette di colori disponibili) es. 256 colori e ogni colore ha una posizione nella tavolozza (come nel dizionario) Prima si usavano 3 byte per ciascun pixel (quanto blu, quanto rosso e quanto verde = RGB) VS Ora per ogni pixel anziché codificare la sua miscela RGB indico il colore della palette da usare = uso un byte solo (- 66%) Per codificare un’immagine in formato GIF mi serve 1/3 dei byte rispetto al formato RAW Si riduce il numero di colori usati per l’intera immagine (palette di 255 colori diversi) à dove si va a lesinare? Userò lo stesso colore per pixel simili à invece di 3 byte per pixel, ne uso uno solo (8 bit = 256 combinazioni) Si può assegnare ad una posizione della palette il colore trasparente = lo sfondo è l’ 1 in: 255 + 1 = 256 colori

Funziona molto bene per i loghi e malissimo con tutte le foto in generale perché si perdono tutte le sfumature LA CODIFICA DELLE IMMAGINI (JPEG) Per la codifica delle immagini è stata proposta invece la codifica in JPEG = J oint P hotographic E xperts G roup Si usa il JPEG perché la compressione GIF degrada troppo le immagini fotografiche (JPEG è lo standard adottato dai produttori di apparecchi fotografici; alcuni professionali consentono di salvare l’immagine RAW) È uno standard molto sofisticato che comprende diversi metodi di compressione delle immagini, ognuno con obiettivi propri e particolari e si usano tutti contemporaneamente inscatolati insieme Prevede anche un metodo senza perdita, ma che tuttavia non produce livelli di compressione elevati (useless) La feature avanzata è che possiamo scegliere noi il compromesso tra compressione e qualità dell’immagine JPEG (metodi standard) Il primo passo è quello di cambiare la modalità di codifica del colore dell’immagine da RGB a YUV Conversione dalla codifica RGB (con cui viene acquisita l’immagine) a quella in termini di luminanza (quanto è luminoso ogni singolo pixel) e crominanze (la direzione verso i due colori di riferimento; si parla di crominanze al plurale perché il pixel è descritto in base ai due valori di riferimento della crominanza) Cambiare lo standard di codifica non fa guadagnare niente (prima 1 byte a colore R+G+B = 3 VS ora 1 byte per la luminanza e uno per ogni colore di riferimento che sono 2 = ancora 3) è solo un modo diverso di rappresentare le informazioni, non c’è nessuna perdita (e nessun guadagno di spazio) Qui entra in gioco il fatto che si possono customizzare le tecniche di compressione sulla base della natura dell’informazione e i limiti fisiologici con cui noi la fruiamo. Si sfrutta il fatto che l’occhio umano è più sensibile ai cambiamenti delle luminosità rispetto ai cambiamenti di colore (la prima cosa che vede è la luminanza) Quindi l’idea è quella di lasciare inalterato per ciascun pixel il livello di luminanza e andare a comprimere i due valori della crominanza (tanto il nostro occhio le nota con minor attenzione, perché le vede meno bene) Il JPEG tende a preservare le sfumature (transizioni da un colore all’altro) e fatica negli stacchi netti tra colori Per risparmiare spazio si fa una media dei valori di crominanza su quadratini di due per due pixel (2x2 = 4 pixel) nella matrice a griglia dell’immagine e per questi 4 pixel memorizzo solo due valori di crominanze (i valori medi, tanto l’occhio non li percepisce) e conservo le quattro luminanze di ogni singolo pixel Si sfruttano anche le proprietà spaziali dell’immagine (ogni pixel ha un suo posto nell’immagine, non si possono mescolare, ogni colore ha un suo ruolo = ricreare l’occhio, un fiore ecc.). Per questo si divide l’immagine in blocchi di otto pixel per comprimere le informazioni in ciascun blocco come un’unità. Questi blocchi vengono compressi in vari modi a seconda del fattore di compressione utilizzato, ad esempio con il valore medio (codificando bene le sfumature morbide senza stacchi diretti di colore e male i contrasti netti) Poi possono essere utilizzate anche le compressioni di tipo run-length, relativa e a lunghezza variabile ecc. perché una volta che ho uniformato i colori allora magari riesco a trovare proprietà comuni (es. stesso colore) La qualità assoluta non esiste, esiste il contesto entro cui voglio utilizzare l’immagine e in base a quello avrò dei compromessi per soddisfare determinati standard qualitativi

contribuiscono alla ricostruzione del segnale in qualità eccezionale) es. qualsiasi telefono ha lo stesso standard dell’audio per le chiamate e fa passare solo le frequenze tra 300 Hz e 3400 Hz e le altre le butta via L’obiettivo della compressione della voce al telefono è quella di comprimere le frequenze alte male, tanto l’orecchio umano non le percepisce, idem nella musica, la differenza tra 128 kbit e 384 kbit è solo nelle frequenze alte che hanno una loro importanza, ma dipende anche dal contesto di fruizione della musica CODIFICHE AUDIO Audio non compresso, con la massima qualità (nei CD compact disc) 2 byte (16 bit) per ogni campionamento x 44,000 campionamenti ogni secondo Canale SX e DX (riproduzione stereo) à servivano 1408 Kbit/s cioè 10Mb ogni minuto di audio Ora con le codifiche MP3: 64Kbit/s (minimo) – 192Kbit/s (normale compresso) LA CODIFICA VIDEO Presupposto: non è possibile memorizzare un video non compresso:

  • in Full HD avrei bisogno di 1.4 Gigabit/s che sono 180 Mb ogni secondo e la fibra in casa può arrivare al massimo a 1 Gigabit e in più c’è anche l’audio, quindi, è impossibile (2M di pixel per ogni fotogramma)
  • 3 byte (RGB) per ogni pixel e 30 fotogrammi ogni secondo LA COMPRESSIONE VIDEO Le tecniche utilizzate da MPEG vanno oltre lo scopo di questo corso L’idea generale è che il video viene costruito come una sequenza di fotogrammi (immagini) che vengono riprodotte in sequenza in modo analogo alla classica registrazione su pellicola Dopo aver memorizzato il primo fotogramma, i successivi non li codifico in modo indipendente, ma li codifico come differenze rispetto a quello precedente es. lo sfondo rimane lo stesso per alcuni secondi, cambia poco Se io ogni secondo devo inviare 30 fotogrammi e per risparmiare li codifico con tecniche basate sulle Delta Solo ogni tanto servono alcuni fotogrammi sono codificati nella loro interezza e non come differenziali e si chiamano fotogrammi- I e vengono codificati come JPEG e servono quando ci si muove nel tempo del video e per qualche secondo si ricevono dal provider solo fotogrammi Delta e finché non trova un fotogramma- I non può ricostruire il video (perché servono i fotogrammi di riferimento I ) I fotogrammi intermedi tra i vari fotogrammi- I sono rappresentati con tecniche di codifica relative (codifica delta). Solitamente i fotogrammi- I vengono inseriti ai cambi di scena e ogni tot, con una certa frequenza I fotogrammi- I vengono solitamente compressi con tecniche simili al JPEG (ce ne sono tante di tecniche) I CODEC (plug-in che permettono la fruizione del contenuto, decodificatore) Ci sono molti tipi di codifica (ad esempio, per i video, avi, mp4, mov…) tutti indicatori di diversi algoritmi di compressione, di solito per garantire la fruibilità dei contenuti, chi crea un nuovo standard crea anche quelli che si chiamano CODEC I codec ( cod ificatori/ dec odificatori) sono un’accoppiata di moduli software (componenti software) che comprimono e decomprimono CO-DEC i contenuti multimediali per poterli visualizzare/ascoltare Es. quando compriamo un PC nuovo viene richiesto di scaricare i software per fruire dei contenuti (plug-in)

Alcuni sistemi di codifica implementano delle tecniche di criptografia per limitare la fruizione dei contenuti solo ad utenti che hanno sottoscritto un accordo commerciale es. licenza o abbonamento Una volta che abbiamo criptato il contenuto, tramite il DRM ( D igital R ight M anagement), posso anche definire quali saranno le operazioni permesse all’utente in funzione del punto di riproduzione in cui sono es. su YouTube prima di un video la pubblicità non si può mandare avanti (l’operazione di Fast Forward non è abilitata) perché nel DRM c’è esplicitato che quella funzione deve essere disabilitata per scopi commerciali Quindi è il codec che abbiamo non ci consente di fare determinate azioni (e si vuole evitare che altri creino dei codec che sia in grado di aggirare i DRM e che gli consenta di fare le azioni vietate) LEZIONE 3 CARATTERISTICHE DEI CONTENUTI DIGITALI Nei contenuti ricchi di informazione (video, immagini, audio ecc.) abbiamo visto che c’è la possibilità di decidere il rapporto qualità/volume di dati che è necessario trasmettere per poter fruire di questi contenuti C’è anche la possibilità di poterli comprimere, nonostante gli algoritmi di compressione lossy comportino un degrado controllabile della qualità dell’informazione à queste tecniche digitali hanno una serie di problemi Ma allora se danno una serie di svantaggi, perché questi contenuti digitali hanno avuto così tanto successo?

  • perché permettono con estrema facilità la trasmissione e la condivisione (es. se voglio inviare una immagine digitale = 1 minuto VS voglio inviare una foto in analogico: farla sviluppare + inviarla via posta = 1 settimana)
  • perché in digitale ne posso controllare il degrado es. ogni volta che ascolto un vinile si usura, un MP3 no
  • perché in digitale esistono delle tecniche che permettono la rilevazione di errori (sia di memorizzazione che di trasmissione) e la loro correzione che invece nell’analogico sarebbero cambiamenti irreversibili es. una volta che io ho acquisito un contenuto in digitale questo non si degrada più VS le fotografie sbiadiscono, le pellicole delle videocassette si usurano, i dischi in vinile si consumano anche solo con l’attrito Codificando in digitale un contenuto mi aspetto di averlo reso “eterno” e di averlo cristallizzato e “salvato” dalle modificazioni del tempo, ma esistono delle eccezioni: è possibile che durante la trasmissione o nel supporto in cui io lo conservo si verifichino degli errori à essendo digitali è possibile individuarli e correggerli Cos'è un errore in un contenuto digitale? Dato che alla fine un contenuto digitale, per quanto sia complesso è una sequenza di uni e di zeri à un errore = es. in una fase ho memorizzato «1», ma leggo «0» (o viceversa)
  • in digitale esistono delle tecniche per la rilevazione degli errori
  • in digitale esistono delle tecniche per la correzione degli errori Noi vedremo una sola tecnica, la più semplice, ma è anche quella con un maggior “costo” perché per correggere questo errore dovremo aggiungere delle informazioni supplementari (ne esistono di più efficaci) RILEVAZIONE DEGLI ERRORI La prima tecnica che ci permette la rilevazione di errori è la tecnica che si chiama: Bit di parità = aggiungo un bit per ogni riga (uso 9 bit per codificare 8 bit di informazione, il bit in più serve solo per il controllo degli errori) Anziché memorizzare 8 bit ne memorizzo 9 di cui solo 8 sono utili, il nono lo utilizzo per verificare se l’informazione è integra o se contiene un errore. Idea di fondo = si tende a mantenere pari il numero di 1 o 0

La commutazione indica l’insieme delle funzionalità e delle tecniche su cui è basato il funzionamento logico dei nodi di una rete di telecomunicazioni che unisce un chiamante o emittente e un destinatario o chiamato Esistono due grandi tipologie di reti di comunicazione:

  • A commutazione di circuito (telefonia)
  • A commutazione di pacchetto (dati) Prima questa divisione era una divisione fisica. Ora è logica perché quasi tutte le reti oggi sono a commutazione di pacchetto, si possono costruire sopra queste delle sovrastrutture concettuali a commutazione di circuito per cui creare una rete che formalmente è ancora a commutazione di circuito Ormai tutte le comunicazioni tramite cellulari (G P RS) sono a commutazione di p acchetto, ma nonostante questo la parte di fonia è gestita in modo completamente diverso rispetto a quella della trasmissione dati COMMUTAZIONE DI CIRCUITO È stato il primo tipo di rete di comunicazione mai realizzata (1700) in cui le prime linee erano quelle del telegrafo prima e del telefono poi Il primo tipo di commutazione è a circuito = quando si va a fare una telefonata si contatta il primo dispositivo disponibile nella rete (che sia nella commutazione di circuito, sia in quella di pacchetto si chiamano commutatori o router ), il più vicino, che stabilisce dove si trova il destinatario e tramite una tabella va a collegarsi con altri dispositivi, creando un circuito cioè una tratta dedicata solo a questa comunicazione Le risorse sono allocate end-end e il loro uso è riservato per la chiamata tra la chiamante e il chiamato Vale a dire che tra tutti i canali che uniscono i router, uno di quelli viene riservato per quella chiamata Si crea perciò un canale, un circuito dedicato end-to-end (ad un estremo il sender ed all’altro il receiver) Durante la prima parte (il periodo tra quando si finisce di comporre il numero e si sente il primo squillo) si crea il setup del circuito, si fissa il percorso end-to-end e tramite i commutatori si stabiliscono quali sono le tratte tramite le tabelle à nelle tabelle sono riportate le informazioni sule varie tratte es. questa tratta di circuito è già stata allocata per un’altra comunicazione e quindi non è disponibile né usabile Una volta che si è stabilito il circuito i due host sono in contatto e possono comunicare es. reti telefoniche Se non si hanno più canali liberi allora risulta che non è possibile raggiungere il destinatario (linea occupata) Risorse dedicate: no sharing = le tratte non sono condivisibili, una volta che è allocata ad un utente è occupata e lo rimane anche se i due interlocutori non stanno parlando e quindi non può essere utilizzata per altro/i Le tratte del circuito rimangono in attesa se non utilizzate per la chiamata a prescindere dall’utilizzo o meno Questo approccio si presta bene alla “tariffazione a tempo” = una volta che la rete ha fissato il percorso end- to-end e il chiamante è stato messo in comunicazione con il chiamato, il gestore può tariffare in base al tempo Dato che la comunicazione audio abbiamo visto occupa solo i primi 20 kHz di segnale elettrico, quando un cavo elettrico può portare molto di più: ci sono delle tecniche che permettono di infilare nello stesso cavo elettrico più chiamate che non si disturbano tra loro e prendono il nome di multiplexing division (Multiplazione delle tratte dei circuiti: FDM/TDM) semplicemente shiftandolo in alto o in basso di frequenza

La commutazione di circuito era stata pensata verso fine Ottocento ed è stata utilizzata fino agli anni Cinquanta, quando gli USA e l’URSS si contendevano la supremazia tecnologica. I russi erano in vantaggio perché avevano fatto le prime missioni spaziali e quindi gli americani hanno creato l’ARPA = agenzia di ricerca per progetti avanzati (per la difesa) per far avanzare la tecnologia in moltissimi campi es. comunicazione Questo approccio presentava due vulnerabilità dal pov militare: 1) i cavi attraverso cui questa tecnologia si muoveva sono fisici e se vengono danneggiati si bloccano le chiamate, a meno che non si riconfigurino manualmente tutti i router dicendo che quel canale non può essere utilizzato e 2) le centrali telefoniche erano infrastrutture fisiche complicatissime e dovevano gestire tantissime risorse contemporaneamente e per questo erano, in caso di guerra, obiettivi strategici da far saltare per interrompere tutte le comunicazioni in un paese à serviva una nuova strategia di comunicazione che resistesse ad un possibile conflitto nucleare Il progetto ARPANET aveva il compito di trovare una soluzione a questa grande vulnerabilità in caso di guerra e trovare un sistema in cui l’intelligenza non fosse nei commutatori, ma nei terminali esterni alla rete, per fare in modo che la rete fosse resiliente e in grado di adattarsi anche se uno dei nodi del sistema era danneggiato e trovare un altro percorso possibile per portare a destinazione la chiamata in ogni circostanza Il capo del progetto in quel periodo era un pazzo visionario che immaginava una rete galattica in cui poteva collegarsi anche la massaia americana per guardare delle ricette per il marito à ha sviluppato un’architettura che soddisfaceva gli scopi militari, ma che era in grado anche di scalare per un uso globale, più economica Altra grande intuizione di questo personaggio è stata quella di tenere gli standard aperti, rendere disponibili a tutti l’insieme di regole che servivano per potersi interfacciare a questa rete e interagire con essa L’idea che ha dato soluzione a tutto questo è stata la commutazione di pacchetto che, a differenza della precedente che creava un percorso dedicato end-to-end ai due interlocutori e lo occupavo per tutto il tempo della loro comunicazione, prevede lo scambio di messaggi e quindi di pacchetti, blocchi di informazioni definite LA COMMUTAZIONE DI PACCHETTO In questo modo per effettuare la tramissione di un’unità di dati (pacchetto) inviando un messaggio tramite la rete, ogni commutatore decide dove inoltrarlo (ad un altro commutatore) e in base al destinatario lo invia ad un altro ecc. fino a che il router non si accorge che il destinatario è direttamente collegato a quel commutatore e quindi gli viene recapitato Questo approccio è profondamente dal precedente perché l’infrastruttura di comunicazione (la rete) è utilizzata solamente durante la trasmissione del messaggio, una volta che è passato quella tratta può essere utilizzata per gestire altri messaggi di altri Le risorse sono utilizzate, a turno, solo per il tempo strettamente necessario alla trasmissione (inoltro) del pacchetto su una tratta e nei periodi di inattività i collegamenti possono essere utilizzati per la trasmissione di altri pacchetti (anche relativi ad altre connessioni tra altri utenti) In più ciascuno di questi commutatori non deve avere una visione globale di tutta la comunicazione, ma riceve solamente l’informazione e, sulla base di chi è il prossimo destinatario, la inoltra verso il destinatario finale Es. cartolina che viene spedita da Malibù in Italia, intanto si avvicina, poi viene spedita in Lombardia e man mano sempre più in dettaglio verso la destinazione e a ogni passaggio non interessa da dove è spedita o altro

Nel caso in cui ci siano più collegamenti che convergono nello stesso router es. i pacchetti di informazione arancione e blu nelle tratte veloci di A e B convergono al router da cui poi parte una tratta lenta. Il router non può trasmetterli tutti contemporaneamente in tempo reale, deve metterli in coda in attesa del loro turno I ritardi di coda non sono prevedibili perché dipendono dal numero di pacchetti in coda e dal numero di persone e di quanti device stanno mandando informazioni nello stesso momento da quel router Oltretutto possono esserci altri problemi collegati ai ritardi: se la coda cresce troppo, in attesa di inviarli, il router ha bisogno di un luogo dove “parcheggiare” momentaneamente questi pacchetti, cioè una memoria QUEUING (coda) AND LOSS (perdita di pacchetti à vengono buttati via senza nemmeno informare) Se il tasso di arrivo dei pacchetti (in bps) supera quello del collegamento di inoltro:

  • i pacchetti in arrivo vengono messi in coda (buffer) in attesa di trasmissione
  • i pacchetti vengono scartati (perduti) quando viene esaurito lo spazio della coda nella memoria principale RITARDI DI TRASMISSIONE E PROPAGAZIONE Il ritardo di trasmissione = tempo necessario per trasmettere tutti i bit del pacchetto (tasso nominale della rete, es. 100 Mbps = tot bit al secondo nella rete = in ogni secondo si possono infilare nella rete tot bit) che dipende dalla distanza tra la source e il receiver I ritardi di propagazione = tempo necessario perché il primo bit arrivi dall’host a destinazione à i bit si propagano sottoforma di impulsi elettromagnetici (onde) e ciò dipende ancora dalla distanza da percorrere Es. vacanza con più macchine (bit) in cui il tasso di trasmissione equivale a quante macchine passano sotto al casello in 1 secondo; il ritardo di propagazione è il tempo che ci vuole a coprire la distanza dal casello di entrata al casello di uscita per la prima macchina. Mentre il ritardo di trasmissione si paga per ciascuno dei bit (tempo per trasmettere da A a B), il ritardo di propagazione (l’eventuale coda prima della prima macchina) lo paga solo il primo bit una volta per tutti, perché gli altri gli vanno a dietro in fila indiana à es. 10 secondi in attesa al casello (perché prima c’erano in coda altre macchine, dopo ci sono solo le nostre macchine della carovana e quindi appena passata la prima, le altre la seguono senza ritardi) Al tempo 0 la prima macchina si avvicina al casello, dopo 10 secondi la prima macchina è pronta per partire e arriverà a destinazione in un’autostrada ideale di 100 km in cui si viaggia costantemente a 100 km/h per un’ora, quindi arriverà alla fine della tratta al tempo 1h+10secondi (tempo di trasmissione normale + ritardo di propagazione); al tempo 0,20 secondi la seconda macchina entra nella tratta, ma senza ritardo rispetto alla prima quindi arriverà lo stesso dopo 1h = 1h+20secondi e così via per tutte le altre senza ritardi ANALOGIA CON LE MACCHINE
  • le macchine “si propagano”/vanno a 100 km/h
  • ogni casello ci mette 12 sec per far passare una macchina (tempo di trasmissione dei bit)
  • car = bit; caravan = packet of information
  • Q: How long until caravan is lined up before 2nd toll booth?
  • time to “push” entire caravan through toll booth onto highway = 12*10 = 120 sec = 2 minutes
    • time for last car to propagate from 1st to 2nd toll both: 100km/(100km/h) = 1 hour
  • A: 62 minutes Ovviamente se sono pochi km il tempo e il ritardo sono irrilevanti, ma se devo percorrere milioni di km?

- i bit “viaggiano” alla velocità della luce (nel rame circa ˜ 2000000 Km/s)

  • per spostarsi di 10Km ci mettono circa 50 μs = microsecondi = milionesimi di secondo
  • con una rete veloce 1Gbps, per trasmettere 1000 byte (un pacchetto di 8x1000 bit) ci impiego: 1000 𝑏𝑦𝑡𝑒 1 𝐺𝑏𝑝𝑠

8 × 1000

10!^

Quindi per trasmettere 1 pacchetto ci metto 8 microsecondi e per trasferirlo per 10 km ce ne metto 50 Il tempo totale è la somma di questi due ritardi QUATTRO TIPI DI RITARDO 𝒅𝑹𝟏#𝑹𝟐 = 𝒅𝒑𝒓𝒐𝒄𝒆𝒔𝒔𝒊𝒏𝒈 + 𝒅𝒒𝒖𝒆𝒖𝒆

  • 𝒅𝒕𝒓𝒂𝒔𝒎𝒊𝒔𝒔𝒊𝒐𝒏
  • 𝒅𝒑𝒓𝒐𝒑𝒂𝒈𝒂𝒕𝒊𝒐𝒏 Se vado a prendere tutti i ritardi coinvolti nella trasmissione a commutazione di pacchetto ho: 𝒅𝒑𝒓𝒐𝒄𝒆𝒔𝒔𝒊𝒏𝒈 = determinazione del collegamento in uscita, tempo fisso di elaborazione del router per lo smistamento del pacchetto di informazioni al destinatario in base alla direzione di dove si trova 𝒅𝒒𝒖𝒆𝒖𝒆 = tempo di attesa nel buffer del collegamento di trasmissione dipende dallo stato di congestione del singolo router, tempo variabile in base alla coda di device e persone connesse 𝒅𝒕𝒓𝒂𝒔𝒎𝒊𝒔𝒔𝒊𝒐𝒏 = dipende dalla velocità del collegamento tra i router, variabili in base alla velocità della tratta 𝒅𝒑𝒓𝒐𝒑𝒂𝒈𝒂𝒕𝒊𝒐𝒏 = dipende dalla distanza fisica tra i router