Appunti di Reti di Elaboratori
Indice
1 Introduzione 3
1.1 Struttura Gerarchica di Internet . . . . . . . . . . . . . . . . . . 5
1.2 Ritardi e Perdite . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Stack Protocollare . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Livello Applicativo 9
2.1 Protocollo Applicativo . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Paradigma Client-Server . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Protocolli Client-Server: HTTP . . . . . . . . . . . . . . . 12
2.2.2 Protocolli Client-Server: DNS . . . . . . . . . . . . . . . . 14
2.2.3 Protocolli Client-Server: FTP . . . . . . . . . . . . . . . . 16
2.2.4 Protocolli Client-Server: SMTP . . . . . . . . . . . . . . . 17
2.3 Paradigma Peer-to-Peer (P2P) . . . . . . . . . . . . . . . . . . . 18
3 Livello di Trasporto 21
3.1 Protocolli di Trasporto: UDP . . . . . . . . . . . . . . . . . . . . 22
3.2 Protocolli di Trasporto: TCP . . . . . . . . . . . . . . . . . . . . 23
3.2.1 Reliable Data Transfer (RDT) . . . . . . . . . . . . . . . 23
3.2.2 Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.3 Flow Control e Congestion Control . . . . . . . . . . . . . 26
4 Livello Network 28
4.1 Composizione dei Router . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Protocolli di Networking: IP . . . . . . . . . . . . . . . . . . . . 31
4.2.1 IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3 Protocolli di Routing . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Livello Data-Link 38
5.1 Servizi Data-Link: Error Detection ed Error Correction . . . . . 39
5.1.1 Error Detection and Correction: Bit di Parità . . . . . . . 40
5.1.2 Error Detection and Correction: Distanza di Hamming . . 40
5.1.3 Error Detection and Correction: Cyclic Redundancy Check
(CRC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Multiple Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1
5.2.1 Protocolli Channel Partitioning: TDMA/FDMA . . . . . 43
5.2.2 Protocolli Random Access: Slotted ALOHA . . . . . . . . 43
5.2.3 Protocolli Taking Turns: CSMA e CSMA/CD . . . . . . . 44
5.2.4 Protocolli Taking Turns: Polling . . . . . . . . . . . . . . 44
5.2.5 Protocolli taking Turns: Token Passing . . . . . . . . . . 44
5.3 Indirizzamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3.1 Protocolli di Indirizzamento: ARP . . . . . . . . . . . . . 45
5.4 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4.1 Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4.2 VLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5 Point-to-Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.5.1 Protocolli Point-to-Point: PPP . . . . . . . . . . . . . . . 48
6 Wireless e Reti Mobili 50
6.1 IEEE 802.11 Wireless LAN (Wi-Fi) . . . . . . . . . . . . . . . . . 51
6.1.1 IEEE 802.11: Collision Avoidance . . . . . . . . . . . . . 52
6.1.2 IEEE 802.11: Header . . . . . . . . . . . . . . . . . . . . . 53
6.2 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.3 Reti Cellulari e Reti Mobili . . . . . . . . . . . . . . . . . . . . . 54
6.3.1 Mobilità e Routing . . . . . . . . . . . . . . . . . . . . . . 55
6.3.2 Mobile IP . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.3 Mobilità nelle Reti Cellulari . . . . . . . . . . . . . . . . . 56
7 Multimedia 57
7.1 Multimedia Networking Applications . . . . . . . . . . . . . . . . 57
7.1.1 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.1.2 Immagini . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.1.3 Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.2 Streaming Stored Video . . . . . . . . . . . . . . . . . . . . . . . 60
7.2.1 Protocolli di Streaming: Dynamic Adaptive Streaming
over HTTP (DASH) . . . . . . . . . . . . . . . . . . . . . 61
7.2.2 Content Distribution Network (CDN) . . . . . . . . . . . 62
7.3 Voice Over IP (VoIP) . . . . . . . . . . . . . . . . . . . . . . . . 63
7.3.1 Skype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7.4 Conversational . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
7.4.1 Protocolli Conversational: Real Time Protocol (RTP) . . 65
7.4.2 Protocolli Conversational: Session Initiation protocol (SIP) 66
A Sicurezza 67
A.1 Crittografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
A.1.1 Cifratura a Chiave Simmetrica: Data Encryption Stan-
dard (DES) . . . . . . . . . . . . . . . . . . . . . . . . . . 68
A.1.2 Cifratura a Chiave Simmetrica: Advanced Encryption Stan-
dard (AES) . . . . . . . . . . . . . . . . . . . . . . . . . . 69
A.1.3 Cifratura a Chiave Asimmetrica: Rivest, Shamir, Adelson
Algorithm (RSA) . . . . . . . . . . . . . . . . . . . . . . . 69
2
Capitolo 1
Introduzione
Cominciamo elencando le componenti principali che una rete deve avere e che
costituiscono la più grande rete di elaboratori esistente al mondo: Internet.
1. End Systems o Host:
Un host è una macchina su cui gira un’applicazione e che si connette alla
rete per scambiare, inviare o richiedere informazioni con altri host.
2. Communication Links:
Un communication link è un mezzo fisico che interconnette due host o un
host ad un router. Può essere di vario tipo: da un cavo di rame, a onde
radio, fino ad un satellite. Ogni communication link ha una larghezza di
banda, che ne influenza l’efficienza nel trasmettere informazioni.
3. Router:
Non tutti gli host sono direttamete connessi tra di loro, specialmente
perché molti di essi sono fisicamente distanti. I router sono dei dispo-
sitivi che collegano uno o più host a formare una sottorete. Inoltre, un
router potrebbe anche essere collegato esternamente ad una rete più gran-
de (e.g. Internet). Il router si occupa di smistare i pacchetti in arrivo dalla
rete agli host collegati ad esso e di inoltrare nella rete i pacchetti ricevuti
dai medesimi host.
4. Protocolli:
Non una vera componente. Un protocollo è una specifica concettuale da
realizzare. Poiché, in una rete, molti host si scambiano informazioni tra
di loro (nel caso di Internet si parla di miliardi di dispositivi), è necessario
che queste informazioni vengano scritte e inviate in un certo modo, per
far sı̀ che la circolazione in rete, la ricerca del destinatario e la lettura e
comprensione delle informazioni avvenga nel modo più ordinato, efficiente
e chiaro possibile.
Grazie alla definizione delle componenti, possiamo definire Internet come
una rete di reti. Gli host sono collegati tra di loro a gruppi tramite un router.
3
Lo stesso router viene collegato ad una rete più grande formata da altri router
e host, occupandosi di smistare i pacchetti da e verso la rete esterna. Questa
rete, a sua volta, sarà gestita da un (o più) router e cosı̀ via, fino a formare
quella struttura che è Internet.
Figura 1.1: Il grafo della rete Internet. Oggi è molto più vasta di come è
rappresentata nell’immagine.
Una rete ha una topologia logica. Essa può essere rappresentata come un
grafo dove ogni nodo è un elemento di comunicazione della rete e un arco è un
qualsivoglia tipo di collegamento che mette in comunicazione due nodi.
Le applicazioni si affidano ai protocolli di rete per far sı̀ che alcuni servizi
possano essergli garantiti. Tra questi, principalmente, troviamo:
4
• Affidabilità:
Un protocollo si dice affidabile se garantisce che i dati inviati saranno
ricevuti dal destinatario e se tali dati saranno ricevuti in ordine di invio e
senza errori.
• Sicurezza:
Un protocollo si dice sicuro se garantisce almeno uno dei seguenti servizi:
confidenzialità, autenticazione e/o integrità del messaggio.
• Timing:
Un protocollo con garanzie di timing assicura che un messaggio inviato
venga ricevuto in un prefissato arco di tempo ∆t.
• Throughput:
Un protocollo che da garanzie di throughput assicura che la connessione
in entrata e in uscita manterrà una larghezza di banda minima R.
1.1 Struttura Gerarchica di Internet
La gestione di Internet è affidata ad alcune società, che si occupano di mantene-
re attiva la rete o di fornire il servizio Internet ad altri enti, sia direttamente, sia
tramite società più piccole (e.g. compagnie telefoniche). Tali società, sia quelle
maggiori, sia quelle minori, vengono dette Internet Service Provider (ISP).
Internet è costruito su una struttura gerarchica tra gli ISP.
Al centro della gestione della rete ci sono i Tier 1 ISP. Questi sono direttamente
connessi tra loro e, a livello di connessione, si trattano da eguali.
Subito sotto sono i Tier 2, ognuno direttamente connesso al proprio Tier 1 e,
tramite questo, alla rete Internet. Gli ISP Tier 2 pagano ai Tier 1 il servizio di
connessione verso il resto della rete, quindi sia con i Tier 2 connessi allo stesso
Tier 1, sia con i Tier 2 connessi ad un Tier 1 diverso. Alcuni Tier 2 possono
avere connessioni dirette tra loro e/o con più di un Tier 1.
Infine vi sono i Tier 3 e i Local ISP. Questi sono gli ISP che forniscono i punti
di accesso direttamente agli host. Anche questi possono essere collegati diret-
tamente tra loro, se fisicamente vicini, e si collegano alla rete tramite i Tier 2
(per i Local ISP potrebbe essere presente un passaggio intermedio attraverso un
Tier 3).
In sostanza, un pacchetto inviato da un host, passa attraverso tutta questa
struttura gerarchica (o attraverso una parte di essa) prima di raggiungere il suo
destinatario.
1.2 Ritardi e Perdite
In una rete, specie se vasta come Internet, è praticamente impossibile che tutte
le informazioni inviate vengano anche ricevute. Ancor più impossibile, le infor-
mazioni inviate non possono essere ricevute istantaneamente, neanche se due
5
Figura 1.2: La struttura gerarchica di Internet attraverso gli ISP.
host sono connessi fisicamente l’uno all’altro.
Sia gli host, sia i router hanno un buffer dove i pacchetti in arrivo vengono
immagazzinati in attesa di essere processati o inoltrati. Poiché la memoria è
finita, se un buffer si riempie, i pacchetti vengono perduti, in quanto non posso-
no essere immagazzinati. A livello puramente teorico, si supponga che un host
abbia una velocità di elaborazione v bit/sec e arrivino ad esso, con velocità
e v esprime il numero di
costante, un certo numero p bit/sec. Il rapporto α = e
p
≥
bit elaborati per ogni bit che arriva. Se α 1, allora il numero di dati nel buffer
non aumenterà e, addirittura, potrebbe diminuire. Se, invece, α < 1, allora
l’elaborazione dei dati non sarà sufficientemente veloce, il buffer si riempirà e i
dati in eccesso verranno perduti.
Ma perdere pacchetti non è l’unico problema. I dati in uscita non possono
fisicamente arrivare istantaneamente all’host ricevente. Essi vengono rallentati
da numerosi fattori.
• Processing Delay δ :
proc
Tale ritardo è causato dall’host o dal router che deve processare i dati e
trasformarli in pacchetti, in modo da poterli spedire o inoltrare. Il tempo
di attesa dipende fortemente dal quantitativo di dati da processare, oltre
che dalla potenza computazionale del mittente.
• Queuing Delay δ :
queue
Tale ritardo è dovuto all’impossibilità di inserire istantaneamente i pac-
chetti sull’output link. Dopo essere stati processati, i pacchetti finiscono
6
in una coda. Il pacchetto successivo viene rimosso dalla coda solo quando
quello precedente è stato definitivamente inserito nell’output link. Questo
ritardo dipende dalla velocità di trasmissione dell’output link.
• Transmission Delay δ :
tran
Questo ritardo dipende totalmente dalla tecnologia impiegata per l’output
link ed è l’unico calcolabile a priori. L’output link ha una certa velocità
di trasmissione, sia essa R bit/sec. Se un pacchetto di dimensione L
bit viene inviato attraverso questo collegamento, il tempo impiegato per
L secondi.
caricare completamente i dati sul link sarà R
• Propagation Delay δ :
prop
Questo ritardo è anch’esso dovuto alla tecnologia scelta per creare il col-
legamento. In particolare, si tratta del ritardo dovuto all’attraversamento
del link. Pur esistendo come ritardo, si noti che il ritardo di propagazione
è talmente basso da potersi considerare trascurabile nella maggior parte
dei casi.
Il ritardo totale δ per trasmettere un pacchetto da un nodo ad uno adiacente
è, pertanto: δ = δ + δ + δ + δ
proc queue tran prop
Notare come questo ritardo sia quello tra un nodo e il successivo, mentre una
comunicazione potrebbe attraversare un cammino contentente diversi nodi.
Per calcolare il ritardo δ di una comunicazione su un cammino di N nodi è
necessario calcolare: −1
N
X δ
δ = i
i=1
dove δ è il ritardo per inviare i pacchetti dall’i-esimo nodo all’(i + 1)-esimo e i
i
nodi 1 e N sono, rispettivamente, il nodo mittente e il nodo destinatario.
Consideriamo un host A che invia un file di dimensione F bit ad un host B.
A comincerà ad inviare il file ad un certo tempo t e B riceverà l’ultimo bit del
0
file ad un certo tempo t . Si dice Throughput medio il rapporto:
1 F
T =
m −
t t
1 0
Inoltre si definisce Throughput istantaneo il throughput misurato ad un dato
istante di tempo.
Concludendo, si dice bottleneck un collegamento all’interno di un cammino
tale che è il più lento al suo interno. Se tale collegamento ha una velocità di
trasmissione R , allora l’intera trasmissione avrà una velocità di trasmissione
min
massima di R . Se il collegamento è condiviso da N trasmissioni, allora la
min R .
velocità di trasmissione si abbassa min
N 7
1.3 Stack Protocollare
Poiché la struttura di una rete è particolarmente variegata e complessa, si rende
necessario suddividere i vari momenti di una connessione tra due host o, più in
generale, tra due nodi. Riuscire a rendere questa divisione il più totale possibile
ha numerosi vantaggi. Un particolare livello non deve preoccuparsi di che tipo
di dati ha ricevuto dal livello precedente né, tantomeno, deve preoccuparsi di
come il livello successivo li porterà a destinazione. Ogni livello dà un certo tipo
di garanzie al livello precedente, a seconda della sua implementazione. Il livello
precedente, a questo punto, potrà preoccuparsi solamente dei suoi compiti.
Inoltre, questo tipo di approccio rende una connessione una struttura modu-
lare, più semplice da modificare o da mantenere, oltre a permettere svariati
numeri di combinazioni di protocolli ai vari livelli, lasciando allo sviluppatore
dell’applicazione la totale libertà su come realizzare la connessione.
• Livello Applicativo:
In questo livello, i dati vengono generati ed elaborati secondo una sintassi
precisa definita dal protocollo applicativo.
• Livello di Trasporto:
Questo livello si occupa della trasmissione dei dati dall’host mittente
all’host ricevente. In particolare, si preoccupa di come trasmettere i dati.
• Livello Network:
Questo livello si preoccupa di trovare un cammino, all’interno della rete,
che colleghi i due host che stanno comunicando.
• Livello Data-Link:
Qiesto livello si occupa di trasmettere i dati da un nodo nella rete fino a
quello successivo che gli sia adiacente.
• Livello Fisico:
Il livello fisico si occupa della trasmissione dei bit. Quali tecnologie usare,
come codificare fisicamente i bit e via dicendo.
Per poter essere indipendenti l’uno dall’altro, i livelli hanno bisogno di un
header che contenga delle informazioni utili alla trasmissione dei dati. Ogni
livello impacchetta i dati ricevuti dal precedente, aggiunge il suo header e passa
il tutto al livello successivo. Questo porta al primo svantaggio della stratifica-
zione: le dimesioni dei singoli pacchetti possono aumentare anche di molto.
Inoltre, bisogna anche considerare che i livelli non riescono ad essere tutti
completamente indipendenti, quindi il principio di stratificazione non viene
rispettato totalmente. 8
Capitolo 2
Livello Applicativo
Il livello applicativo è il livello più alto dello stack protocollare. In questo
livello i dati vengono generati dalle applicazioni e vengono poi passati ai livelli
sottostanti per poter essere inviati.
In generale, un determinato processo che vuole inviare dei dati ad un altro
processo, deve distinguere due casi:
• il secondo proccesso gira sullo stesso host su cui gira il primo:
in questo caso lo scambio di dati avviene tramite delle funzionalità fornite
dal sistema operativo proprio per la comunicazione tra processi sulla stessa
macchina.
• i processi sono eseguiti su host differenti:
in questo caso i due processi comunicano utilizzando un protocollo ap-
plicativo che, in generale, definisce in che modo il messaggio deve essere
scritto rispettando un determinato formato, un certo ordine dei messaggi
e via dicendo.
Generalmente, il processo viene eseguito da un utente che utilizza l’host e che
non interagisce direttamente con il protocollo applicativo, ma lo fa tramite uno
user agent, vale a dire un programma che implementa un’interfaccia utente che fa
da tramite tra la definizione del messaggio rispettando il protocollo applicativo
e l’utente stesso. 9
2.1 Protocollo Applicativo
Un protocollo applicativo è parte di un’applicazione. Un’applicazione avrà delle
determinate specifiche per lo scambio di messaggi, pertanto verrà scelto un
appropriato protocollo per fare in modo che tali necessità vengano soddisfatte.
Un protocollo, in particolare, definisce:
• il tipo di messaggi che due processi si scambiano, anche in base al loro
ruolo;
• la sintassi che tali messaggi devono rispettare, vale a dire i campi che i
messaggi contengono e in che modo tali campi vanno riempiti;
• la semantica dei campi del messaggio, vale a dire il significato delle infor-
mazioni conte
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.