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
- 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 Standard (DES) . . . . . . . . . . . . . . . . . . . . . . . . . . 68
- A.1.2 Cifratura a chiave simmetrica: Advanced Encryption Standard (AES) . . . . . . . . . . . . . . . . . . . . . . . . . 69
- A.1.3 Cifratura a chiave asimmetrica: Rivest, Shamir, Adelson Algorithm (RSA) . . . . . . . . . . . . . . . . . . . . . . 69
Capitolo 1
Introduzione
Cominciamo elencando le componenti principali che una rete deve avere e che costituiscono la pì grande rete di elaboratori esistente al mondo: Internet.
- 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. - Communication Links:
Un communication link ̀ un mezzo fisico che interconnette due host o un host ad un router. Pù 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. - Router:
Non tutti gli host sono direttamente connessi tra di loro, specialmente perché molti di essi sono fisicamente distanti. I router sono dei dispositivi che collegano uno o pì host a formare una sottorete. Inoltre, un router potrebbe anche essere collegato esternamente ad una rete pì grande (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. - 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 pì 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.
Lo stesso router viene collegato ad una rete pì 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 pì) router e cosı̀ via, fino a formare quella struttura che ̀ Internet.
Figura 1.1: Il grafo della rete Internet. Oggi ̀ molto pì vasta di come ̀ rappresentata nell’immagine.
Una rete ha una topologia logica. Essa pù 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:
- 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 dà 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 mantenere attiva la rete o di fornire il servizio Internet ad altri enti, sia direttamente, sia tramite societ̀ pì 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 pì 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 direttamente 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 pì impossibile, le informazioni inviate non possono essere ricevute istantaneamente, neanche se due host sono connessi fisicamente l’uno all’altro.
Figura 1.2: La struttura gerarchica di Internet attraverso gli ISP.
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 possono 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̀ costante, un certo numero p bit/sec. Il rapporto α = e v esprime il numero di 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 pacchetti sull’output link. Dopo essere stati processati, i pacchetti finiscono 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 caricare completamente i dati sul link sar̀ L/R secondi. - Propagation Delay δ:
prop
Questo ritardo ̀ anch’esso dovuto alla tecnologia scelta per creare il collegamento. 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: δ = −1NX δi=1 i
Dove δi ̀ il ritardo per inviare i pacchetti dall’i-esimo nodo all’(i + 1)-esimo e 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 t0 e B ricever̀ l’ultimo bit del file ad un certo tempo t1. Si dice Throughput medio il rapporto: Tm = F / t1 − t0
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 pì lento al suo interno. Se tale collegamento ha una velocit̀ di trasmissione Rmin, allora l’intera trasmissione avr̀ una velocit̀ di trasmissione massima di Rmin. Se il collegamento ̀ condiviso da N trasmissioni, allora la velocit̀ di trasmissione si abbassa Rmin/N.
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, pì in generale, tra due nodi. Riuscire a rendere questa divisione il pì 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 modulare, pì 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:
Questo 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 stratificazione: le dimensioni 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.
Capitolo 2
Livello applicativo
Il livello applicativo ̀ il livello pì 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 processo 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 applicativo 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.
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 informazioni 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.