Copertina
Autore Larry L. Peterson
CoautoreBruce S. Davie
Titolo Reti di calcolatori
EdizioneApogeo, Milano, 2004, Idee & Strumenti , pag. 694, cop.fle., dim. 167x240x28 mm , Isbn 978-88-503-2158-2
OriginaleComputer Networks: A System Approach [2003]
CuratoreMarcello Dalpasso
TraduttoreMarcello Dalpasso
LettoreRenato di Stefano, 2004
Classe informatica: reti
PrimaPagina


al sito dell'editore


per l'acquisto su IBS.IT

per l'acquisto su BOL.IT

per l'acquisto su AMAZON.IT

 

| << |  <  |  >  | >> |

Indice

Presentazione della terza edizione                      xiii
Presentazione della prima edizione                        xv
Presentazione dell'edizione italiana                    xvii
Prefazione                                               xix

Capitolo 1
Principi fondamentali                                      1

Problema  Costruire una rete                               1
1.1   Applicazioni                                         2
1.2   Requisiti                                            3
1.2.1 Connessione                                          5
1.2.2 Condivisione di risorse efficiente
      dal punto di vista dei costi                         8
1.2.3 Supporto di servizi comuni                          12
1.3   Architettura di rete                                16
1.3.1 Stratificazione e protocol1i                        16
1.3.2 L'architettura OSI                                  22
1.3.3 L'architettura Internet                             23
l.4   Implementazione di software di rete                 26
1.4.1 Interfaccia per la programmazione
      di applicazioni (socket)                            26
1.4.2 Un esempio di applicazione                          29
1.4.3 Problemi nell'implementazione di protocol1i         31
1.5   Prestazioni                                         35
1.5.1 Ampiezza di banda e latenza                         35
1.5.2 Prodotto ritardo x ampiezza di banda                40
1.5.3 Reti ad alta velocità                               41
1.5.4 Prestazioni richieste dalle applicazioni            43
1.6   Riepilogo                                           44
Problema aperto  La rete pervasiva                        45
Ulteriori letture                                         46
Esercizi                                                  48

Capitolo 2
Reti a connessione diretta                                55

Problema  Connettere fisicamente i calcolatori            55
2.1   Elementi hardware elementari                        56
2.1.1 Nodi                                                56
2.1.2 Linee di collegamento                               58
2.2   Codifica (NRZ, NRZI, Manchester, 4B/5B)             64
2.3   Tramatura (framing)                                 67
2.3.1 Protocolli orientati ai byte (BISYNC, PPP, DDCMP)   69
2.3.2 Protocolli orientati ai bit (HDLC)                  70
2.3.3 Framing basato sul clock (SONET)                    71
2.4   Rilevazione d'errore                                75
2.4.1 Parità bidimensionale                               76
2.4.2 Algoritmo di checksum di Internet                   77
2.4.3 Verifica di ridondanza ciclica (CRC)                78
2.5   Trasmissione affidabile                             83
2.5.1 Stop-and-wait                                       84
2.5.2 Sliding window                                      86
2.5.3 Canali logici concorrenti                           95
2.6   Ethernet (802.3)                                    96
2.6.1 Proprietà fisiche                                   96
2.6.2 Protocollo di accesso                               98
2.6.3 L'esperienza di Ethernet                           103
2.7   Reti token ring (802.5 e FDDI)                     103
2.7.1 Proprietà fisiche                                  104
2.7.2 Controllo di accesso al mezzo in reti token ring   106
2.7.3 Gestione di una rete token ring                    108
2.7.4 Formato del frame                                  109
2.7.5 FDDI                                               110
2.8   Wireless (802.11)                                  114
2.8.1 Proprietà fisiche                                  114
2.8.2 Evitare le collisioni                              115
2.8.3 Sistema di distribuzione                           116
2.8.4 Formato del frame                                  118
2.9   Adattatori di rete                                 119
2.9.1 Componenti                                         119
2.9.2 Punto di vista dell'host                           120
2.9.3 Collo di bottiglia nella memoria                   125
2.10  Riepilogo                                          127
Problema aperto  Fa parte dell'hardware?                 128
Ulteriori letture                                        129
Esercizi                                                 130

Capitolo 3
Commutazione di pacchetto                                143

Problema  Non tutte le reti sono a connessione diretta   143
3.1   Commutazione e inoltro                             144
3.1.1 Datagrammi                                         146
3.1.2 Commutazione di circuito virtuale                  148
3.1.3 Instradamento dalla sorgente (source routing)      154
3.2   Commutatori per LAN e bridge                       156
3.2.1 Bridge ad apprendimento (learning bridge)          158
3.2.2 Algoritmo ad albero di copertura (spanning tree)   161
3.2.3 Broadcast e multicast                              165
3.2.4 Limiti dei bridge                                  166
3.3   Commutazione di celle (ATM)                        167
3.3.1 Celle                                              168
3.3.2 Segmentazione e ricostruzione                      173
3.3.3 Percorsi virtuali                                  178
3.3.4 Strati fisici per ATM                              178
3.3.5 ATM in una rete locale                             179
3.4   Implementazione e prestazioni                      184
3.4.1 Porte                                              185
3.4.2 Matrici di commutazione                            189
3.5   Riepilogo                                          192
Problema aperto  Il futuro di ATM                        193
Ulteriori letture                                        194
Esercizi                                                 195

Capitolo 4
Interconnessione di reti                                 203

Problema  Non esiste un'unica rete                       203
4.1   Semplice interconnessione di reti (IP)             204
4.1.1 Cos'è una internetwork?                            204
4.1.2 Modello di servizio                                206
4.1.3 Indirizzi globali                                  217
4.1.4 Inoltro di datagrammi in IP                        219
4.1.5 Traduzione di indirizzi (ARP)                      225
4.1.6 Configurazione di host (DHCP)                      229
4.1.7 Segnalazione di errori (ICMP)                      232
4.1.8 Reti virtuali e tunnel                             232
4.2   Instradamento (routing)                            235
4.2.1 La rete rappresentata con un grafo                 237
4.2.2 Vettore di distanza (RIP)                          238
4.2.3 Stato delle linee (OSPF)                           245
4.2.4 Metriche                                           253
4.2.5 Instradamento per host mobili                      256
4.3   La rete Internet globale                           261
4.3.1 Le sottoreti                                       262
4.3.2 Instradamento senza classi (CIDR)                  266
4.3.3 Instradamento interdominio (BGP)                   269
4.3.4 Aree di instradamento                              275
4.3.5 La versione 6 di IP (IPv6)                         277
4.4   Multicast                                          288
4.4.1 Multicast a stato delle linee                      289
4.4.2 Multicast a vettore di distanza                    290
4.4.3 Multicast indipendente dal protocollo (PIM)        293
4.5   Multiprotocol Label Switching (MPLS)               296
4.5.1 Inoltro basato sulla destinazione                  297
4.5.2 Instradamento esplicito                            302
4.5.3 Reti private virtuali e tunnel                     304
4.6   Riepilogo                                          308
Problema aperto  L'installazione di IPv6                 309
Ulteriori letture                                        309
Esercizi                                                 311

Capitolo 5
Protocolli di trasporto                                  325

Problema  Far comunicare i processi                      325
5.1   Semplice demultiplexing (UDP)                      326
5.2   Flusso affidabile di byte (TCP)                    329
5.2.1 Problemi end-to-end                                329
5.2.2 Formato del segmento                               332
5.2.3 Instaurazione e terminazione della connessione     334
5.2.4 Una rivisitazione dell'algoritmo sliding window    338
5.2.5 Stimolare la trasmissione                          343
5.2.6 Ritrasmissione adattativa                          346
5.2.7 Confini tra gruppi di dati (record)                349
5.2.8 Estensioni al protocollo TCP                       350
5.2.9 Scelte di progetto alternative                     351
5.3   Remote Procedure Call                              353
5.3.1 Trasferimento a blocchi (BLAST)                    355
5.3.2 Richiesta/Risposta (CHAN)                          361
5.3.3 Smistamento (SELECT)                               369
5.3.4 Mettere tutto insieme (SunRPC, DCE)                370
5.4   Prestazioni                                        377
5.5   Riepilogo                                          379
Problema aperto  Protocolli per applicazioni specifiche  380
Ulteriori letture                                        381
Esercizi                                                 382

Capitolo 6
Controllo della congestione e allocazione di risorse     391

Problema   Allocazione di risorse                        391
6.1   Problemi nell' allocazione delle risorse           392
6.1.1 Modello della rete                                 393
6.1.2 Tassonomia                                         396
6.1.3 Criteri di valutazione                             398
6.2   Politiche di gestione delle code                   401
6.2.1 FIFO                                               401
6.2.2 Fair queueing                                      403
6.3   Controllo di congestione in TCP                    407
6.3.1 Aumento additivo/diminuzione moltiplicativa        407
6.3.2 Partenza lenta                                     410
6.3.3 Ritrasmissione veloce e recupero veloce            414
6.4   Strategie per evitare la congestione               416
6.4.1 DECbit                                             417
6.4.2 Random early detection (RED)                       418
6.4.3 Impedire la congestione alla sorgente              424
6.5   Qualità di servizio                                430
6.5.1 Requisiti delle applicazioni                       431
6.5.2 Integrated Services (RSVP)                         436
6.5.3 Differentiated Services (EF, AF)                   445
6.5.4 Qualità di servizio in ATM                         449
6.5.5 Controllo di congestione basato su equazioni       452
6.6   Riepilogo                                          453
Problema aperto  All'interno e all'esterno della rete    454
Ulteriori letture                                        455
Esercizi                                                 456

Capitolo 7
Rappresentazione dei dati per la rete                    467

Problema  Come si trattano i dati?                       467
7.1   Formato di presentazione                           468
7.1.1 Tassonomia                                         470
7.1.2 Esempi (XDR, ASN.1, NDR)                           473
7.1.3 Linguaggi di marcatura (XML)                       477
7.2   Compressione dei dati                              480
7.2.1 Algoritmi di compressione
      senza perdita di informazione                      481
7.2.2 Compressione di immagini (JPEG)                    483
7.2.3 Compressione video (MPEG)                          488
7.2.4 Trasmettere MPEG attraverso la rete                492
7.2.5 Compressione audio (MP3)                           496
7.3   Riepilogo                                          498
Problema aperto  Le reti di calcolatori e
      l'elettronica di consumo                           498
Ulteriori letture                                        499
Esercizi                                                 500

Capitolo 8
Sicurezza delle reti                                     505

Problema  Rendere sicuri i dati                          505
8.1   Algoritmi crittografici                            506
8.1.1 Requisiti                                          508
8.1.2 Cifratura a chiave segreta (DES)                   509
8.1.3 Cifratura a chiave pubblica (RSA)                  514
8.1.4 Algoritmi di Message Digest (MD5)                  516
8.1.5 Implementazione e prestazioni                      519
8.2   Strategie di sicurezza                             519
8.2.1 Protocolli di autenticazione                       519
8.2.2 Protocolli per l'integrità dei messaggi            522
8.2.3 Distribuzione di chiavi pubbliche (X.509)          526
8.3   Esempi di sistemi                                  528
8.3.1 Pretty Good Privacy (PGP)                          529
8.3.2 Secure Shell (SSH)                                 531
8.3.3 Sicurezza nello strato di trasporto
      (TLS, SSL, HTTPS)                                  533
8.3.4 Sicurezza per il protocollo IP (IPSEC)             537
8.4   Firewall                                           540
8.4.1 Firewall basati su filtri                          541
8.4.2 Firewall basati su proxy                           542
8.4.3 Limitazioni                                        544
8.5   Riepilogo                                          544
Problema aperto  Attacchi di tipo "Denial of Service"    545
Ulteriori letture                                        546
Esercizi                                                 547

Capitolo 9
Applicazioni                                             553

Problema  Ogni applicazione ha bisogno
      del proprio protocollo                             553
9.1   Servizio per i nomi (DNS)                          554
9.1.1 Gerarchia di domini                                555
9.1.2 Server per i nomi                                  556
9.1.3 Traduzione dei nomi                                559
9.2   Applicazioni tradizionali                          562
9.2.1 Posta elettronica (SMTP, MIME, IMAP)               563
9.2.2 World Wide Web (HTTP)                              570
9.2.3 Gestione della rete (SNMP)                         575
9.3   Applicazioni multimediali                          577
9.3.1 Real-time Transport Protocol (RTP)                 578
9.3.2 Controllo di sessione e controllo di chiamata
      (SDP, SIP, H 323)                                  588
9.4   Reti sovrapposte (overlay networks)                596
9.4.1 Reti sovrapposte per l'instradamento               598
9.4.2 Reti tra pari (peer-to-peer)                       605
9.4.3 Reti per la distribuzione di contenuti             613
9.5   Riepilogo                                          618
Problema aperto  Una nuova architettura di rete          618
Ulteriori letture                                        619
Esercizi                                                 621

Soluzioni di esercizi scelti                             627

Glossario                                                641

Bibliografia                                             665

Indice analitico                                         677
 

 

| << |  <  |  >  | >> |

Pagina XXI

L'impostazione del testo

In un settore soggetto a cambiamenti così repentini come quello delle reti di calcolatori, la cosa più importante che un libro può offrire è una visione prospettica, per distinguere ciò che è essenziale da ciò che non lo è, e ciò che è duraturo da ciò che è effimero. Forti della nostra esperienza più che ventennale nel condurre ricerche che hanno portato a nuovi sviluppi nelle tecnologie di rete e hanno contribuito alla produzione commerciale di nuove apparecchiature, nonché nell'insegnare a studenti universitari di ogni livello le ultime novità e tendenze delle reti, abbiamo sviluppato una prospettiva, da noi chiamata approccio sistemistico (system approach), che costituisce il principio ispiratore di questo libro. Questo approccio ha alcune conseguenze.

* Invece di accettare in modo dogmatico ciò che esiste, noi partiamo dalle fondamenta e ripercorriamo insieme a voi il processo cognitivo che ha prodotto le reti di oggi: questo ci consente di spiegarvi perché le reti sono come le vediamo. La nostra esperienza ci ha insegnato che, una volta capiti a fondo i concetti basilari, vi sarà molto semplice assimilare qualsiasi nuovo protocollo con cui dovrete avere a che fare.

* Nonostante il libro sia organizzato secondo il tradizionale modello a strati delle reti, iniziando dai livelli inferiori e procedendo verso l'alto lungo la pila di protocolli, non seguiamo rigidamente l'approccio a livelli. Molti argomenti, di cui il controllo di congestione e la sicurezza sono validi esempi, hanno riflessi su molti livelli della gerarchia, per cui li presentiamo al di fuori del tradizionale modello a strati. In sintesi, siamo convinti che la stratificazione sia ottima come strumento di servizio ma carente come linea guida: molto spesso è maggiormente utile una prospettiva a tutto campo, di tipo end-to-end.

* Invece di illustrare il funzionamento dei protocolli in astratto, utilizziamo i protocolli più importanti tra quelli in uso ai giorni nostri (molti dei quali fanno parte dell'architettura TCP/IP e di Internet) per far vedere come funzionano le reti nella pratica, consentendoci questo di introdurre nella discussione esperienze del mondo reale.

* Anche se ai livelli più bassi le reti sono costituite da elementi hardware che si possono facilmente reperire nei negozi di articoli per computer e da servizi di comunicazione che si possono noleggiare da una compagnia telefonica, è il software che è in grado di fornire servizi innovativi e di adattarsi rapidamente ai cambiamenti. Per questa ragione, porremo molta enfasi sul modo in cui il software di rete viene realizzato, piuttosto che accontentarci di una descrizione astratta degli algoritmi, presentando anche porzioni di codice estratte da una reale pila di protocolli per farvi vedere come si possano implementare alcuni protocolli ed i relativi algoritmi.

* Le reti sono composte di molti elementi costitutivi e, nonostante sia necessario astrarre dai particolari ininfluenti mentre si risolve un particolare problema, è altresì essenziale comprendere come tutti questi elementi si compongano per rendere funzionante una rete. Per questo motivo impiegheremo parecchio tempo ad illustrare il comportamento complessivo delle reti e non soltanto quello dei loro componenti presi singolarmente, in modo che si possa capire come funziona una rete nella sua interezza, comprendendo applicazioni e hardware.

* L'approccio sistemistico impone di effettuare studi sperimentali, per poi utilizzare i dati raccolti sia per analizzare quantitativamente le diverse opzioni di progetto sia per svolgere una funzione di guida nell'ottimizzazione dell'implementazione: questa enfasi sull'analisi empirica pervade l'intero libro.

* Le reti sono come tutti gli altri sistemi di elaborazione: come i sistemi operativi, le architetture dei processori, i sistemi distribuiti e paralleli, le reti sono grandi e complesse. Per poter gestire questa complessità, i progettisti di sistemi spesso identificano un insieme di regole progettuali, che noi porremo in evidenza a mano a mano che vengono presentate nel libro, corredandole di esempi relativi, ovviamente, alle reti di calcolatori.

| << |  <  |  >  | >> |

Pagina 55

2 Reti a connessione diretta



Problema
Connettere fisicamente i calcolatori

La più semplice rete immaginabile è quella in cui tutti gli host sono direttamente connessi mediante un mezzo fisico, che può essere un cavo o una fibra e può estendersi su una piccola superficie (come un edificio) o su un'ampia area (ad esempio transcontinentale). Tuttavia, connettere due o più nodi con un adatto supporto fisico è soltanto il primo passo: prima che i nodi si possano scambiare pacchetti con successo occorre risolvere cinque ulteriori problemi.

Il primo problema è la codifica (encoding) dei bit sul cavo o sulla fibra in modo che possano essere compresi dall'host ricevente. Il secondo consiste nel delineare la sequenza di bit trasmessi lungo il collegamento fisico in modo che rappresentino un messaggio completo da consegnare al nodo terminale: si tratta del problema della tramatura (framing) e spesso i messaggi consegnati al nodo terminale vengono chiamati trame (frame). Dato che a volte i frame vengono corrotti durante la trasmissione, il terzo problema da risolvere consiste nel rilevare questi errori e nell'intraprendere le azioni appropriate: si tratta del problema della rilevazione d'errore (error detection). Il quarto problema si occupa di far apparire affidabile un collegamento nonostante il fatto che di tanto in tanto i frame risultino corrotti. Infine, in quei casi in cui il mezzo fisico è condiviso da più host (diversamente da quanto accade per un semplice collegamento punto-punto), è necessario mediare l'accesso al collegamento stesso: si parla di problema di controllo di accesso al mezzo (media access control).

Nonostante questi cinque problemi (codifica, tramatura, rilevazione d'errore, consegna affidabile e accesso mediato) possano essere affrontati in astratto, sono argomenti molto concreti che vengono risolti in modi diversi da differenti tecnologie di rete. Questo capitolo considera tali problemi nel contesto di quattro specifiche tecnologie di rete: collegamenti punto-punto, reti CSMA (Carrier Sense Multiple Access, di cui Ethernet è l'esempio più noto), reti token ring (i cui esempi più famosi sono lo standard IEEE 802.5 e FDDI) e reti wireless (senza cavi, di cui 802.11 è lo standard emergente). L'obiettivo di questo capitolo è di fornire una panoramica delle tecnologie di rete disponibili e di affrontare, al tempo stesso, questi cinque problemi fondamentali.

Prima di addentrarsi nei problemi specifici della connessione di host questo capitolo inizia con un analisi degli elementi costitutivi che verranno utilizzati: nodi e linee di collegamento. Quindi, analizziamo in dettaglio i primi tre problemi (codifica, tramatura e rilevazione d'errore) nel contesto di un semplice collegamento punto-punto. Le tecniche presentate in queste tre sezioni sono generali e, quindi, applicabili anche alle reti ad accesso multiplo. Successivamente viene preso in esame il problema della consegna affidabile dei messaggi: dato che l'affidabilità al livello della connessione fisica non viene di solito realizzata nelle reti ad accesso condiviso, questa trattazione riguarda soltanto i collegamenti punto-punto. Infine, tratteremo il problema dell'accesso al mezzo per quanto riguarda le tecnologie CSMA, token ring e wireless.

Notate che queste cinque funzioni sono generalmente implementate in un adattatore di rete, una scheda che da una parte si inserisce nel bus di input/output (I/O) di un host e dall'altra parte si collega al mezzo fisico. In altre parole, sono gli adattatori che si scambiano i bit, mentre i nodi si scambiano frame corretti. Questo adattatore funziona sotto il controllo di software in esecuzione nel nodo (il device driver), software che, a sua volta, viene tipicamente rappresentato come il protocollo di livello più basso nel grafo dei protocolli. Il capitolo si conclude con un esempio concreto di un adattatore di rete e delinea il device driver per tale adattatore.

| << |  <  |  >  | >> |

Pagina 201

4 Interconnessione di reti



Problema
Non esiste un'unica rete

Abbiamo visto come costruire una rete usando linee di collegamento punto-punto, mezzi fisici condivisi e commutatori. Il problema, ora, è che molte persone hanno costruito reti con queste diverse tecnologie e vogliono tutte essere in grado di comunicare l'una con l'altra, non soltanto con gli altri utenti di una singola rete. Questo capitolo tratta i problemi che nascono dall'interconnessione di reti diverse.

Esistono due importanti problemi da risolvere quando si connettono reti: l' eterogeneità e la dimensione. Detto semplicemente, il problema dell'eterogeneità consiste nel fatto che gli utenti di una rete di un certo tipo vogliono essere in grado di comunicare con gli utenti di reti di tipi diversi. Per complicare ulteriormente il problema, l'instaurazione di una connessione fra host appartenenti a due reti diverse può richiedere l'attraversamento di parecchie altre reti interposte, ciascuna delle quali può essere di un tipo ancora diverso. Queste diverse reti possono essere reti Ethernet, reti di tipo token ring, linee di collegamento punto-punto oppure reti commutate di vari tipi, ciascuna delle quali probabilmente avrà il proprio schema di indirizzamento, i propri protocolli di accesso al mezzo, i propri modelli di servizio e così via. L'obiettivo dell'eterogeneità è quello di fornire un servizio tra host utile e ben prevedibile, usando questo groviglio di reti diverse. Per comprendere il problema della dimensione della rete, è utile considerare la crescita di Internet, che per 20 anni ha pressappoco raddoppiato le proprie dimensioni ogni anno. Una crescita di questo tipo ci pone di fronte a parecchie sfide. Una di queste è l' instradamento (routing): come è possibile trovare un percorso efficiente attraverso una rete con milioni o, forse, miliardi di nodi? Un problema strettamente correlato a questo è l' indirizzamento, cioè il compito di fornire identificatori appropriati a tutti questi nodi.

Questo capitolo prende in esame una serie di approcci all'interconnessione di reti ed i problemi che devono essere risolti. Nel farlo, traccia l'evoluzione di Internet e della sua architettura TCP/IP, con l'obiettivo di capire in dettaglio i problemi dell'eterogeneità e della dimensione, insieme alle tecniche generali che vi si possono applicare.

La prima sezione presenta il protocollo IP (Internet Protocol) e mostra come lo si possa usare per costruire una rete interconnessa eterogenea e scalabile. La sezione contiene una discussione del modello di servizio di Internet, che è la chiave per la sua capacità di gestire l'eterogeneità, e descrive anche come lo schema di indirizzamento gerarchico di Internet abbia aiutato tale rete a scalare le proprie dimensioni fino a quelle di oggi, piuttosto grandi.

Un aspetto centrale nella costruzione di grandi reti eterogenee interconnesse è il problema di trovare percorsi efficienti e privi di cicli attraverso le reti componenti. La seconda sezione introduce i principi dell'instradamento ed esplora i problemi di scalabilità nei protocolli di routing, usando come esempi alcuni dei protocollo di routing di Internet.

La terza sezione parla di alcuni problemi (sempre più gravi) che hanno afflitto Internet negli ultimi anni e presenta varie tecniche che sono state utilizzate per risolverli. L'esperienza accumulata usando tali tecniche ha portato alla progettazione di una nuova versione di IP, la versione 6 (IPv6). In tutte queste discussioni vedremo l'importanza della gerarchia nella costruzione di reti scalabili.

Il capitolo si conclude prendendo in considerazione un paio di miglioramenti significativi per le possibilità di Internet. Il primo, la trasmissione multicast, è un miglioramento del modello di servizio di base. Mostreremo come la trasmissione multicast, che consente di consegnare pacchetti in modo efficiente ad un insieme di ricevitori, può essere incorporata in Internet e descriveremo alcuni protocolli di routing che sono stati sviluppati per fornire supporto al multicast. Il secondo miglioramento, MPLS (Multiprotocol Label Switching), modifica il meccanismo di inoltro delle reti IP: tale modifica ha consentito l'introduzione di alcuni cambiamenti nel modo in cui si effettua l'instradamento IP e nei servizi offerti dalle reti IP.

| << |  <  |