Questi appunti sono stati fatti dal mio carissimo amico Luca Tecchio, io ho fatto solamente da revisionatore.
1. Introduzione
1.1 Che cos'è internet?
1.1.1 Gli "ingranaggi" di Internet
Internet è una rete di reti, con una struttura gerarchica, che interconnette dispositivi di calcolo, detti host o sistemi periferici, tramite una rete di collegamenti e può essere pubblica o privata (intranet, ovvero una rete aziendale privata). Questi collegamenti possono essere di molti tipi: rame, fibra ottica, onde elettromagnetiche, satellite...
Collegamenti diversi possono trasmettere dati a velocità differenti e tale velocità di trasmissione si misura in bit/s, mentre l'ampiezza di banda sono la quantità di bit al secondo che vengono trasmessi nel mezzo.
I dati vengono suddivisi in sottoparti con l'aggiunta di un'intestazione ed inviati attraverso la rete dai router e dai commutatori di pacchetto (link-layer switch), questi due lavorano a due livelli diversi. Il percorso è l'insieme del sistema di invio, del sistema di ricezione, dei collegamenti e dei commutatori di pacchetto che ogni pacchetto attraversa.
I sistemi periferici accedono a Internet tramite gli ISP (Internet Service Provider), che sono un insieme di commutatori di pacchetto e di collegamenti.
Sistemi periferici, commutatori di pacchetto e altre parti di Internet fanno uso di protocolli, che definiscono il formato e controllano l'ordine di invio e di ricezione di informazioni all'interno della rete, tra due o più entità in comunicazione. Alcuni di essi sono: TCP (transmission control protocol), IP (internet protocol), HTTP, Skype, Ethernet.
Dato che vi era l'esigenza di un accordo sulle funzioni svolte da ogni protocollo, vengono utilizzati gli standard, che vengono sviluppati dall'Internet Engineering Task Force (IETF). Questo accade soprattutto se ci sono tanti produttori di dispositivi e non si vuole che tutti utilizzino protocolli diversi, mettendo alcuni paletti e fornendo delle linee guida per la creazione di essi. I documenti sugli standard di Internet vengono detti request for comment (RFC).
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220917093836.png)
1.1.2 Descrizione dei servizi
Internet può essere definito anche come un'infrastruttura che fornisce servizi alle applicazioni. Tali applicazioni comprendono e-mail, navigazione Web, VoIP, social network, giochi, database, e-commerce, condivisione di file, streaming, virtual/augmented reality, messaggistica istantanea, meteo, traffico su strada, cloud music, video streaming... Queste applicazioni sono dette applicazioni distribuite, perché coinvolgono più host che si scambiano reciprocamente dati. Le applicazioni, che sono sorgenti e destinazioni dei dati, vengono eseguite sugli host e non sui router, nonostante essi permettano lo scambio di dati tra host.
I servizi forniti alle applicazioni possono essere QoS (Quality of Service), che garantiscono un servizio affidabile dalla sorgente alla destinazione, oppure best effort che non è affidabile.
1.1.3 Che cos'è un protocollo?
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220914234146.png)
Il concetto di protocollo di rete è molto simile al concetto di protocollo umano, il quale impone come prima cosa un saluto per iniziare la comunicazione con qualcun altro. La tipica risposta è un messaggio "Ciao" di ritorno che implicitamente una persona interpreta come risposta cordiale e quindi procede con il chiedere l'ora. Nel caso di una risposta diversa (come "Non mi scocciare"), potrebbe indicare una scarsa propensione a comunicare o l'incapacità di farlo. Quando una persona non riceve risposta alla propria domanda, in linea di massima, non ripresenta la richiesta perché nel "protocollo umano" sono presenti specifici messaggi che inviamo e specifiche azioni che intraprendiamo in risposta ai messaggi ricevuti o ad altri eventi. Difatti se le persone adottano due protocolli diversi (una educata e l'altra no), non è possibile portare a termine una transazione utile. Lo stesso concetto vale per le reti, in cui lo scambio si appoggia a due (o più) entità, che in questo caso sono componenti hardware o software di qualche dispositivo, che comunicano utilizzando lo stesso protocollo al fine di assolvere un certo compito. Si impiegano protocolli differenti per realizzare compiti diversi.
Un protocollo definisce il formato e l 'ordine dei messaggi scambiati tra due o più entità in comunicazione, così come le azioni intraprese in fase di trasmissione e/o di ricezione di un messaggio o di un altro evento.
1.2 Ai confini della rete
I dispositivi connessi a internet sono solitamente detti sistemi periferici o end system, in quanto si trovano ai confini di internet (es desktop, server e dispositivi mobili). Questi sistemi periferici vengono detti host perché eseguono programmi applicativi come browser e web server, oppure software di lettura e gestione della posta elettronica. Tali host vengono a loro volta suddivisi in client, ovvero coloro che richiedono dei servizi, come PC e smartphone, e server, che sono coloro che si occupano di erogare i servizi (es pagine web, flussi video e ritrasmissione della posta elettronica) grazie ad un programma che li esegue. La maggior parte di essi è situata in data center. Tale architettura viene definita CLIENT/SERVER, in contrapposizione con la PEER TO PEER che permette ad ogni nodo di fare il client o il server verso gli altri host della rete (es Skype e Bit Torrent).
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220917223022.png)
1.2.1 Le reti di accesso
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220917224503.png)
Ogni host è connesso fisicamente, tramite le reti di accesso, al suo edge router, che è il primo router sul percorso dal sistema d’origine a un qualsiasi altro sistema di destinazione collocato al di fuori della stessa rete di accesso. Tali reti possono essere reti di accesso residenziale, reti di accesso aziendale (università, istruzioni, aziende) e reti di accesso mobile.
Accesso residenziale
punto-punto
I due accessi residenziali più diffusi sono il digital subscriber line (DSL) e quello via cavo. L'accesso DSL viene solitamente fornito da una società telefonica, che in questo caso assume anche il ruolo di ISP.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220917230815.png)
Il modem DSL dell'utente usa la linea telefonica esistente (doppino telefonico intrecciato in rame) per scambiare dati con un digital subscriber line access multiplex (DSLAM) che si trova nella centrale locale (CO central office) della compagnia telefonica. Il modem DSL residenziale converte i dati digitali in analogici per poterli trasmettere sul cavo telefonico ed il DSLAM li riconverte in formato digitale. Le linee telefoniche residenziali trasportano contemporaneamente dati e segnali codificandoli in tre bande di frequenze non sovrapposte:
- canale downstream (verso l'abitazione) fino a 10-50 Mbit/s
- canale upstream (verso il DSLAM) fino a 1-5 Mbit/s
- linea dedicata per un segnale telefonico
Le velocità raggiunte effettivamente in downstream e upstream possono però essere inferiori, perché il provider DSL può limitare appositamente il tasso di trasmissione quando offre servizi a più livelli (velocità di trasmissione diverse a costi differenti) o perché il tasso di trasmissione massimo è limitato dalla distanza che intercorre tra l’abitazione e la centrale locale, dalla qualità del materiale con qui è costruito il doppino telefonico e dal grado di interferenza elettrica. La DSL è difatti stata progettata per distanza piccole (circa 10km).
Accesso via cavo
Mentre la DSL usa le infrastrutture già esistenti della compagnia telefonica locale, l’accesso a Internet via cavo utilizza le infrastrutture esistenti della televisione via cavo. La fibra ottica connette la terminazione del cavo a giunzioni a livello di quartiere, dalle quali viene usato il tradizionale cavo coassiale per la distribuzione televisiva per raggiungere le singole case e appartamenti.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918000329.png)
L'accesso a internet via cavo richiede dei modem speciali chiamati cable modem che si connettono ai PC attraverso la porta Ethernet. Il CMTS (cable modem terminator system) funziona similmente al DSLAM nelle reti DSL, ovvero traduce il segnale analogico inviato dai cable modem in formato digitale.
FTTH
La FTTH (fiber to the home) è una rete di distribuzione che collega una centrale locale ad un'abitazione ma, essendo condivisa da molte abitazioni, viene suddivisa in più fibre ed ognuna è dedicata ad un utente. Ogni ISP fornisce velocità diverse, solitamente si aggirano intorno ai 1000 Mbps in downstream e 300 Mbps in upstream.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918001325.png)
Satellitare
Solitamente dove le reti DSL, via cavo e FTTH non sono disponibili, è utilizzabile un collegamento satellitare.
Modem dial-up
L'accesso in dial-up è basato sul modello della DSL, ovvero che un modem in casa dell’utente si connette a un modem dell’ISP su una linea telefonica, ma non è possibile navigare e telefonare nello stesso momento. L'accesso ha una velocità molto lenta fino a 56 kbit/s.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220917232120.png)
Accesso aziendale
reti locali (LAN)
Per collegare i sistemi terminali di aziende e università all'edge router (computer di bordo) si utilizza una rete locale detta LAN (local area network). La tecnologia Ethernet è la più diffusa ed utilizza un doppino di rame intrecciato per connettere gli host allo switch Ethernet, che a sua volta verrà connesso a internet, con velocità variabili di 10 Mbit/s, 100 Mbit/s, 1Gbit/s fino a 10Gbit/s.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918104910.png)
Accesso wireless
Dispositivi come portatili o smartphone accedono a internet via wireless. In una LAN wireless gli utenti si scambiano pacchetti entro poche decine di metri da e verso una stazione base, detta anche access point, che è connesso ad una rete aziendale, che probabilmente include una rete Ethernet cablata, a sua volta connessa a Internet. Le LAN wireless sono basate sulla tecnologia IEEE 802.11, a sua volta suddivide vari standard come a/b/g/n/ac (Wi-Fi 5) che si differenziano per la velocità a cui operano. Rispettivamente abbiamo a, g: 54 Mbit/s, b: 11 Mbit/s e dalla n in poi sono maggiori di 300 Mbit/s.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918105223.png)
La stessa infrastruttura wireless viene utilizzata dai dispositivi mobili durante gli spostamenti ed essi si scambiano pacchetti tramite una stazione base gestita da un provider di telecomunicazioni. La differenza dal WiFi è che l'utente si può trovare anche a poche decine di chilometri dalla stazione base e non solo poche decine di metri.
Ad oggi esistono reti wireless 3G, 4G E 5G (e le rispettive evoluzioni come 4G LTE) che consentono l'accesso wireless a internet, con commutazione a pacchetto, a velocità sempre più elevate (1,8 Gbit/s per il 5G).
Tipicamente la rete di un'abitazione è composta da:
- DSL o modem via cavo
- Router/firewall/NAT
- Ethernet
- Punto d'accesso wireless
Molti di questi dispositivi sono spesso integrati in un unico dispositivo che svolge le varie funzioni.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918111252.png)
1.2.2 Mezzi trasmissivi
Il Bit è un'unità di informazione base (0/1) che viaggia da un sistema terminale a un altro, passando per una serie di coppie trasmittente-ricevente e attraversando un mezzo fisico. I mezzi fisici ricadono in due categorie: i mezzi vincolati e quelli non vincolati. Nei mezzi vincolati, o guidati, i segnali si propagano in un mezzo fisico: fibra ottica, filo di rame o cavo coassiale. Nei mezzi non vincolati, o a onda libera, i segnali si propagano nell'atmosfera o nello spazio esterno, come avviene nelle LAN wireless o nei canali digitali satellitari.
Dato che il costo dell'installazione di un collegamento fisico è molto superiore a quello del materiale, spesso si dispongono doppini intrecciati, fibra ottica e cavi coassiali in ogni stanza anche se ne viene utilizzato uno solo. Questo permette di risparmiare il costo di una successiva installazione nel caso ci fosse il bisogno di utilizzare un'altra tipologia di mezzo.
Doppino di rame intrecciato (TP)
Il tipico cavo usato per lo standard Ethernet, costituito da due fili di rame distinti e disposti a spirale. I fili vengono intrecciati assieme per ridurre l'interferenza elettrica generata da altre coppie presenti nelle vicinanze. I cavi possono presentare vari tipi di schermatura:
- nessuna (unshielded)
- schermatura per doppino (shielded)
- lamina o maglia che avvolge l'intero cavo (foiled)
- entrambe (screened)
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918155330.png)
Denominazione sintetica dei cavi
X / Y TP
- X è la schermatura dell'intero cavo
- U: unshielded
- F: foiled (di solito una lamina di alluminio)
- S: maglia metallica intrecciata (di solito, rame placcato alluminio)
- SF: entrambe
- Y è la schermatura di ogni doppino
- U: unshielded
- F: shielded
Alcuni esempi: U/UTP, F/UTP, S/FTP
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918160917.png)
- UTP: non schermati
- S/UTP: cavo UTP schermato solo esternamente
- STP: schermatura metallica per ogni coppia di cavi
- S/STP: cavi STP protetti da un'ulteriore schermatura metallica che racchiude l'intero cavo, deve però essere collegata da entrambi i lati alla massa per garantire una maggior protezione da onde esterne
Cavi usati nello standard Ethernet
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918161538.png)
Connessione di cavi e connettori
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918162710.png)
Nel cavo patch entrambe le estremità utilizzano lo stesso standard e quindi hanno la disposizione dei fili con gli stessi colori. Questa tipologia è utilizzata per collegare dispositivi di tipo diverso, come computer e switch.
Il cavo incrociato invece utilizza due standard diversi e quindi anche i fili saranno disposti in modo diverso alle estremità. Questa tipologia è utilizzata per collegare dispositivi dello stesso tipo, come due router.
Cavo coassiale
Cavo costituito da due conduttori concentrici e non paralleli, bidirezionale.
Il cavo a banda base appartiene alle vecchie reti e non è in grado di trasmettere più di un segnale alla volta, inoltre si possono trasmettere solo dati e voce.
Il cavo a banda larga invece permette la trasmissione simultanea di molti segnali, perché ognuno di essi viaggia a frequenze diverse. Utilizzato anche in combinazione con la fibra ottica (HFC Hybrid fiber-coaxial) sia per il servizio televisivo che per l'accesso ad internet.
Fibra ottica
La fibra ottica è un mezzo sottile e flessibile che conduce impulsi di luce, ciascuno dei quali rappresenta un bit. Una singola fibra ottica può supportare alte velocità trasmissive (da 10 a 100 Gbit/s). È immune all’interferenza elettromagnetica, ha un basso tasso di errore ed ha un lungo raggio di trasmissione, tanto che sono molto utilizzate nelle dorsali.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918172036.png)
Canali radio
I canali radio trasportano segnali all’interno dello spettro elettromagnetico e non richiedono l'installazione fisica di cavi. Può attraversare le pareti e percorrere lunghe distanze, ma l'ambiente di propagazione determina la perdita di segnale lungo il percorso causata dalla distanza (path loss), dall’attraversamento di ostacoli (shadow fading), dalla riflessione sulle superfici (multipath fading) o dall’interferenza con altri canali radio o segnali elettromagnetici.
I canali radio terrestri si suddividono in tre gruppi:
- Microonde terrestri che operano su distanze di qualche metro ed hanno velocità fino a 45 Mbit/s
- LAN (es WiFi) che operano in aree con raggio di qualche centinaio di metri e che raggiungono le velocità di 11 Mbit/s, 54 Mbit/s ed anche oltre i 100 Mbit/s
- Wide-area (es cellulari) che si estendono per decine di chilometri, come ad esempio 3G, 4G e 5G
I canali radio satellitari invece colegano due o più trasmettitori terrestri a microonde, noti come stazioni a terra (ground station). Il satellite riceve le trasmissioni su una banda di frequenza, rigenera il segnale utilizzando un ripetitore e trasmette segnali su un’altra frequenza.
Nelle comunicazioni si usano due tipi di satellite:
-
satelliti geostazionari (GEO, geostationary earth orbit), posizionati permanentemente in un'orbita a 36.000 km dalla superficie terreste e sincronizzata con la rotazione terrestre. Il ritardo di propagazione del segnale, dovuto alla distanza, è di 280 millisecondi e operano alla velocità di centinaia di Mbit/s, soprattutto in zone dove non è presente l'accesso a Internet via DSL o cavo
-
satelliti a bassa quota (LEO, low-earth orbiting) che sono posizionati più vicino alla terra e ruotano attorno al nostro pianeta come fa la Luna. Possono comunicare sia tra di loro sia con le stazioni a terra, ma per fornire la copertura continua è necessario averne in orbita molti.
1.3 Il nucleo della rete
Il nucleo della rete è una maglia di router che interconnettono gli host. I dati vengono trasferiti attraverso due metodi:
-
commutazione di circuito: circuito dedicato per l'intera durata della sessione (es rete telefonica)
-
commutazione di pacchetto: i messaggi di una sessione utilizzano le risorse su richiesta e di conseguenza potrebbero dover attendere per accedere a un collegamento
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918181703.png)
1.3.1 Commutazione di circuito
Nelle reti a commutazione di circuito le risorse richieste lungo un percorso, ovvero buffer e velocità di trasmissione sui collegamenti, sono riservate per l'intera durata della sessione di comunicazione e quindi non c'è condivisione. Un esempio tipico sono le reti telefoniche, perché prima di iniziare l'invio, la rete deve stabilire una connessione tra mittente e destinatario (circuito). Una volta stabilito il circuito, la rete riserva anche una certa larghezza di banda (pari a una frazione della capacità trasmissiva del canale) per trasferire i dati. Questo permette il trasferimento di dati ad una velocità costante garantita.
Supponiamo di avere quattro commutatori interconnessi tramite quattro collegamenti. Ognuno di essi dispone di quattro circuiti, in modo che ogni collegamento possa supportare quattro connessioni simultanee. Gli host sono tutti direttamente connessi a uno dei commutatori e quando due di essi desiderano comunicare, la rete stabilisce una connessione end-to-end (o connessione punto a punto) dedicata a loro. Poiché ogni collegamento ospita quattro circuiti, se ogni collegamento tra due switch ha una velocità di trasmissione pari a 1 Mbit/s, la banda viene suddivisa in porzioni e ogni circuito tra due switch è di 250 Mbit/s.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918191401.png)
Le risorse (canali) rimangono inattive se non utilizzate, questo perché non c'è condivisione.
Time Division Multiplexing (TDM)
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918193512.png)
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020221006182308.png)
Con TDM si suddivide il tempo in slot di dimensioni fisse, ad ogni utente è assegnato uno slot e, a seconda del numero di utenti, avrò più o meno suddivisioni. Questo però comporta ad uno spreco di risorse di rete (bande di frequenza o slot nei collegamenti), perché non possono essere usate da altre connessioni. Un esempio è una chiamata telefonica quando una persona smette di parlare, in quel momento si stanno sprecando risorse.
Se per esempio volessimo inviare un file di 640.000 bit dall'host A all'host B su una rete a commutazione di circuito, sapendo che:
- tutti i collegamenti presentano un bit rate di 1,536 Mbit/s
- ciascun collegamento utilizza TDM con 24 slot/secondo
- si impiegano 500 ms per stabilire un circuito punto-punto
Ogni secondo posso trasmettere
Quindi il tempo impiegato è
La velocità di trasmissione di un circuito è uguale alla frequenze di frame, moltiplicata per il numero di bit in uno slot.
Frequency Division Multiplexing (FDM)
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220918193347.png)
Con FDM si suddivide la velocità di trasmissione, quindi ogni utende avrà una diversa banda di frequenza per ciascuna connessione, detta ampiezza di banda (bandwidth). Un esempio sono le stazioni radio FM.
1.3.2 Commutazione di pacchetto
Nelle reti a commutazione di pacchetto la sorgente suddivide i messaggi lunghi in parti più piccole, note come pacchetti. Tra la sorgente e la destinazione, questi pacchetti attraversano collegamenti e commutatori di pacchetto (router e switch), con una velocità pari alla velocità totale di trasmissione del collegamento stesso. I pacchetti degli utenti A e B condividono le risorse di rete, però ognuno di essi può seguire percorsi diversi prima di arrivare alla destinazione. Ogni pacchetto utilizza completamente le risorse fisiche ed esse vengono ripartite in modalità best effort, ovvero che in base alla disponibilità, il traffico verrà consegnato o scartato, a seconda delle necessità (on demand = accesso alle risorse solo quando necessario). Se si riempie il buffer, tutti i pacchetti che dovrebbero essere spediti vengono scartati e i due host dovranno comunicarsi quali pacchetti mancano.
Siccome non c'è condivisione delle risorse e c'è contesa, l'ordine di ricevimento dei pacchetti è casuale, a seconda delle politiche.
Multiplexing statistico
Si ha il multiplexing statistico quando il flusso di informazioni è segmentato in pacchetti di lunghezza fissa e ad ognuno di loro è assegnato un header e un trailer. Questo permette il loro riconoscimento all'interno del flusso di dati, perché ogni pacchetto può essere inviato in ordine diverso e non seguire lo stesso percorso degli altri, ma anche per identificare il destinatario della trasmissione. Questa tipologia di servizio è solitamente "su richiesta", ovvero che non bisogna preallocare le risorse prima di trasmettere, a differenza di quello che avviene con TDM nella commutazione di circuito.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220921094950.png)
La maggior parte dei commutatori di pacchetto utilizza la trasmissione store-and-forward, ovvero che chi inoltra un pacchetto deve riceverlo per intero prima di cominciare a trasmettere sul collegamento in uscita.
Dato che occorrono L/R secondi per trasmettere (push out) un pacchetto di L bit su un collegamento in uscita da R bit/s, se viene inviato un pacchetto di L bit su un canale con velocità di R bps, il tempo di trasmissione risulta pari a L/R secondi. Ad esempio:
- L = 12 kbit
- R = 1,5 Mbit/s
- Tempo di trasmissione = L/R = 8 millisecondi
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220921095017.png)
Il tempo di trasmissione totale è 3L/R (supponendo che il ritardo di propagazione sia zero), questo il perchè il router ha bisogno di tempo per analizzare ogni pacchetto e capire dove instradarlo, 3L perchè abbiamo 3 collegamenti.
Congestione
Dato che ogni commutatore di pacchetto connette più collegamenti, per ciascuno mantiene un buffer di output (detto anche coda di output) per conservare i pacchetti che sta per inviare su quel collegamento. Un pacchetto che deve essere inviato attraverso un collegamento occupato dalla trasmissione di un altro, deve attendere nella coda di output. Questo porta a dei ritardi di accodamento nei buffer di output, perché la dimensione di questi buffer è finita. In questo caso si verificherà una perdita di pacchetto, ovvero che verrà eliminato o il pacchetto in arrivo o uno di quelli che si trova già in coda.
Commutazione di pacchetto e commutazione di circuito
Supponiamo che gli utenti condividano un collegamento da 1 Mbps e che ogni utente generi dati ad una velocità costante di 100 kbps, ma ogni utente è attivo solo per il 10% del tempo. La commutazione di circuito può supportare simultaneamente solo 10 (= 1 Mbps/100 kbps) utenti, mentre con la commutazione di pacchetto la probabilità che un determinato utente sia attivo è pari al 10%. Se sono presenti 35 utenti, la probabilità di avere 11 o più utenti attivi in contemporanea è pari alla distribuzione binomiale:
Quindi la probabilità che si crei una congestione con la commutazione di pacchetto è molto bassa, perciò molti più utenti possono trasmettere contemporaneamente. Inoltre è più semplice, perché non necessita di uno scambio di messaggi per riservare risorse (dato che sono condivise), se si verificano congestioni, ritardo e perdita di pacchetti, sono presenti dei protocolli per il trasferimento affidabile dei dati e per prevenire o controllare la congestione.
1.3.3 Una rete di reti
Una possibile struttura di internet è quella a maglia, ma non è vantaggiosa perché si avrebbe un unico ISP globale ed ogni ISP di accesso dovrebbe avere un collegamento diretto con quello globale, rendendo i collegamenti altamente costosi. La struttura utilizzata è invece quella gerarchica.
In tutto il mondo esistono circa una dozzina di ISP di primo livello (come Verizon, Sprint, AT&T, Orange, Deutsche Telekom, Telecom Italia Sparkle) che hanno una copertura nazionale o internazionale, e che comunicano tra di loro come "pari"(peer).
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220921163212.png)
Agli ISP di primo livello sono connessi gli ISP di secondo livello che hanno una copertura nazionale o distrettuale, ma si possono connettere solo ad alcuni ISP di primo livello. Hanno però la possibilità di interconnettersi con altri ISP di livello 2.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220921163808.png)
Vi sono poi gli ISP di terzo livello (detti anche ISP di accesso) che hanno una copertura locale e che si connettono con gli ISP di secondo livello. Perciò l'ISP di accesso paga l'ISP regionale, che a sua volta paga il suo ISP di primo livello. Le cose in realtà sono ulteriormente complicate, perché un ISP di accesso può anche connettersi direttamente a un ISP di primo livello, oppure un ISP regionale abbastanza grande, che magari copre la nazione, può interconnettere altri ISP regionali più piccoli. Tra i vari ISP vi è anche una competizione, in base al rapporto prezzo e servizi che offrono.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220921170657.png)
Per costruire una rete che sia più simile all’Internet odierna dobbiamo aggiungere i Pop, il multi-homing, il peering e gli IXP.
- I Pop (point of presence) sono un gruppo di router vicini tra loro nella rete del provider, tramite il quale gli ISP clienti possono connettersi al fornitore
- Il multi-homing (o multi-home) è una modalità che consiste nel connettersi a due o più ISP fornitori (es due regionali o due regionali e uno di primo livello), permettendo la comunicazione anche in caso di guasto di un suo fornitore
- Il peering è una connessione diretta tra due ISP di pari livello gerarchico a zero costi, in modo che tutto il traffico tra di essi passi attraverso una connessione diretta piuttosto che transitare da un intermediario
- IXP (Internet exchange point) è un infrastruttura fisica che permette a diversi ISP di scambiare traffico internet, ovvero fare peering, tra di loro
Per descrivere l'internet odierna bisogna aggiungere le reti che si occupano di distribuire contenuti (content provider networks). Google è uno degli esempi di tali reti, che si è creato la propria rete privata e quando possibile si connette direttamente con gli ISP di livello inferiore.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220921174729.png)
Quando c'è necessità è possibile creare una connessione diretta anche tra ISP di secondo livello, senza che si rivolgano obbligatoriamente agli ISP di primo livello.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220921175737.png)
1.4 Ritardi, perdite e throughput nelle reti a commutazione di pacchetto
Dato che ogni pacchetto passa attraverso una serie di router subisce vari tipi di ritardo, i principali sono il ritardo di elaborazione, il ritardo di accodamento, il ritardo di trasmissione e il ritardo di propagazione, che complessivamente formano il ritardo totale di nodo.
Un pacchetto inviato attraversa il router A verso il router B, ma il collegamento in uscita dal router A verso il router B è preceduto da una coda, Quando un pacchetto arriva al router A, il router ne esamina l'intestazione per determinare il collegamento in uscita che porta al router B. Un pacchetto può essere trasmesso solo se non ci sono altri pacchetti in fase di trasmissione e se non esistono pacchetti che lo precedono nella coda. Se il collegamento è momentaneamente occupato o se altri pacchetti sono accodati, l’ultimo pacchetto arrivato si accoderà nei buffer (memoria dei router). Questo accade quando il tasso di arrivo dei pacchetti sul collegamento eccede la capacità di evaderli del router e dei collegamenti di uscita.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220921190211.png)
1. Ritardo di elaborazione
Il ritardo di elaborazione è il tempo richiesto per esaminare l’intestazione del pacchetto e per determinare dove dirigerlo, ovvero la porta o il canale di uscita, includendo anche il tempo richiesto per controllare i bit che sono stati trasmessi in modo errato. Dopo l'elaborazione, il router dirige il pacchetto verso la coda che precede il collegamento al router B.
2. Ritardo di accodamento
Una volta in coda, il pacchetto subisce un ritardo di accodamento mentre attende di essere trasmesso sul collegamento. Questo ritardo sarà lungo quanti sono i pacchetti che lo precedono e che sono in attesa di essere trasmessi sullo stesso collegamento, creando una congestione.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220922171914.png)
3. Ritardo di trasmissione (L/R)
Assumendo che i pacchetti vengano serviti in base all'ordine di arrivo, un pacchetto può essere trasmesso solo dopo la trasmissione di tutti quelli che lo hanno preceduto. Sia L la lunghezza del pacchetto in bit e R bit/s la frequenza di trasmissione del collegamento dal router A al router B, il ritardo di trasmissione è L/R, ovvero il tempo richiesto per trasmettere tutti i bit del pacchetto sul collegamento.
4. Ritardo di propagazione (d/s)
Una volta immesso sul collegamento, il tempo che impiega un bit per propagarsi fino al router B è detto ritardo di propagazione. Questo ritardo è dato da d/s, dove d è la distanza tra i due router ed s è la velocità di propagazione del bit nel collegamento che è di circa di
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220922173758.png)
Confronto tra ritardo di trasmissione e di propagazione
Il ritardo di trasmissione è la quantità di tempo impiegata dal router per trasmettere in uscita il pacchetto, che dipende dalla lunghezza del pacchetto e dalla velocità di trasmissione del collegamento. Il ritardo di propagazione invece è il tempo richiesto per la propagazione di un bit da un router a quello successivo e dipende dalla distanza tra i due router, ma non dalla lunghezza del pacchetto e neanche dalla velocità di trasmissione del collegamento.
Se prendiamo come esempio un'autostrada, con tratti di 100 km tra un casello e l'altro, si presuppone che le auto viaggiano (si propagano) alla velocità di 100 km/h ed il casello serve (trasmette) un'auto ogni 12 secondi. Se consideriamo le auto come i bit e l'insieme come un pacchetto, il tempo che occorre perché le 10 auto si trovino di fronte al casello è:
- tempo richiesto al casello per trasmettere l'intero gruppo di macchine sull'autostrada:
sec - tempo richiesto a un'auto per viaggiare dall'uscita di un casello fino al casello successivo:
hr
Quindi il tempo è di 62 minuti.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220922193224.png)
Se ora le auto si propagano alla velocità di 1000 km/h, al casello occorre un 1 minuto per servire ciascuna auto. Dopo 7 minuti, la prima auto sarà al secondo casello e tre auto saranno ancora in coda davanti al primo casello. Stessa cosa vale per il bit di un pacchetto che può arrivare al secondo router prima che il pacchetto sia stato interamente trasmesso dal primo router.
https://www.ccs-labs.org/teaching/rn/animations/propagation/
Ritardo di un nodo
= ritardo di elaborazione (pochi microsecondi) = ritardo di accodamento (dipende dalla congestione) = ritardo di trasmissione (L/R, significativo sui collegamenti a bassa velocità) = ritardo di propagazione (da pochi microsecondi a centinaia di millisecondi)
Un altro ritardo del router è dovuto al ritardo di accesso al mezzo.
Il ritardo di accodamento è quello più complesso perché può variare da pacchetto a pacchetto. Ad esempio se arrivano in una coda vuota 10 pacchetti, il primo non subirà ritardo di accodamento, mentre il ritardo dell'ultimo sarà piuttosto grande. Perciò si fa solitamente uso di misure statistiche, quali il ritardo di accodamento medio, la varianza del ritardo di accodamento e la probabilità che il ritardo di accodamento superi un valore fissato. Lo si considera rilevante in base alla velocità di arrivo del traffico alla coda, dalla velocità di trasmissione del collegamento e dalla natura del traffico entrante, ossia se il traffico arriva periodicamente o a raffiche.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220924223422.png)
Denotiamo con A la velocità media di arrivo dei pacchetti nella coda, espressa in pacchetti al secondo, con R la velocità di trasmissione, ossia la velocità (bit/s) alla quale i bit vengono trasmessi in uscita dalla coda e supponiamo che la lunghezza di ogni pacchetto sia di L bit. La velocità media di arrivo dei bit in coda è di
Supponiamo che due host, A e B, siano separati da 20.000 chilometri, connessi da un collegamento diretto R = 2 Mbit/s e che la velocità di propagazione lungo il collegamento sia di
Si preferisce un prodotto banda-ritardo basso, così si avrà un basso ritardo di propagazione.
1.4.3 Ritardo end-to-end
Consideriamo ora il ritardo dalla sorgente alla destinazione.
Traceroute
Traceroute è un programma diagnostico che fornisce una misura del ritardo dalla sorgente al router lungo i percorsi internet punto-punto verso la destinazione. Quando un utente specifica il nome di un host di destinazione, il programma invia 3 pacchetti speciali alla destinazione e, durante il loro percorso verso la destinazione, essi passano attraverso una serie di router. Quando un router N riceve uno di questi pacchetti marcato con N, fa ritornare all'origine un breve messaggio contenente il nome e l'indirizzo del router, senza instradarlo verso la destinazione. L'host registra il tempo intercorso tra l’invio di un pacchetto e la ricezione del corrispondente messaggio di ritorno, memorizzandone anche il nome e l’indirizzo del router (o del destinatario) che restituisce il messaggio. In questo modo l'origine può ricostruire il percorso dei pacchetti, potendo anche determinare i ritardi di andata e ritorno per tutte le tratte.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220924234932.png)
Perdita dei pacchetti
Dato che le code hanno capacità finita, i ritardi dei pacchetti non tendono all'infinito (intensità del traffico a 1) perché un pacchetto può trovare la coda (detta anche buffer) piena. Quando ciò accade, il router lo scarta e quindi va perso. Il pacchetto però può essere ritrasmesso dal nodo precedente, dal sistema terminale che lo ha generato o non essere ritrasmesso affatto.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925004723.png)
1.4.4 Throughput nelle reti di calcolatori
Il throughput è la frequenza (dati/unità di tempo) alla quale una certa unità dati viene trasferita tra mittente e ricevente. Si suddivide in:
- throughput istantaneo: velocità in bit/s in ogni istante di tempo alla quale il ricevente sta ricevendo il file
- throughput medio: velocità del trasferimento del file di F bit in T secondi, ovvero F/T bit/s, che a differenza di quello istantaneo si determina in un periodo di tempo più lungo
L'unita di misura è di {Bit, file, pacchetti...} per
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925141850.png)
Consideriamo il throughput per un trasferimento di file dal server al client, in particolare
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925141954.png)
Nel caso in cui
Se invece
Nel caso di internet lo scenario è simile al seguente, dove il throughput end to end per ciascuna connessione è il
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925144956.png)
1.5 Livello dei protocolli e loro modelli di servizio
Dato che internet appare come un sistema molto complicato, perché presenta molti componenti come host, router, varie tipologia di mezzi di trasmissione, applicazioni, protocolli, hardware, software, vi è l'esigenza di organizzare l'architettura delle reti.
1.5.1 Architettura a livelli
Per descrivere l'architettura delle reti possiamo utilizzare un'analogia con la nostra vita. Ad esempio, le funzionalità di una linea aerea possono essere viste come una divisione in livelli, dove ogni livello fornisce il proprio servizio effettuando determinate azioni all'interno, ma che rimangono le stesse (per esempio, a livello di gate, l’entrata e l’uscita dei passeggeri dall’aereo). Ogni livello, oltre a svolgere determinate azioni all'interno, utilizza anche i servizi del livello immediatamente inferiore (i passeggeri, imbarcati nell'aereo dal livello gate, vengono trasferiti dalla pista di decollo alla pista d’atterraggio).
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925153409.png)
Un’architettura a livelli consente di discutere una parte specifica e ben definita di un sistema articolato e complesso, rendendo più facile cambiare l’implementazione del servizio, fornito da un determinato livello, grazie all'introduzione della modularità. Questo non avrà conseguenze per gli altri livelli e permetterà di mantenere invariata l'architettura, fino a quando il livello fornisce lo stesso servizio allo strato superiore e utilizza gli stessi servizi dello strato inferiore.
Stratificazione dei protocolli
La medesima struttura avviene per i protocolli di rete che sono suddivisi in livelli (layer). Ognuno di essi svolge un servizio a un livello superiore, utilizzando i servizi del livello inferiore e servendosi delle proprie funzionalità: si tratta del modello di servizio.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925163540.png)
Il layer N+1 sa solo che i layer inferiori offrono il servizio "N", i layer da N in giù sono una "black box" per le entità al layer N+1, ovvero che vengono considerati come fossero N perchè N+1 non è in grado di vederli.
Un servizio del layer N è offerto all'entita di layer N+1 attraverso un'interfaccia di programmazione chiamata Service Access Point (SAP).
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925163833.png)
Il modello a strati può essere pericoloso perché un livello può duplicare le funzionalità di quello inferiore, ovvero che faccia le stesse cose.
Lo scambio di informazioni tra entità dello stesso layer è regolata da un protocollo che considerati assieme sono detti pila di protocolli.
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925172812.png)
Stack di protocolli Internet
La pila di protocolli di internet consiste in cinque livelli:
- Applicazione: di supporto alle applicazioni di rete (FTM, SMTP, HTTP, DNS)
- Trasporto: trasferimento dei messaggi di livello applicazione tra il modulo client e server di un'applicazione (TCP, UDP)
- Rete: instradamento dei datagrammi dall'origine al destinatario (IP, protocolli di instradamento)
- Link (collegamento): instradamento dei datagrammi attraverso una serie di commutatori di pacchetto (PPP, Ethernet)
- Fisico: trasferimento dei singoli bit
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925173848.png)
Il modello OSI è invece composto da sette livelli, ma lo stack internet è privo del livello presentazione (consente alle applicazioni di interpretare il significato dei dati come cifratura, compressione, convenzioni specifiche della macchina) e del livello sessione (sincronizzazione, controllo, recupero dei dati).
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925180753.png)
Layer 7: Applicazione
Il livello applicazione fornisce alle applicazioni i mezzi per scambiarsi i dati ed include molti protocolli quali:
- HTTP che consente la richiesta e il trasferimento dei documenti web
- SMTP che consente il trasferimento dei messaggi di posta elettronica
- FTP che consente il trasferimento di file tra due sistemi remoti
- POP3, IMAP, SMTP per le email
- P2P per il file sharing peer-to-peer
- SSH per stabilire una sessione remota cifrata
Un protocollo a livello di applicazione è distribuito su più sistemi periferici: un’applicazione in un sistema periferico, tramite il protocollo, scambia pacchetti di informazioni con l’applicazione in un altro sistema periferico. Questi pacchetti di informazione (data unit) di livello 7 si chiamano messaggi.
Layer 6: Presentazione
- Rappresentazione e codifica/decodifica dei dati
- Conversione dati dal formato host (little endian, ovvero byte meno significativo a destra) al formato della rete (big endian, ovvero byte più significativo a sinistra)
- Criptatura
- Spesso integrato con l'applicazione
Layer 5: Sessione
- Stabilisce e mantiene una sessione di comunicazione tra due entità. Una sessione può essere composta da più connessioni dati che richiedono qualità differenti (es. videochiamata)
- Gestisce lo scambio dati in modo che lo si possa interrompere, riprendere e terminare
- Maschera eventuali disconnessioni al layer 4
- Spesso integrato con l'applicazione
Layer 4: Trasporto
Il livello trasporto trasferisce i messaggi del livello di applicazione tra punti periferici gestiti dalle applicazioni e risolve i problemi di qualità del servizio del livello 3.
In internet ci sono due protocolli di trasporto: TCP e UDP.
TCP
Fornisce alle applicazioni un servizio orientato alla connessione, garantendo la consegna dei messaggi ed eseguendo un controllo di flusso (ossia la corrispondenza tra le velocità di mittente e destinatario). Inoltre segmenta (per poi ricomporre) i dati lunghi in segmenti più piccoli e fornisce un meccanismo di controllo della congestione, in modo che una sorgente regoli la propria velocità trasmissiva quando la rete è congestionata. Verifica che i pacchetti vengano riordinati nella giusta sequenza in ricezione prima di passarli al livello superiore. Attua il multiplexing e demultiplexing di applicazioni.
UDP
Fornisce alle proprie applicazioni un servizio non orientato alla connessione che è davvero un servizio senza affidabilità, né controllo di flusso e della congestione.
I pacchetti di livello 4 sono chiamati segmenti.
Layer 3: Rete
Il livello di rete trasferisce i pacchetti a livello di rete, detti datagrammi (o pacchetti), da un host a un altro. Fornisce diversi servizi:
- Connection-less: reti orientate al datagramma dove ogni pacchetto viene instradato indipendentemente
- Connection oriented: reti a circuito virtuale in cui viene stabilita una rotta all'inizio delle operazioni di trasferimento dati e la si mantiene per tutti i pacchetti da trasferire
Questo livello comprende il protocollo IP, che definisce i campi dei datagrammi e come i sistemi periferici e i router agiscono su tali campi, e deve essere supportato da tutti gli apparati che presentano un livello di rete. Contiene anche svariati protocolli di instradamento che determinano i percorsi che i datagrammi devono seguire tra la sorgente e la destinazione, con un eventuale (non obbligatorio) controllo della congestione.
Layer 2: Collegamento
Il livello di collegamento fornisce dei servizi al livello di rete per poter trasferire un pacchetto da un nodo (host o router) a quello successivo tra entità di livello 2 e si occupa della correzione di errori avvenuti al livello 1. In base al protocollo utilizzato si può garantire la consegna affidabile tra un nodo e l'altro (diverso dal TCP che è da un sistema periferico a un altro) ed un controllo con correzione degli errori di trasmissione.
Contiene due sottolivelli:
- LLC sublayer che fornisce meccanismi di multiplexing e demultiplexing che consentono a diversi protocolli di rete di nascondere le proprie differenze agli altri per poter coesistere all'interno di una rete multipunto e di essere trasportati sullo stesso supporto di rete.
- MAC (Medium access control) sublayer che controlla l'hardware responsabile dell'interazione con il mezzo di trasmissione.
Esempi di livello di collegamento includono Ethernet e Wi-Fi. I pacchetti di livello 2 sono chiamati frame.
Layer 1: Fisico
Il livello fisico si occupa di trasferire i singoli bit del frame da un nodo a quello successivo, trasmettendoli sul mezzo di comunicazione che può essere elettrico, elettromagnetico, luminoso o sonoro. Fornisce i mezzi per creare, mantenere e distruggere connessioni fisiche, definisce proprietà come la codifica, livelli di tensione elettrica corrispondenti ai bit, la modulazione…
Data Units (DUs)
In un sistema con M layer, i dati da trasmettere costituiscono una M-SDU (Service Data Unit di Layer M). A ciò il layer aggancia la propria M-PCI (Protocol Control Information) ed il risultato è una M-PDU (Protocol Data Unit), ovvero l'unità di informazione scambiata tra due peer entity (entità di pari livello). Essa è composta da SDU, che sono i dati da trasmettere, e da PCI, che sono i dati di controllo come mittente e destinatario.
Ogni layer considera la PDU del layer superiore come una busta chiusa:
- la N-PDU del layer N è la (N-1)-SDU del layer N-1 che, preponendo la (N-1)-PCI, diventa la (N-1)-PDU
- al ricevitore si inverte il processo ed ogni layer rimuove le proprie PCI
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925222548.png)
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925222612.png)
1.5.2 Incapsulamento
/%F0%9F%8C%90%20Reti/_images/Pasted%20image%2020220925221130.png)
Il messaggio a livello di applicazione M inviato dall'host mittente viene passato al livello di trasporto che gli concatena informazioni aggiuntive (header =