|
|
| << | < | > | >> |IndicePresentazione 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 XXIL'impostazione del testoIn 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 55Problema 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 201Problema 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.
|