Nozioni fondamentali sul protocollo TCP/IP per Microsoft Windows: Capitolo 1 - Introduzione al protocollo TCP/IP http://technet.microsoft.com/it-it/library/bb726991.aspx Capitolo 1 - Introduzione al protocollo TCP/IP Abstract Nel presente capitolo vengono fornite informazioni introduttive su TCP/IP (Transmission Control Protocol/Internet Protocol), sia in quanto suite di protocolli standard del settore sia in quanto protocollo supportato dai sistemi operativi Microsoft® Windows Server™ 2003 e Windows® XP. Per quanto riguarda la suite di protocolli TCP/IP, è necessario che gli amministratori di rete comprendano l'evoluzione negli anni passati, i processi attuali relativi agli standard e i termini comuni utilizzati per descrivere le periferiche di rete e le parti di una rete. Per quanto riguarda i componenti TCP/IP di Windows Server 2003 e Windows XP, è necessario che gli amministratori di rete comprendano le differenze di installazione e configurazione tra i componenti basati su IPv4 (Internet Protocol version 4) e quelli basati su IPv6 (Internet Protocol version 6), nonché gli strumenti principali per la risoluzione dei problemi. In questa pagina Obiettivi del capitolo Cronologia relativa a TCP/IP Processi relativi agli standard Internet Terminologia relativa al protocollo TCP/IP Componenti TCP/IP in Windows Riepilogo del capitolo Glossario del capitolo Obiettivi del capitolo Al termine di questo capitolo, si sarà in grado di eseguire le seguenti attività: Descrivere le finalità e l'evoluzione della suite di protocolli TCP/IP. Descrivere i processi relativi agli standard Internet e lo scopo di un documento RFC (Request for Comments). Definire i termini comuni relativi a TCP/IP. Descrivere i vantaggi dei componenti TCP/IP in Windows Server 2003 e Windows XP. Descrivere le modalità di configurazione del componente TCP/IP basato su IPv4 in Windows. Descrivere le modalità di installazione e configurazione del componente TCP/IP basato su IPv6 in Windows. Elencare e definire l'insieme di file per la risoluzione dei nomi e gli strumenti diagnostici utilizzati dai componenti TCP/IP in Windows. Verificare i componenti TCP/IP di Windows tramite gli strumenti Ipconfig e Ping. Installare e utilizzare Network Monitor. Cronologia relativa a TCP/IP TCP/IP (Transmission Control Protocol/Internet Protocol) è una suite di protocolli standard del settore progettata per reti di grandi dimensioni costituite da segmenti connessi tramite router. TCP/IP è il protocollo utilizzato in Internet, dove sono raccolte migliaia di reti dislocate in tutto il mondo che connettono strutture di ricerca, università, biblioteche, enti governativi, società private e singoli utenti. L'origine di TCP/IP risale al progetto di ricerca DARPA (Department of Defense (DoD) Advanced Research Projects) condotto dal Dipartimento della Difesa degli Stati Uniti tra la fine degli anni '60 e l'inizio degli anni '70. Di seguito è riportato un elenco di alcune importanti tappe del protocollo TCP/IP: Nel 1970 gli host ARPANET iniziano a utilizzare il protocollo NCP (Network Control Protocol), una forma preliminare di quello che sarebbe diventato il protocollo TCP (Transmission Control Protocol). Nel 1972 viene introdotto il protocollo Telnet. Telnet viene utilizzato per l'emulazione di terminale, al fine di connettere sistemi diversi. All'inizio degli anni '70 tali sistemi erano rappresentati da tipi diversi di computer mainframe. Nel 1973 viene introdotto il protocollo FTP (File Transfer Protocol). Tale protocollo viene utilizzato per lo scambio di file tra sistemi diversi. Nel 1974 viene specificato in modo dettagliato il protocollo TCP (Transmission Control Protocol). TCP sostituisce NCP offrendo servizi migliorati e affidabili per le comunicazioni. Nel 1981 viene specificato in modo dettagliato il protocollo IP (Internet Protocol), detto anche IPv4 (IP version 4). Tale protocollo fornisce funzionalità di indirizzamento e routing per il recapito end-to-end. Nel 1982 l'organismo per la difesa delle comunicazioni (DCA, Defense Communications Agency) e l'ARPA costituiscono la suite di protocolli TCP/IP, formata dai protocolli TCP (Transmission Control Protocol) e IP (Internet Protocol). Nel 1983 ARPANET passa da NCP a TCP/IP. Nel 1984 viene introdotto il protocollo DNS (Domain Name System). Tale protocollo consente di risolvere i nomi di dominio, ad esempio www.esempio.com, in indirizzi IP, ad esempio 192.168.5.18. Nel 1995 i provider di servizi Internet (ISP, Internet Service Provider) iniziano a offrire l'accesso a Internet ad aziende e singoli utenti. Nel 1996 viene introdotto il protocollo HTTP (Hypertext Transfer Protocol). Tale protocollo viene utilizzato nel World Wide Web. Nel 1996 viene pubblicato il primo insieme di standard IPv6 (IP version 6). Per ulteriori informazioni su questi protocolli e sui livelli dell'architettura del protocollo TCP/IP, vedere il capitolo 2 "Panoramica dell'architettura della suite di protocolli TCP/IP". Con il perfezionamento degli standard IPv6 e la loro adozione su scala sempre più vasta, i capitoli del presente documento sono basati sui presupposti seguenti: TCP/IP è l'intera suite di protocolli definita per l'utilizzo in reti private e Internet. TCP/IP include entrambi i protocolli IPv4 e IPv6. IPv4 rappresenta il livello Internet della suite di protocolli TCP/IP, originariamente definito per l'utilizzo in Internet. Attualmente il protocollo IPv4 è molto diffuso. IPv6 rappresenta il livello Internet della suite di protocolli TCP/IP, sviluppato di recente. Il protocollo IPv6 si sta attualmente diffondendo. IP è il termine utilizzato per descrivere le funzionalità o gli attributi che si applicano sia a IPv4 che a IPv6. Un indirizzo IP può ad esempio essere un indirizzo IPv4 o un indirizzo IPv6. Nota Poiché il termine IP attualmente indica il protocollo IPv4 nella maggior parte delle implementazioni TCP/IP, in alcuni casi il termine IP verrà utilizzato per indicare IPv4. I riferimenti di questo tipo verranno resi chiari nel contesto della discussione. Quando possibile, nei capitoli del presente documento in linea verrà utilizzato il termine IP (IPv4). Processi relativi agli standard Internet Poiché TCP/IP è il protocollo utilizzato in Internet, la sua evoluzione si è basata su standard fondamentali creati e adottati per più di trent'anni. Il futuro del protocollo TCP/IP è in stretta correlazione con le innovazioni e la gestione di Internet, per cui vengono continuamente sviluppati nuovi standard. Sebbene Internet e le relative tecnologie non siano di proprietà di alcuna organizzazione, vi sono alcune organizzazioni che si occupano della supervisione e del controllo di questi nuovi standard, ad esempio l'Internet Society e l'IAC (Internet Architecture Board). L'Internet Society (ISOC) è stata creata nel 1992 ed è un'organizzazione globale responsabile per le applicazioni e le tecnologie di comunicazione di rete Internet. Sebbene lo scopo principale della società sia quello di incoraggiare lo sviluppo e la disponibilità di Internet, l'organizzazione è anche responsabile dello sviluppo degli standard e dei protocolli che stanno alla base del funzionamento di Internet. L'ISOC sponsorizza l'IAB (Internet Architecture Board), un gruppo di consulenza tecnica incaricato di impostare gli standard Internet, pubblicare le specifiche RFC e sovrintendere ai processi relativi agli standard Internet. L'IAB controlla gli enti seguenti: L'autorità IANA (Internet Assigned Number Authority) sovrintende e coordina l'assegnazione degli identificatori di protocollo utilizzati in Internet. L'IRTF (Internet Research Task Force) coordina tutti i progetti di ricerca relativi a TCP/IP. L'IETF (Internet Engineering Task Force) si occupa di risolvere i problemi tecnici e soddisfare le nuove esigenze in ambito Internet, nonché di sviluppare protocolli e standard Internet. I gruppi di lavoro IETF definiscono gli standard noti come RFC. Documenti RFC (Request For Change) Gli standard relativi al protocollo TCP/IP vengono pubblicati in una serie di documenti detti RFC (Requests for Comments). Tali documenti descrivono il funzionamento interno di Internet. Gli standard TCP/IP vengono sempre pubblicati in documenti RFC, sebbene non tutti i documenti di questo tipo contengano specifiche di standard. Alcuni documenti RFC forniscono esclusivamente informazioni generali, dati sperimentali o nozioni storiche. Inizialmente un documento RFC viene creato come bozza Internet, solitamente sviluppata da uno o più autori in un gruppo di lavoro IETF. Un gruppo di lavoro IETF è un gruppo di singoli individui con compiti correlati a una specifica area tecnologica della suite di protocolli TCP/IP. Il gruppo di lavoro IPv6 si occupa ad esempio di favorire l'avanzamento degli standard IPv6. Dopo un periodo di revisione e dopo avere ottenuto il consenso, l'IETF pubblica una versione finale della bozza Internet assegnando ad essa un numero RFC. Ai documenti RFC viene inoltre assegnato uno dei cinque livelli di classificazione elencati nella tabella 1-1. Livello di classificazione Descrizione Required (Necessario) È necessario provvedere all'implementazione in tutti i gateway e gli host basati su TCP/IP. Recommended È consigliabile che le specifiche RFC vengano implementate in tutti i gateway e gli host (Consigliato) basati su TCP/IP. I documenti RFC consigliati vengono in genere implementati. L'implementazione è facoltativa. L'applicazione della specifica è stata accettata ma il suo Elective (Facoltativo) utilizzo non si è mai diffuso su vasta scala. Limited use (Utilizzo La specifica non è destinata all'utilizzo su vasta scala. limitato) Not recommended (Non Non è consigliata l'implementazione. consigliato) Tabella 1-1 Livelli di classificazione per i documenti RFC Se un documento RFC viene considerato come standard, passa attraverso le fasi di sviluppo, verifica e accettazione. Per quanto riguarda i processi relativi agi standard Internet, tali fasi vengono formalmente definite livelli di maturità. Agli standard Internet viene associato uno dei tre livelli di maturità elencati nella tabella 1-2. I livelli di maturità sono determinati dal gruppo di lavoro IETF che si occupa del documento RFC e non dipendono dai livelli di classificazione. Livello di Descrizione maturità Proposed Standard Una specifica di tipo Proposed Standard è in genere stabile, ha consentito di determinare scelte di (Standard progettazione note, è stata compresa a fondo, è stata sottoposta ad approfondite analisi e ha proposto) suscitato un discreto interesse nella comunità, che ne indica il valore. Una specifica di tipo Draft Standard deve essere compresa e conosciuta a fondo per raggiungere Draft Standard una certa stabilità, sia per quanto riguarda la semantica che in qualità di base per lo sviluppo di (Standard bozza) un'implementazione. Una specifica di tipo Internet Standard, detta anche semplicemente Standard, è caratterizzata da un Internet Standard alto livello di maturità tecnica e da un'opinione generale che il protocollo o il servizio specificato (Standard Internet) offra vantaggi significativi alla comunità Internet. Tabella 1-2 Livelli di maturità degli standard Internet Se è necessario apportare modifiche a uno standard basato su RFC, l'IETF pubblica una nuova bozza Internet e, dopo un periodo di revisioni, un nuovo documento RFC con un nuovo numero. Il documento RFC originale non viene mai aggiornato. È pertanto necessario verificare di disporre del documento RFC più aggiornato per un determinato argomento o standard. Nel corso dei capitoli del presente documento in linea si fa ad esempio riferimento a diversi documenti RFC. Qualora si desideri verificare i dettagli tecnici di uno standard Internet nel relativo documento RFC, è necessario assicurarsi di disporre del documento più recente relativo allo standard. È possibile vedere i documenti RFC tramite il sito http://www.ietf.org/rfc.html (informazioni in lingua inglese). Terminologia relativa al protocollo TCP/IP In base agli standard Internet, per fare riferimento a concetti ed elementi di rete correlati al protocollo TCP/IP, viene utilizzato un insieme di termini specifici. Tali termini serviranno da fondamento per i capitoli successivi. Nella figura 11 sono illustrati i componenti di una rete IP. Figura 1-1 Elementi di una rete IP I concetti e i termini comuni utilizzati in ambito TCP/IP sono i seguenti: Nodo Qualsiasi periferica, inclusi router e host, in cui è in esecuzione un'implementazione di IP. Router Nodo in grado di inoltrare pacchetti IP non esplicitamente indirizzati a se stesso. In una rete IPv6 un router è inoltre in grado di annunciare la sua presenza e le informazioni sulla configurazione dell'host. Host Nodo non in grado di inoltrare pacchetti IP non esplicitamente indirizzati a se stesso, ovvero una periferica non di tipo router. Un host rappresenta generalmente l'origine e la destinazione del traffico IP. Un host elimina automaticamente il traffico ricevuto non esplicitamente indirizzato a se stesso. Protocollo di livello superiore Protocollo superiore a IP, che utilizza il protocollo IP come mezzo di trasporto. Esempi di questo tipo sono i protocolli a livello di Internet, quale ICMP (Internet Control Message Protocol) e i protocolli a livello di trasporto, quali TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). I protocolli di livello applicazione che utilizzano TCP e UDP come mezzo di trasporto non sono tuttavia considerati protocolli di livello superiore. I protocolli FTP (File Transfer Protocol) e DNS (Domain Name System) fanno parte di questa categoria. Per ulteriori informazioni sui livelli della suite di protocolli TCP/IP, vedere il capitolo 2 "Panoramica dell'architettura della suite di protocolli TCP/IP". Segmento LAN Parte di una subnet costituita da un unico supporto racchiuso tra bridge o switch di livello 2. Subnet Uno o più segmenti LAN racchiusi tra router e che utilizzano lo stesso prefisso dell'indirizzo IP. Altri termini utilizzati per indicare una subnet sono segmento di rete e collegamento. Rete Due o più subnet connesse da router. Un altro termine utilizzato per indicare la rete è Internet. Nodo adiacente Nodo connesso alla stessa subnet di un altro nodo. Interfaccia Rappresentazione di una connessione fisica o logica di un nodo a una subnet. Una scheda di rete è un esempio di interfaccia fisica. Un'interfaccia tunnel utilizzata per l'invio di pacchetti IPv6 in una rete IPv4 è un esempio di interfaccia logica. Indirizzo Identificatore che può essere utilizzato come origine o destinazione di pacchetti IP e che viene assegnato a livello di Internet a un'interfaccia o a un insieme di interfacce. Pacchetto PDU (Protocol Data Unit) esistente a livello di Internet composto da payload e intestazione IP. Componenti TCP/IP in Windows Nella tabella 1-3 sono elencati i vantaggi della suite di protocolli TCP/IP e dell'inserimento di componenti TCP/IP in Windows. Vantaggi della suite di protocolli TCP/IP Protocollo per reti aziendali standard e instradabile, che costituisce il più completo e diffuso tra i protocolli disponibili. Tutti i sistemi operativi moderni supportano il protocollo TCP/IP e nelle reti private di grandi dimensioni tale protocollo viene utilizzato per la maggior parte del traffico. Tecnologia per la connessione di sistemi diversi. Molti protocolli applicativi TCP/IP sono stati creati per l'accesso ai dati e il loro trasferimento tra sistemi diversi. Questi protocolli includono HTTP, FTP e Telnet. Infrastruttura client/server per più piattaforme scalabile e robusta. Metodo di accesso a Internet. Vantaggi dei componenti TCP/IP in Windows I componenti TCP/IP in Windows consentono la connettività e la comunicazione di rete a livello aziendale per computer basati su Windows e non. I componenti TCP/IP in Windows offrono connettività basata sugli standard alle piattaforme con sistemi operativi diversi. I componenti TCP/IP in Windows supportano le API di Windows Sockets, utilizzate dagli sviluppatori per creare applicazioni client/server. I computer basati su Windows sono pronti per l'utilizzo di Internet. Tabella 1-3 Vantaggi della suite di protocolli TCP/IP e dei componenti TCP/IP in Windows Windows include componenti TCP/IP basati sia su IPv4 che su IPv6. Configurazione del componente TCP/IP basato su IPv4 in Windows Il componente Protocollo Internet (TCP/IP) basato su IPv4 disponibile in Windows Server 2003 e Windows XP è installato per impostazione predefinita e viene visualizzato come componente TCP/IP nella cartella Connessioni di rete. A differenza delle versioni precedenti di Windows, non è possibile disinstallare il componente Protocollo Internet (TCP/IP). È tuttavia possibile ripristinarne la configurazione predefinita utilizzando il comando netsh interface ip reset. Per ulteriori informazioni sui comandi Netsh, vedere Guida in linea e supporto tecnico di Windows Server 2003 o Windows XP. Il componente Protocollo Internet (TCP/IP) può essere impostato per ottenere la configurazione in modo automatico o da impostazioni specificate manualmente. Per impostazione predefinita, il componente è impostato per la configurazione automatica dell'indirizzo. Nella figura 1-2 è illustrata la scheda Generale della finestra di dialogo Proprietà - Protocollo Internet (TCP/IP). Figura 1-2 Scheda Generale della finestra di dialogo relativa alle proprietà del componente Protocollo Internet (TCP/IP). Configurazione automatica Se si imposta la configurazione automatica, all'avvio di Windows tramite il componente Protocollo Internet (TCP/IP) viene eseguito un tentativo di individuare un server DHCP (Dynamic Host Configuration Protocol) e ottenere una configurazione. In molte reti TCP/IP vengono utilizzati i server DHCP configurati per l'allocazione delle informazioni sulla configurazione TCP/IP ai client nella rete. Se tramite il componente Protocollo Internet (TCP/IP) non viene individuato un server DHCP, vengono verificate le impostazioni nella scheda Configurazione alternativa. Questa scheda è illustrata nella figura 1-3. Figura 1-3 Scheda Configurazione alternativa del componente Protocollo Internet (TCP/IP) Nella scheda sono disponibili due opzioni: Indirizzo IP privato automatico Scegliendo questa opzione, viene utilizzata la funzionalità APIPA (Automatic Private IP Addressing). Tramite il componente Protocollo Internet (TCP/IP) viene selezionato automaticamente un indirizzo IPv4 compreso nell'intervallo da 169.254.0.1 a 169.254.255.254, utilizzando la subnet mask 255.255.0.0. Il client DHCP consente di garantire che l'indirizzo IPv4 scelto dal componente Protocollo Internet (TCP/IP) non sia già in uso. Se l'indirizzo è in uso, ne viene scelto un altro e il processo viene ripetuto fino a dieci indirizzi. Quando tramite il componente Protocollo Internet (TCP/IP) viene scelto un indirizzo non in uso, l'interfaccia viene configurata con tale indirizzo.Con la funzionalità APIPA, gli utenti di reti SOHO (Small Office/Home Office) con un'unica subnet possono utilizzare il protocollo TCP/IP senza che sia necessario configurare o impostare in modo manuale un server DHCP. Tramite la funzionalità APIPA non viene configurato un gateway predefinito e pertanto è consentito solo il traffico nella subnet locale. Configurato dall'utente Scegliendo questa opzione, tramite il componente Protocollo Internet (TCP/IP) viene utilizzata la configurazione specificata dall'utente. Si tratta di un'opzione utile quando un computer viene utilizzato in più di una rete, non tutte le reti dispongono di un server DHCP e non si desidera utilizzare la configurazione APIPA. Potrebbe ad esempio essere utile scegliere questa opzione nel caso in cui si disponga di un computer portatile utilizzato sia in ufficio che a casa. In ufficio nel portatile viene utilizzata una configurazione TCP/IP ottenuta da un server DHCP. A casa, dove non è presente alcun server DHCP, nel portatile viene utilizzata automaticamente la configurazione manuale alternativa. Questa opzione consente di accedere in modo semplice alle periferiche della rete domestica e a Internet e di eseguire senza problemi attività in entrambe le reti, senza che sia necessario riconfigurare manualmente il componente Protocollo Internet (TCP/IP). Se si specifica una configurazione APIPA o una configurazione manuale alternativa, tramite il componente Protocollo Internet (TCP/IP) viene continuamente eseguita in background la ricerca di un server DHCP ogni cinque minuti. Qualora venga rilevato un server DHCP, non viene più utilizzata la configurazione manuale alternativa o APIPA ma viene utilizzata la configurazione dell'indirizzo IPv4 ottenuta dal server DHCP. Configurazione manuale Per configurare manualmente il componente Protocollo Internet (TCP/IP), processo detto anche di creazione di una configurazione statica, è necessario assegnare almeno i seguenti elementi: Indirizzo IP Un indirizzo IP (IPv4) è un indirizzo logico a 32 bit utilizzato per identificare l'interfaccia di un nodo TCP/IP basato su IPv4. Ogni indirizzo IPv4 è costituito da due parti: l'identificatore di rete (ID) e l'ID host. l'ID di rete identifica tutti gli host nella stessa rete fisica. L'ID host identifica un host nella rete. Per ogni interfaccia di una rete TCP/IP basata su IPv4 è necessario un indirizzo IPv4 univoco, ad esempio 131.107.2.200. Subnet mask Una subnet mask consente al componente Protocollo Internet (TCP/IP) di distinguere tra ID di rete e ID host. Un esempio di subnet mask è 255.255.255.0. Per ulteriori informazioni sugli indirizzi IPv4 e sulle subnet mask, vedere il capitolo 3 "Indirizzi IP". È necessario configurare questi parametri per ogni scheda di rete nel nodo che utilizza il componente Protocollo Internet (TCP/IP). Se si desidera effettuare la connessione a nodi al di fuori della subnet locale, è anche necessario assegnare l'indirizzo IPv4 di un gateway predefinito, costituito da un router nella subnet locale a cui è connesso il nodo. Tramite il componente Protocollo Internet (TCP/IP), i pacchetti destinati alle reti remote vengono inviati al gateway predefinito, qualora non siano configurate altre route nell'host locale. È anche possibile configurare manualmente gli indirizzi IPv4 dei server DNS primario e alternativo. Tramite il componente Protocollo Internet (TCP/IP) vengono utilizzati i server DNS per la risoluzione dei nomi, ad esempio www.esempio.com, in indirizzi IPv4 o IPv6. Nella figura 1-4 è illustrato un esempio di configurazione manuale del componente Protocollo Internet (TCP/IP). Figura 1-4 Esempio di configurazione manuale del componente Protocollo Internet (TCP/IP) È inoltre possibile configurare manualmente il componente Protocollo Internet (TCP/IP) utilizzando i comandi netsh interface ip al prompt dei comandi. Installazione e configurazione del componente TCP/IP basato su IPv6 in Windows Windows XP Service Pack 1 (SP1) e Windows Server 2003 sono le prime versioni di Windows che supportano il protocollo IPv6 in ambiente di produzione. Il componente IPv6 viene installato in Connessioni di rete ed è denominato Microsoft TCP/IP versione 6 in Windows Server 2003 e Microsoft IPv6 Developer Edition in Windows XP SP1. Nota Il componente Microsoft IPv6 Developer Edition incluso nella versione di Windows XP senza service pack era destinato solo agli sviluppatori e non all'utilizzo in ambienti di produzione. Tutti gli argomenti della Guida in linea di quella versione contengono pertanto una dichiarazione di non responsabilità relativa alle limitazioni e ai tipi di utilizzo supportati. Nel Service Pack 1 è disponibile una versione di IPv6 destinata all'utilizzo in ambiente di produzione. Per il Service Pack 1 non sono tuttavia stati aggiornati gli argomenti della Guida in linea. Se è stato installato il Service Pack 1, è pertanto possibile ignorare la dichiarazione di non responsabilità. A differenza del componente Protocollo Internet (TCP/IP), il componente IPv6 non è installato per impostazione predefinita ed è possibile disinstallarlo. È possibile installare il componente IPv6 scegliendo tra i metodi seguenti: Utilizzando la cartella Connessioni di rete. Utilizzando il comando netsh interface ipv6 install. Per installare il componente IPv6 in Windows Server 2003 utilizzando la cartella Connessioni di rete, eseguire le operazioni seguenti: 1. 2. 3. 4. 5. 6. Fare clic sul pulsante Start, scegliere Pannello di controllo, quindi fare doppio clic su Connessioni di rete. Fare clic con il pulsante destro del mouse su qualsiasi connessione alla rete locale, quindi scegliere Proprietà. Fare clic su Installa. Nella finestra di dialogo Selezione tipo di componente di rete selezionare Protocollo, quindi scegliere Aggiungi. Nella finestra di dialogo Selezione protocollo di rete selezionare Microsoft TCP/IP versione 6, quindi scegliere OK. Scegliere Chiudi per salvare le modifiche. A differenza del componente Protocollo Internet (TCP/IP), per il componente IPv6 non è disponibile una finestra di dialogo delle proprietà che consente di configurare gli indirizzi e le impostazioni IPv6. La configurazione deve essere eseguita automaticamente per gli host IPv6 e manualmente per i router IPv6. Configurazione automatica Il componente Microsoft TCP/IP versione 6 supporta l'autoconfigurazione degli indirizzi. Tutti i nodi IPv6 consentono la creazione automatica di indirizzi IPv6 univoci per l'utilizzo tra nodi adiacenti in una subnet. Per raggiungere le destinazioni remote, all'avvio tramite ogni host IPv6 viene inviato un messaggio di richiesta router al fine di individuare i router locali nella subnet. Un router IPv6 nella subnet risponde con un messaggio di annuncio router, che viene utilizzato dall'host IPv6 per configurare automaticamente gli indirizzi IPv6, il router predefinito e altre impostazioni IPv6. Configurazione manuale In genere, non è necessario configurare manualmente un host IPv6. Qualora l'host richieda la configurazione manuale, utilizzare i comandi netsh interface ipv6 per aggiungere indirizzi o route e configurare altre impostazioni. Se si sta configurando come router IPv6 un computer in cui è in esecuzione Windows XP SP1 o Windows Server 2003, utilizzare i comandi netsh interface ipv6 per configurare manualmente il componente IPv6 con i prefissi degli indirizzi. File per la risoluzione dei nomi in Windows I componenti Protocollo Internet (TCP/IP) e Microsoft TCP/IP versione 6 supportano l'utilizzo di file per la risoluzione dei nomi di destinazioni, reti, protocolli e servizi. Nella tabella 1-4 sono elencati tali file, memorizzati nella cartella radice sistema\System32\Drivers\Etc. Nome file Hosts Lmhosts Networks Protocol Services Descrizione Consente di risolvere i nomi degli host in indirizzi IPv4 o IPv6. Consente di risolvere i nomi NetBIOS (Network Basic Input/Output System) in indirizzi IPv4. Per impostazione predefinita, è disponibile un file Lmhosts (Lmhosts.sam) di esempio. È possibile creare diversi file denominati Lmhosts oppure rinominare o copiare il file Lmhosts.sam nel file Lmhosts in questa cartella. Consente di risolvere i nomi di rete in ID di rete IPv4. Consente di risolvere i nomi di protocollo in numeri di protocollo definiti nei documenti RFC. Un numero di protocollo è un campo dell'intestazione IPv4 che identifica il protocollo di livello superiore, ad esempio TCP o UDP, a cui deve essere passato il payload del pacchetto IPv4. Consente di risolvere i nomi di servizi in numeri di porte e nomi di protocolli. I numeri di porte corrispondono ai campi delle intestazioni TCP o UDP che identificano l'applicazione tramite TCP o UDP. Tabella 1-4 File per la risoluzione dei nomi in Windows Strumenti TCP/IP in Windows Nella tabella 1-5 sono elencati gli strumenti diagnostici TCP/IP inclusi in Windows Server 2003 e Windows XP. È possibile utilizzare tali strumenti per identificare o risolvere i problemi di rete TCP/IP. Strumento Descrizione Consente di visualizzare e modificare la cache ARP (Address Resolution Protocol). La cache ARP consente Arp di mappare gli indirizzi IPv4 agli indirizzi MAC (Media Access Control). Tali mapping vengono utilizzati in Windows per inviare dati nella rete locale. Hostname Consente di visualizzare il nome dell'host nel computer. Consente di visualizzare i valori della configurazione TCP/IP corrente sia per IPv4 che per IPv6. Utilizzato Ipconfig anche per gestire la configurazione DHCP e la cache del resolver del client DNS. Consente di visualizzare lo stato delle code di stampa nei server di stampa in cui è in esecuzione il software Lpq LPD (Line Printer Daemon). Consente di verificare lo stato delle connessioni NetBIOS su TCP/IP (NetBT) correnti, di aggiornare la Nbtstat cache Lmhosts e di determinare i nomi registrati e l'ID ambito. Consente di visualizzare e gestire le impostazioni relative a IPv4 o IPv6 nel computer locale o in un Netsh computer remoto. Netstat Consente di visualizzare dati statistici e altre informazioni sulle connessioni IPv4 e IPv6 correnti. Nslookup Consente di eseguire query in un server DNS. Ping Consente di verificare la connettività IPv4 o IPv6 ad altri nodi IP. Consente di visualizzare le tabelle di routing IPv4 e IPv6 locali e di modificare la tabella di routing IPv4 Route locale. Tracert Consente di tenere traccia della route di un pacchetto IPv4 o IPv6 verso la destinazione. Consente di tenere traccia della route di un pacchetto IPv4 o IPv6 verso la destinazione e di visualizzare le Pathping informazioni sulle perdite di pacchetti per ogni router e subnet nel percorso. Tabella 1-5 Strumenti diagnostici TCP/IP in Windows Windows Server 2003 e Windows XP includono inoltre strumenti della riga di comando per il trasferimento dei dati tramite FTP, TFTP (Trivial File Transfer Protocol), Telnet e connettività a risorse basate su Unix. Dopo avere configurato TCP/IP, è possibile utilizzare gli strumenti Ipconfig e Ping per verificare la configurazione e la connettività ad altri host e reti TCP/IP. Strumento Ipconfig È possibile utilizzare lo strumento Ipconfig per verificare i parametri della configurazione TCP/IP in un host, tra cui: Per IPv4, l'indirizzo IPv4, la subnet mask e il gateway predefinito. Per IPv6, gli indirizzi IPv6 e il router predefinito. Ipconfig è utile per determinare se la configurazione è stata inizializzata e se è stato configurato un indirizzo IP duplicato. Per visualizzare queste informazioni, digitare ipconfig al prompt dei comandi. Di seguito è riportato un esempio delle informazioni visualizzate tramite lo strumento Ipconfig per un computer in cui sono in uso entrambi i protocolli IPv4 e IPv6: C:\>ipconfigWindows IP ConfigurationEthernet adapter Local Area Connection: Connection-specific DNS Suffix . : wcoast.example.com IP Address. . . . ........: 157.60.139.77 Subnet Mask . . . . . . . . . . . : 255.255.252.0 IP Address. . . . . . . . . . . . : 3ffe:ffff:ffff:f282:204:76ff:fe36:7363 IP Address. . . . . . . . . . . . : fec0::f282:204:76ff:fe36:7363%2 IP Address. . . . . . . . . . . . : fe80::204:76ff:fe36:7363 Default Gateway . . . . . . . . . : 157.60.136.1 3ffe:ffff:1:21ad:210:ffff:fed6:58c0Tunnel adapter Automatic Tunneling Pseudo-Interface: Connection-specific DNS Suffix . : wcoast.example.com IP Address. . . . . . . . . . . . : 3ffe:ffff:ffff:f70f:0:5efe:157.60.139.77 IP Address. . . . . . . . . . . . : fe80::5efe:157.60.139.77%2 Default Gateway . . . . . . . . . : fe80::5efe:157.54.253.9%2 Digitare ipconfig /all al prompt dei comandi per visualizzare gli indirizzi IPv4 e IPv6 dei server DNS, gli indirizzi IPv4 dei server WINS (Windows Internet Name Service), che consentono di risolvere i nomi NetBIOS in indirizzi IP, l'indirizzo IPv4 del server DHCP e le informazioni di lease per gli indirizzi IPv4 configurati per DHCP. Strumento Ping Dopo aver verificato la configurazione tramite lo strumento Ipconfig, è possibile utilizzare lo strumento Ping per verificare la connettività. Ping è uno strumento diagnostico che consente di verificare le configurazioni TCP/IP e di diagnosticare errori di connessione. Per IPv4, vengono utilizzati i messaggi eco e di risposta eco ICMP per determinare la disponibilità e la funzionalità di uno specifico host basato su IPv4. Per IPv6, viene utilizzato il protocollo ICMP (ICMPv6) per i messaggi di richiesta eco e di risposta eco IPv6. La sintassi dei comandi di base è ping destinazione, dove destinazione rappresenta un indirizzo IPv4 o IPv6 oppure un nome che può essere risolto in indirizzo IPv4 o IPv6. Di seguito è riportato un esempio delle informazioni visualizzate tramite lo strumento Ping per una destinazione IPv4: C:\>ping 157.60.136.1Pinging 157.60.136.1 with 32 bytes of data:Reply from 157.60.136.1: bytes=32 time<1ms TTL=255Reply from 157.60.136.1: bytes=32 time<1ms TTL=255Reply from 157.60.136.1: bytes=32 time<1ms TTL=255Reply from 157.60.136.1: bytes=32 time<1ms TTL=255Ping statistics for 157.60.136.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milliseconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms Di seguito è riportato un esempio delle informazioni visualizzate tramite lo strumento Ping per una destinazione IPv6: C:\>ping 3ffe:ffff:1:21ad:210:ffff:fed6:58c0Pinging 3ffe:ffff:1:21ad:210:ffff:fed6:58c0 from 3ffe:ffff:1:21ad:204:76ff:fe36:7363 with 32 bytes of data:Reply from 3ffe:ffff:1:21ad:210:ffff:fed6:58c0: time<1msReply from 3ffe:ffff:1:21ad:210:ffff:fed6:58c0: time<1msReply from 3ffe:ffff:1:21ad:210:ffff:fed6:58c0: time<1msReply from 3ffe:ffff:1:21ad:210:ffff:fed6:58c0: time<1msPing statistics for 3ffe:ffff:1:21ad:210:ffff:fed6:58c0: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 1ms, Average = 0ms Per verificare la configurazione di un computer e le connessioni router, eseguire le operazioni seguenti: 1. 2. 3. Digitare ipconfig al prompt dei comandi per verificare l'inizializzazione della configurazione TCP/IP. Effettuare il ping dell'indirizzo IPv4 del gateway predefinito o dell'indirizzo IPv6 del router predefinito per verificarne il funzionamento e stabilire se è possibile comunicare con un nodo nella rete locale. Effettuare il ping dell'indirizzo IPv4 o IPv6 di un nodo remoto per verificare se è possibile comunicare tramite un router. Se si inizia con il passaggio 3 e l'operazione va a buon fine, è possibile presumere che lo stesso valga per i passaggi 1 e 2. Nota Non è possibile utilizzare lo strumento Ping per risolvere i problemi di connessione se il traffico ICMP e ICMPv6 viene rifiutato a causa di router per il filtro di pacchetti e di firewall basati su host. Network Monitor È possibile utilizzare Network Monitor per semplificare la risoluzione di complessi problemi di rete, in quanto tale strumento consente di monitorare e acquisire il traffico di rete da analizzare. Network Monitor funziona configurando una scheda di rete per l'acquisizione di tutti i pacchetti in entrata e in uscita. È possibile definire filtri di acquisizione in modo da salvare solo frame specifici. I filtri consentono di salvare i frame in base agli indirizzi MAC di origine e di destinazione, agli indirizzi del protocollo di origine e di destinazione e alle corrispondenze dei modelli. Dopo che un pacchetto è stato acquisito, è possibile utilizzare un filtro di visualizzazione per isolare ulteriormente un problema. Quando un pacchetto è stato acquisito e filtrato, tramite Network Monitor i dati del pacchetto vengono interpretati e visualizzati in forma leggibile. Nota Windows Server 2003 include una versione di Network Monitor che consente di acquisire i dati solo per il computer locale. Microsoft Systems Management Server include una versione che consente di acquisire i dati per i computer remoti. Per istallare Network Monitor in Windows Server 2003, eseguire le operazioni seguenti: 1. 2. 3. 4. Fare clic sul pulsante Start, scegliere Pannello di controllo, quindi Installazione applicazioni e fare clic su Installazione componenti di Windows. Nell'Aggiunta guidata componenti di Windows fare clic su Strumenti di gestione e controllo, quindi su Dettagli. In Strumenti di gestione e controllo selezionare la casella di controllo Strumenti Network Monitor, quindi fare clic su OK. Se vengono richiesti file aggiuntivi, inserire il CD del prodotto oppure digitare il percorso della posizione dei file nella rete. Nota Per eseguire questa procedura, è necessario effettuare l'accesso come membro del gruppo Administrators nel computer locale o oppure avere ottenuto l'autorità appropriata tramite delega. Se il computer fa parte di un dominio, la procedura può essere eseguita dai membri del gruppo Domain Admins. Per analizzare il traffico di rete tramite Network Monitor, è necessario avviare l'acquisizione, generare il traffico di rete da osservare, interrompere l'acquisizione, quindi visualizzare i dati. Avvio di un'acquisizione In Network Monitor vengono utilizzate diverse finestre per visualizzare i dati in modi differenti. Una delle finestre principali è quella relativa all'acquisizione, illustrata nella figura 1-5. Figura 1-5 Finestra relativa all'acquisizione in Network Monitor Quando questa finestra è attiva, sulla barra degli strumenti sono disponibili opzioni per l'avvio, la sospensione, l'interruzione oppure l'interruzione e la visualizzazione dei dati acquisiti. Scegliere Avvia dal menu Acquisizione per avviare un'acquisizione. Durante l'acquisizione, vengono visualizzate le informazioni statistiche. Interruzione di un'acquisizione Dopo avere generato il traffico di rete che si desidera analizzare, scegliere Interrompi dal menu Acquisizione per interrompere l'acquisizione. È quindi possibile avviare un'altra acquisizione oppure visualizzare i dati relativi all'acquisizione corrente. Per interrompere un'acquisizione e visualizzarla immediatamente, scegliere Interrompi e visualizza dal menu Acquisizione. Visualizzazione dei dati Quando si apre un'acquisizione da analizzare, viene visualizzata una finestra di riepilogo, con un elenco dei frame presenti nell'acquisizione. Per ogni frame sono indicati un numero, l'ora di ricezione, gli indirizzi di origine e destinazione, il protocollo di livello più alto utilizzato nel frame e una descrizione. Nella figura 1-6 è illustrato un esempio della finestra di riepilogo. Figura 1-6 Finestra di riepilogo di un'acquisizione in Network Monitor Per ulteriori informazioni su un frame specifico, scegliere Riquadro Zoom dal menu Finestra. Utilizzando lo zoom, nella finestra di riepilogo vengono visualizzati due riquadri ulteriori, il riquadro dei dettagli e quello contenente i dati esadecimali. Nel primo riquadro sono visualizzate informazioni dettagliate sul protocollo, mentre nel secondo sono riportati i singoli byte presenti nel frame. Nella figura 1-7 è illustrata la visualizzazione di un frame di un'acquisizione di esempio, con l'utilizzo dello zoom. Figura 1-7 Visualizzazione di un frame di un'acquisizione in Network Monitor con l'utilizzo dello zoom Riepilogo del capitolo Le principali informazioni fornite nel presente capitolo sono le seguenti: TCP/IP è una suite di protocolli standard del settore progettata per reti di grandi dimensioni. Tale suite include entrambi gli insiemi di protocolli IPv4 e IPv6. Gli standard relativi al protocollo TCP/IP vengono pubblicati in una serie di documenti detti RFC. In una rete basata su TCP/IP un router può inoltrare pacchetti non indirizzati al router, mentre un host non può. Un nodo può essere costituito da un host o da un router. In una rete basata su TCP/IP una subnet è costituita da uno o più segmenti LAN racchiusi tra router e che utilizzano lo stesso prefisso dell'indirizzo IP e una rete è costituita da due o più subnet connesse tramite router. Il componente TCP/IP basato su IPv4 in Windows è costituito dal componente Protocollo Internet (TCP/IP) in Connessioni di rete. Tale componente è installato per impostazione predefinita e non può essere disinstallato. È possibile configurare questo componente automaticamente, tramite DHCP o una configurazione alternativa, oppure manualmente, tramite Connessioni di rete o lo strumento Netsh. Il componente TCP/IP basato su IPv6 in Windows è costituito dal componente Microsoft TCP/IP versione 6 o Microsoft IPv6 Developer Edition in Connessioni di rete. Tale componente non è installato per impostazione predefinita e può essere disinstallato. È possibile configurare questo componente automaticamente, tramite la funzione di scoperta router, oppure manualmente, tramite lo strumento Netsh. Ipconfig e Ping sono i principali strumenti per la risoluzione dei problemi di connettività e configurazione IP di base. È possibile utilizzare Network Monitor per risolvere complessi problemi di rete, tramite acquisizione e visualizzazione del traffico di rete da analizzare. Glossario del capitolo indirizzo - Identificatore che specifica l'origine o la destinazione di pacchetti IP e che viene assegnato a livello IP a un'interfaccia o a un insieme di interfacce. APIPA - Vedere Indirizzi IP privati automatici. Indirizzi IP privati automatici - Funzionalità di Windows Server 2003 e Windows XP che consente di configurare automaticamente un indirizzo IPv4 univoco compreso nell'intervallo da 169.254.0.1 a 169.254.255.254 e una subnet mask 255.255.0.0. La funzionalità APIPA viene utilizzata quando il componente Protocollo Internet è impostato per la configurazione automatica dell'indirizzo, non è disponibile alcun server DHCP e viene selezionata l'opzione Indirizzo IP privato automatico nella scheda Configurazione alternativa. host - Nodo che rappresenta generalmente l'origine e la destinazione del traffico IP. Gli host scartano automaticamente i pacchetti ricevuti non indirizzati a un indirizzo IP dell'host stesso. interfaccia - Rappresentazione di una connessione fisica o logica di un nodo a una subnet. Una scheda di rete è un esempio di interfaccia fisica. Un'interfaccia tunnel utilizzata per l'invio di pacchetti IPv6 in una rete IPv4 è un esempio di interfaccia logica. IP - Funzionalità o attributi che si applicano sia a IPv4 che a IPv6. Un indirizzo IP può ad esempio essere un indirizzo IPv4 o un indirizzo IPv6. IPv4 - Protocolli a livello di Internet della suite di protocolli TCP/IP, come definito nel documento RFC 791. Attualmente il protocollo IPv4 è molto diffuso. IPv6 - Protocolli a livello di Internet della suite di protocolli TCP/IP, come definito nel documento RFC 2460. Il protocollo IPv6 si sta attualmente diffondendo. segmento LAN - Parte di una subnet costituita da un unico supporto racchiuso tra bridge o switch di livello 2. nodo adiacente - Nodo connesso alla stessa subnet di un altro nodo. rete - Due o più subnet connesse da router. Un altro termine utilizzato per indicare la rete è Internet. nodo - Qualsiasi periferica, inclusi router e host, in cui è in esecuzione un'implementazione di IP. pacchetto - PDU (Protocol Data Unit) esistente a livello di Internet composto da payload e intestazione IP. RFC (Request for Comments) - Documento ufficiale in cui vengono specificati i dettagli per i protocolli inclusi nella suite TCP/IP. I documenti RFC relativi a TCP/IP vengono creati e gestiti dall'IETF (Internet Engineering Task Force). documento RFC - Vedere RFC (Request for Comments). router - Nodo che può costituire l'origine e la destinazione del traffico IP e che è inoltre in grado di inoltrare pacchetti IP non destinati a un indirizzo IP del router. In una rete IPv6 un router è inoltre in grado di annunciare la sua presenza e le informazioni sulla configurazione dell'host. subnet - Uno o più segmenti LAN racchiusi tra router e che utilizzano lo stesso prefisso dell'indirizzo IP. Altri termini utilizzati per indicare una subnet sono segmento di rete e collegamento. TCP/IP - Vedere Transmission Control Protocol/Internet Protocol (TCP/IP). Transmission Control Protocol/Internet Protocol (TCP/IP) - Suite di protocolli di rete, inclusi IPv4 e IPv6, ampiamente diffusi in Internet e che consentono la comunicazione tra reti interconnesse di computer con architetture hardware diverse e vari sistemi operativi. protocollo di livello superiore - Protocollo superiore a IP, che utilizza il protocollo IP come mezzo di trasporto. Esempi di questo tipo sono i protocolli a livello di Internet, quale ICMP (Internet Control Message Protocol) e i protocolli a livello di trasporto, quali TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). Nozioni fondamentali sul protocollo TCP/IP per Microsoft Windows: Capitolo 2: Panoramica dell'architettura della suite di protocolli TCP/IP http://technet.microsoft.com/it-it/library/bb726993.aspx Capitolo 2: Panoramica dell'architettura della suite di protocolli TCP/IP Abstract Nel presente capitolo viene illustrato più dettagliatamente il modello TCP/IP (Transmission Control Protocol/Internet Protocol) attraverso l'analisi dei suoi quattro livelli e dei protocolli principali utilizzati in ciascun livello. Gli amministratori di rete devono conoscere i protocolli di base dei vari livelli con le relative funzioni per poter comprendere il funzionamento delle applicazioni di rete, le modalità di invio di dati tra applicazioni e in che modo interpretare le acquisizioni di rete. Nel presente capitolo vengono inoltre illustrate le due API (Application Programming Interface) principali utilizzate dai sistemi operativi Microsoft® Windows® e gli schemi di denominazione delle stesse. In questa pagina Obiettivi del capitolo La suite di protocolli TCP/IP Livello Internet IPv4 Livello Internet IPv6 TCP (Transmission Control Protocol) UDP (User Datagram Protocol) Multiplexing e demultiplexing di pacchetti API (Application Programming Interface) Schemi di denominazione TCP/IP in Windows Riepilogo del capitolo Glossario del capitolo Obiettivi del capitolo Al termine di questo capitolo si sarà in grado di eseguire le seguenti attività. Descrivere in che modo la suite di protocolli TCP/IP corrisponde ai modelli DARPA (Department of Defense Advanced Research Projects Agency) e OSI (Open System Interconnection). Elencare i principali protocolli nei livelli Interfaccia di rete, Internet, Trasporto e Applicazione del modello DARPA. Illustrare lo scopo dei protocolli di base del livello Internet IPv4. Illustrare lo scopo dei protocolli di base del livello Internet IPv6. Illustrare lo scopo e le caratteristiche dei protocolli TCP e UDP (User Datagram Protocol). Spiegare in che modo IP adopera le informazioni contenute nei pacchetti IP per recapitare dati all'applicazione corretta nel nodo di destinazione. Descrivere lo scopo e le caratteristiche delle API Windows Sockets e NetBIOS (Network Basic Input/Output System). Descrivere lo scopo e le caratteristiche del nome host e gli schemi di denominazione NetBIOS utilizzati dai componenti TCP/IP nei sistemi operativi Microsoft Windows Server™ 2003 e Windows XP. La suite di protocolli TCP/IP La suite di protocolli TCP/IP corrisponde a un modello concettuale a quattro livelli denominato DARPA, dal nome dell'agenzia governativa statunitense che sviluppò inizialmente il protocollo TCP/IP. I quattro livelli del modello DARPA sono: Applicazione, Trasporto, Internet e Interfaccia di rete. Ciascun livello del modello DARPA corrisponde a uno o più livelli del modello OSI a sette livelli. Nella figura 2-1 viene mostrata l'architettura della suite dei protocolli TCP/IP. Figura 2-1 Architettura della suite di protocolli TCP/IP La suite dei protocolli TCP/IP è composta da due insiemi di protocolli al livello Internet: IPv4, noto anche come IP, rappresenta il livello Internet attualmente più utilizzato nelle reti Intranet e sul Web. IPv6 è il nuovo livello Internet che in futuro sostituirà l'attuale livello IPv4. Livello Interfaccia di rete Il livello Interfaccia di rete, denominato anche livello Accesso di rete, invia e riceve pacchetti TCP/IP a e dal supporto di rete. La suite TCP/IP è stata progettata in modo da risultare indipendente dal metodo di accesso alla rete, dal formato del frame e dal supporto utilizzati. È quindi possibile utilizzarla per comunicare in tipi di rete differenti che adoperano tecnologie LAN, ad esempio LAN senza fili Ethernet e 802.11, e tecnologie WAN, ad esempio Frame Relay e ATM (Asynchronous Transfer Mode). La mancata associazione a una tecnologia di rete specifica consente di adattare la suite TCP/IP a nuove tecnologie. Il livello Interfaccia di rete del modello DARPA comprende i livelli Collegamento dati e Fisico del modello OSI. Il livello Internet del modello DARPA non sfrutta i servizi di sequenzializzazione e riconoscimento eventualmente presenti nel livello Collegamento dati del modello OSI. Il livello Internet presuppone un livello Interfaccia di rete inaffidabile e demanda la responsabilità di garantire comunicazioni affidabili mediante l'attivazione di una sessione, come anche la sequenzializzazione e il riconoscimento di pacchetti, al livello Trasporto o Applicazione. Livello Internet Il livello Internet, responsabile delle funzioni di indirizzamento, suddivisione in pacchetti e instradamento dei dati, corrisponde al livello Rete del modello OSI. Il livello Internet IPv4 è costituito dai seguenti protocolli di base: Il protocollo ARP (Address Resolution Protocol) risolve l'indirizzo di livello Internet in un indirizzo di livello Interfaccia di rete, ad esempio un indirizzo hardware. Il protocollo IP (Internet Protocol) è un protocollo instradabile che indirizza, instrada, suddivide in frammenti e riassembla pacchetti. Il protocollo ICMP (Internet Control Message Protocol) riporta errori e altre informazioni utili per diagnosticare la mancata consegna di pacchetti. Il protocollo IGMP (Group Management Protocol) gestisce gruppi multicast IP. Per ulteriori informazioni sui protocolli di base relativi al livello Internet IPv4, vedere la sezione "Livello Internet IPv4" più avanti nel presente capitolo. Il livello Internet IPv6 è costituito dai seguenti protocolli di base: IPv6 è un protocollo instradabile che indirizza e instrada pacchetti. Il protocollo ICMPv6 (Internet Control Message Protocol for IPv6) riporta errori e altre informazioni utili per diagnosticare la mancata consegna di pacchetti. Il protocollo ND (Neighbor Discovery) gestisce le interazioni tra nodi IPv6 adiacenti. Il protocollo MLD (Multicast Listener Discovery) gestisce gruppi multicast IPv6. Per ulteriori informazioni sui protocolli di base relativi al livello Internet IPv6, vedere la sezione "Livello Internet IPv6" più avanti nel presente capitolo. Livello Trasporto Il livello Trasporto, noto anche come Trasporto host-to-host, fornisce al livello Applicazione servizi di sessione e comunicazione datagrammi. Il livello Trasporto è analogo all'omonimo livello del modello OSI. I protocolli di base del livello Trasporto sono TCP e UDP. Il protocollo TCP fornisce un servizio per comunicazioni affidabili, orientato alla connessione, uno-a-uno. Il TCP instaura le connessioni, stabilisce la sequenza, riconosce i pacchetti inviati e recupera pacchetti persi nel corso della trasmissione. Diversamente dal TCP, il protocollo UDP fornisce un servizio per comunicazioni inaffidabili, non orientato alla connessione, uno-a-uno o uno-a-molti. L'UDP viene utilizzato per il trasferimento di piccoli volumi di dati (ad esempio, i dati di un singolo pacchetto), dagli sviluppatori di applicazioni per evitare il sovraccarico associato alle connessioni TCP, oppure quando le applicazioni o protocolli di livello superiore assicurano una consegna affidabile. TCP e UDP funzionano su entrambi i livelli Internet, IPv4 e IPv6. Nota Le versioni dei protocolli TCP e UDP del componente Internet Protocol (TCP/IP) di Windows differiscono dal componente TCP/IP Microsoft versione 6. Le versioni presenti nel componente TCP/IP Microsoft versione 6 sono funzionalmente equivalenti a quelle fornite con i sistemi operativi Microsoft Windows NT® 4.0 e includono tutti gli ultimi aggiornamenti di protezione. L'esistenza di componenti protocollo separati con proprie versioni TCP e UDP è definita "architettura dual-stack". L'architettura ideale è costituita da un livello IP doppio, nel quale, secondo quanto mostrato nella figura 2-1, le stesse versioni di TCP e UDP funzionano sia su IPv4 che su IPv6. In un prossimo aggiornamento dei sistemi operativi Windows, Microsoft ha intenzione di adoperare un'architettura di livello IP doppio per i componenti protocollo TCP/IP. Livello Applicazione Il livello Applicazione consente alle applicazioni di accedere ai servizi degli altri livelli e definisce i protocolli utilizzati dalle applicazioni per lo scambio di dati. Tale livello contiene molti protocolli, e altri sono costantemente in fase di sviluppo. Di seguito sono illustrati i protocolli più noti per lo scambio di dati del livello Applicazione. Il protocollo HTTP (Hypertext Transfer Protocol) trasferisce file che costituiscono pagine sul Web. Il protocollo FTP (File Transfer Protocol) trasferisce singoli file, di norma per una sessione utente interattiva. Il protocollo SMTP (Simple Mail Transfer Protocol) trasferisce messaggi e allegati di posta. Inoltre, i protocolli del livello Applicazione di seguito riportati aiutano nell'utilizzo e gestione di reti TCP/IP. Il protocollo DNS (Domain Name System) risolve i nomi host, ad esempio www.microsoft.com, in un indirizzo IP e copia le informazioni sui nomi tra server DNS. Il protocollo RIP (Routing Information Protocol) viene utilizzato dai router per scambiarsi informazioni di routing in una rete IP. Il protocollo SNMP (Simple Network Management Protocol) raccoglie e scambia informazioni relative alla gestione di rete tra una console gestionale e periferiche di rete, come router, bridge e server. Windows Sockets e NetBIOS sono esempi di interfacce di livello Applicazione per applicazioni TCP/IP. Per ulteriori informazioni, vedere la sezione "API (Application Programming Interface)" più avanti nel presente capitolo. Livello Internet IPv4 Il livello Internet IPv4 è costituito dai seguenti protocolli: ARP IP (IPv4) ICMP IGMP Nelle sezioni seguenti ciascun protocollo viene illustrato più analiticamente. ARP Quando IP invia pacchetti su una rete ad accesso condiviso basata sul broadcast, come una LAN senza fili Ethernet o 802.11, il protocollo deve risolvere gli indirizzi MAC (Media Access Control) corrispondenti agli indirizzi IPv4 dei nodi a cui i pacchetti sono stati inoltrati, noti anche come indirizzi IPv4 di hop successivo. In base alla definizione del documento RFC 826, il protocollo ARP utilizza broadcast di livello MAC per risolvere indirizzi IPv4 di hop successivo nei corrispondenti indirizzi MAC. A seconda dell'indirizzo IPv4 di destinazione e del processo di determinazione del percorso, IPv4 determina l'indirizzo IPv4 dell'hop successivo e l'interfaccia per l'inoltro del pacchetto. Quindi passa il pacchetto IPv4, l'indirizzo IPv4 e l'interfaccia dell'hop successivo al protocollo ARP. Se l'indirizzo IPv4 dell'hop successivo del pacchetto è identico all'indirizzo IPv4 di destinazione, il protocollo ARP recapita direttamente il pacchetto a destinazione. In una consegna diretta ARP deve risolvere l'indirizzo IPv4 della destinazione del pacchetto nel corrispondente indirizzo MAC. Se l'indirizzo IPv4 dell'hop successivo del pacchetto non è identico all'indirizzo IPv4 di destinazione, il protocollo ARP esegue una consegna indiretta a un router. In una consegna indiretta ARP deve risolvere l'indirizzo IPv4 del router nel corrispondente indirizzo MAC. Per risolvere l'indirizzo IPv4 dell'hop successivo di un pacchetto nel corrispondente indirizzo MAC, il protocollo ARP sfrutta la funzione di broadcasting presente nelle reti ad accesso condiviso, come Ethernet o 802.11, per inviare un frame di richiesta ARP sotto forma di broadcast. Il mittente riceve in risposta un frame ARP che contiene l'indirizzo MAC corrispondente all'indirizzo IPv4 dell'hop successivo del pacchetto. Cache ARP Per ridurre al minimo la quantità di frame di richiesta ARP broadcast, molte implementazioni di protocollo TCP/IP incorporano una cache ARP: una tabella di indirizzi IPv4 recentemente risolti con i corrispondenti indirizzi MAC. Prima di inviare un frame di richiesta, ARP controlla questa cache. Ogni interfaccia dispone della propria cache ARP. A seconda delle implementazioni del fornitore, la cache ARP può presentare le caratteristiche di seguito riportate. Le voci della cache ARP possono essere dinamiche (basate su repliche ARP) o statiche. Le voci statiche sono permanenti e vengono aggiunte manualmente mediante uno strumento TCP/IP, come lo strumento ARP di Windows. Le voci statiche della cache ARP impediscono ai nodi di inviare richieste ARP per indirizzi locali IPv4 utilizzati comunemente, come gli indirizzi relativi a router e server. Se viene cambiata la scheda di rete, è tuttavia necessario aggiornare le voci ARP statiche manualmente. Le voci di cache ARP dinamiche, essendo associate a valori di timeout, vengono rimosse dalla cache allo scadere di un determinato intervallo di tempo. Ad esempio, le voci di cache ARP dinamiche relative a Windows sono rimosse dopo non più di 10 minuti. Per visualizzare la cache ARP su un computer basato su Windows, al prompt dei comandi digitare arp -a. Lo strumento ARP può essere utilizzato anche per aggiungere o eliminare voci statiche della cache ARP. Processo ARP Durante l'invio del pacchetto iniziale come host di invio o l'inoltro del pacchetto in qualità di router, IPv4 invia ad ARP il pacchetto IPv4, l'indirizzo IPv4 e l'interfaccia dell'hop successivo. ARP esegue una consegna diretta o indiretta tramite il processo di seguito riportato. 1. 2. 3. 4. 5. 6. In base all'indirizzo IPv4 e all'interfaccia dell'hop successivo, ARP controlla nella cache appropriata la presenza di una voce che corrisponda all'indirizzo IPv4 dell'hop successivo. Se individua una voce, ARP procede direttamente al passaggio 6. Se ARP non trova alcuna voce, crea un frame di richiesta contenente gli indirizzi MAC e IPv4 dell'interfaccia da cui è stata inviata la richiesta ARP e l'indirizzo IPv4 dell'hop successivo del pacchetto. Quindi invia in broadcast il frame di richiesta dall'interfaccia appropriata. Il frame in broadcast viene ricevuto da tutti i nodi della subnet che elaborano perciò la richiesta ARP. Se l'indirizzo dell'hop successivo della richiesta ARP corrisponde all'indirizzo IPv4 assegnato ad un'interfaccia nella subnet, il nodo di ricezione aggiorna la propria cache ARP con gli indirizzi IPv4 e MAC del richiedente. Tutti gli altri nodi scartano automaticamente la richiesta ARP. Il nodo di ricezione a cui viene assegnato l'indirizzo dell'hop successivo del pacchetto IPv4 formula una risposta ARP contenente l'indirizzo MAC richiesto e la invia direttamente al richiedente. Al ricevimento della risposta ARP, il richiedente aggiorna la propria cache con il mapping degli indirizzi. Attraverso lo scambio ARP, il richiedente e il nodo che risponde acquisiscono reciprocamente i mapping degli indirizzi nelle rispettive cache. Il richiedente ARP invia il pacchetto IPv4 al nodo dell'hop successivo indirizzandolo all'indirizzo MAC risolto. Il processo descritto è illustrato nella figura 2-2. Figura 2-2 Processo di risoluzione indirizzi ARP Internet Protocol versione 4 (IPv4) IPv4 è un protocollo a datagrammi responsabile principalmente dell'indirizzamento e instradamento di pacchetti tra host. Il protocollo IPv4 non è orientato alla connessione, per cui non stabilisce una connessione prima dello scambio di dati, ed è inaffidabile, nel senso che non assicura la consegna del pacchetto. IPv4 tenta sempre di recapitare un pacchetto, che tuttavia potrebbe andare perso, essere consegnato fuori sequenza, duplicato o recapitato in ritardo. IPv4 non effettua alcun tentativo per recuperare questo tipo di errori. Un protocollo di livello superiore, ad esempio un protocollo TCP o applicazioni, deve in caso di necessità riconoscere i pacchetti recapitati e recuperare quelli persi. IPv4 è definito nel documento RFC 791. Un pacchetto IPv4 è costituito da un'intestazione e un payload IPv4. Il payload è a sua volta formato da un'unità dati di un protocollo di livello superiore, come un segmento TCP o un messaggio UDP. Nella figura 2-3 è mostrata la struttura di base di un pacchetto IPv4. Figura 2-3 Struttura di base di un pacchetto IPv4 Nella tabella 2-1 sono elencati e illustrati i campi chiave dell'intestazione IPv4. Campo intestazione IPv4 Source IP Address Destination IP Address Identification Protocol Checksum Time-to-Live (TTL) Descrizione Indirizzo di origine del pacchetto IP. Indirizzo della destinazione intermedia o finale del pacchetto IP. Identificatore, in caso di frammentazione, di tutti i frammenti di un determinato pacchetto IPv4. Identificatore del protocollo di livello superiore a cui è necessario trasferire il payload IPv4. Semplice calcolo matematico utilizzato per controllare errori a livello di bit nell'intestazione IPv4. Numero di segmenti di rete sui quali può viaggiare il datagramma prima che un router lo scarti. All'inoltro di un pacchetto IPv4, i router riducono di un'unità il campo TTL impostato dall'host di invio. Grazie a questo campo i pacchetti non circolano all'infinito in una rete IPv4. Tabella 2-1 Campi chiave in un'intestazione IPv4 Frammentazione e riassemblaggio Se un router riceve un pacchetto IPv4 troppo grande per il segmento di rete su cui è stato inoltrato, l'IPv4 del router frammenta il pacchetto originale in pacchetti di dimensioni minori adeguate al segmento di rete su cui avviene l'inoltro. Quando i pacchetti arrivano alla destinazione finale, l'IPv4 dell'host di destinazione riassembla i frammenti nel payload originale. Questo processo è denominato frammentazione e riassemblaggio. La frammentazione può essere effettuata in ambienti con tecnologie di rete miste, come Ethernet o Token Ring. Di seguito è illustrato il funzionamento del processo di frammentazione e riassemblaggio. 1. 2. Prima dell'invio di un pacchetto IPv4, l'origine inserisce un valore univoco nel campo Identification. Lungo il percorso tra l'host di invio e la destinazione, il pacchetto IPv4 viene ricevuto da un router che si accorge che le dimensioni del pacchetto eccedono le dimensioni dell'unità massima di trasmissione (MTU) della rete su cui deve essere inoltrato. 3. IPv4 divide il payload originale in frammenti che possono essere contenuti sulla rete successiva. Ciascun frammento riceve la propria intestazione IPv4 che contiene: o Il campo Identification originale che identifica tutti i frammenti raggruppati insieme. o Il flag More Fragments che indica la presenza di altri frammenti successivi. Tale flag, a causa dell'assenza di altri frammenti, non è impostato sull'ultimo frammento. o Il campo Fragment Offset che indica la posizione del frammento rispetto al payload IPv4 originale. Alla ricezione dei frammenti, l'host remoto utilizza il campo Identification per identificare i frammenti raggruppati insieme e, tramite il campo Fragment Offset, li riassembla nell'ordine corretto così da ricreare il payload IPv4 originale. ICMP (Internet Control Message Protocol) Il protocollo ICMP, definito nel documento RFC 792, riporta e aiuta a risolvere errori di pacchetti che non possono essere recapitati. Se, ad esempio, IPv4 non riesce a recapitare un pacchetto all'host di destinazione, il protocollo ICMP del router o dell'host di destinazione invia un messaggio di destinazione non raggiungibile all'host di invio. Nella tabella 2-2 sono elencati e illustrati i messaggi ICMP più comuni. Messaggio ICMP Echo Echo Reply Redirect Source Quench Destination Unreachable Descrizione Lo strumento Ping invia messaggi Echo ICMP per risolvere problemi di rete attraverso la verifica della connettività IPv4 a un determinato nodo. I nodi inviano messaggi Echo Reply in risposta a messaggi Echo ICMP. I router inviano messaggi Redirect per comunicare ad host di invio i migliori percorsi ad indirizzi IPv4 di destinazione. I router inviano messaggi Source Quench (origine estinta) per informare gli host di invio che i pacchetti IPv4 sono stati scartati per problemi di congestione. In tal modo gli host di invio rallentano la frequenza di invio dei pacchetti. I router e gli host di destinazione inviano messaggi Destination Unreachable (destinazione non raggiungibile) per informare gli host di invio che non è possibile recapitare i pacchetti. Tabella 2-2 Messaggi ICMP comuni Il protocollo ICMP contiene una serie di messaggi di destinazione non raggiungibile, i più comuni dei quali sono elencati e illustrati nella tabella 2-3. Messaggio di destinazione non raggiungibile Host Unreachable Protocol Unreachable Port Unreachable Fragmentation Needed and DF Set Descrizione I router inviano messaggi Host Unreachable (host irraggiungibile) quando non sono in grado di individuare percorsi agli indirizzi IPv4 di destinazione. I nodi IPv4 di destinazione inviano messaggi Protocol Unreachable (protocollo non raggiungibile) quando non sono in grado di associare il campo Protocol dell'intestazione IPv4 al protocollo client IPv4 correntemente utilizzato. I nodi IPv4 inviano messaggi Port Unreachable (porta non raggiungibile) quando non sono in grado di associare il campo Destination Port dell'intestazione UDP all'applicazione che utilizza quella porta UDP. I router IPv4 inviano messaggi Fragmentation Needed and DF Set quando è necessario eseguire la frammentazione di un pacchetto ma il nodo di invio ha impostato il flag Don’t Fragment (DF) nell'intestazione IPv4. Tabella 2-3 Messaggi di destinazione non raggiungibile ICMP comuni L'ICMP, pur non rendendo il protocollo IPv4 affidabile, riporta gli errori e fornisce un feedback in presenza di specifiche condizioni. I messaggi ICMP sono trasportati come pacchetti IPv4 non riconosciuti e sono essi stessi inaffidabili. IGMP (Internet Group Management Protocol) Router e host utilizzano il protocollo IGMP per gestire l'appartenenza in gruppi multicast IPv4 su una subnet. Un gruppo multicast IPv4, definito anche gruppo host, è un insieme di host posti in ascolto del traffico destinato a uno specifico indirizzo multicast IPv4. Il traffico multicast IPv4 di una determinata subnet, sebbene inviato a un singolo indirizzo MAC, viene ricevuto ed elaborato da più host IPv4. Un membro del gruppo host ascolta uno specifico indirizzo multicast IPv4 e riceve tutti i pacchetti ad esso inviati. Perché un host riceva il traffico multicast IPv4, è necessario che un'applicazione informi il protocollo IPv4 della relativa ricezione presso uno specifico indirizzo multicast IPv4. Il protocollo IPv4 informa quindi i router delle subnet locali della necessità di ricevere pacchetti multicast inviati all'indirizzo multicast IPv4 specificato. Le informazioni relative all'appartenenza ad un gruppo host sono registrate tramite il protocollo IGMP. Di seguito sono riportati i possibili formati dei messaggi IGMP. Membri di un gruppo host utilizzano il messaggio IGMP Host Membership Report per dichiarare la propria appartenenza a uno specifico gruppo host. I router utilizzano il messaggio IGMP Host Membership Query per richiedere alle subnet informazioni sui membri di gruppi host. I membri di un gruppo host utilizzano il messaggio IGMP Leave Group quando abbandonano un gruppo del quale potrebbero essere l'ultimo membro nella subnet. Per il multicasting lungo una rete IPv4, i router comunicano informazioni sui gruppi host mediante protocolli di routing multicast. Ciascun router che supporta l'inoltro multicast è in grado quindi di determinare la modalità di inoltro del traffico multicast IPv4. Windows Server 2003 e Windows XP supportano i protocolli IGMP, IGMP versione 2 e IGMP versione 3, rispettivamente definiti nei documenti RFC 1112, RFC 2236 e RFC 3376. Livello Internet IPv6 IPv6 sostituirà completamente i protocolli del livello Internet IPv4 del modello DARPA. Saranno effettuate le seguenti sostituzioni. IPv4 con IPv6: IPv6 è un protocollo instradabile che indirizza, instrada, suddivide in frammenti e riassembla pacchetti. ICMP con ICMPv6: il protocollo ICMPv6 diagnostica e riporta gli errori alla base del mancato recapito di pacchetti IPv6. IGMP con MLD: il protocollo MLD gestisce l'appartenenza a gruppi multicast IPv6. ARP con ND: il protocollo ND gestisce le interazioni tra nodi adiacenti, compresa la configurazione automatica di indirizzi e la risoluzione di indirizzi IPv6 di hop successivo in indirizzi MAC. Per supportare le operazioni sul livello Internet IPv6, non è necessario che gli sviluppatori di software modifichino i protocolli ai livelli Trasporto e Applicazione, se non quando gli indirizzi fanno parte del payload o delle strutture di dati gestite dal protocollo. Ad esempio, gli sviluppatori devono aggiornare i protocolli TCP e UDP per eseguire un nuovo checksum, e il protocollo RIP per inviare e ricevere informazioni di routing su IPv6. Il livello Internet IPv6 è costituito dai seguenti protocolli: IPv6 ICMPv6 ND MLD Tali protocolli sono illustrati più analiticamente nelle sezioni seguenti. IPv6 Analogamente all'IPv4, l'IPv6 è un protocollo a datagrammi, inaffidabile e non orientato alla connessione, principalmente responsabile dell'indirizzamento e instradamento di pacchetti tra host. La struttura di un pacchetto IPv6 è definita nel documento RFC 2460. Un pacchetto IPv6 è costituito da un'intestazione e un payload IPv6. Il payload è rappresentato da zero o più intestazioni di estensione IPv6 e da un'unità dati di un protocollo di livello superiore, come un messaggio ICMPv6, un segmento TCP o un messaggio UDP. Nella figura 2-4 è mostrata la struttura di base di un pacchetto IPv6. Figura 2-4 Struttura di base di un pacchetto IPv6 Nella tabella 2-4 sono elencati e illustrati i campi chiave dell'intestazione IPv6. Campo intestazione Descrizione IPv6 Source Address Indirizzo IPv6 a 128 bit che identifica l'origine del pacchetto IPv6. Destination Indirizzo IPv6 a 128 bit che identifica l'intermediario o la destinazione finale del pacchetto IPv6. Address Identificatore relativo all'intestazione dell'estensione IPv6 immediatamente successiva o ad un Next Header protocollo di livello superiore quale ICMPv6, TCP o UDP. Numero di collegamenti sui quali può viaggiare il pacchetto prima di essere scartato da un router. Nel Hop Limit corso dell'inoltro del pacchetto, i router riducono di un'unità il limite hop impostato dall'host di invio. Grazie a questo campo i pacchetti non circolano all'infinito in una rete IPv6. Tabella 2-4 Campi chiave in un'intestazione IPv6 Intestazioni di estensione IPv6 I payload IPv6 possono contenere zero o più intestazioni di estensione di lunghezza variabile. Un campo Next Header presente nell'intestazione IPv6 indica la successiva intestazione di estensione. Ciascuna intestazione di estensione contiene un altro campo Next Header con l'intestazione successiva. L'ultima intestazione di estensione indica l'eventuale protocollo di livello superiore (ad esempio, TCP, UDP o ICMPv6) contenuto nell'unità dati di un protocollo di livello superiore. Intestazione e intestazioni di estensione IPv6 sostituiscono l'intestazione IPv4 esistente e la possibile inclusione di relative opzioni. Il nuovo formato delle intestazioni di estensione consente di accrescere il protocollo IPv6 per supportare esigenze e funzioni future. Diversamente dalle opzioni presenti nell'intestazione IPv4, le dimensioni delle intestazioni di estensione IPv6 non sono soggette a limiti e possono essere espanse in modo da contenere tutti i dati di estensione necessari per la comunicazione. Nel documento RFC 2460 sono definite le seguenti intestazioni di estensione che tutti i nodi IPv6 devono supportare. Hop-by-Hop Options Destination Options Routing Fragment Authentication Encapsulating Security Payload I pacchetti IPv6 di norma non contengono intestazioni di estensione. Gli host di invio aggiungono almeno un'intestazione di estensione soltanto quando è necessario che router intermedi o la destinazione gestiscano il pacchetto in un determinato modo. Frammentazione in IPv6 In IPv4, se un router riceve un pacchetto troppo grande per il segmento di rete a cui è stato inoltrato ed è consentita la frammentazione del pacchetto, il protocollo IPv4 del router frammenta il pacchetto originale in pacchetti di dimensioni minori adeguati al segmento di rete destinatario dell'inoltro. In IPv6, il pacchetto è frammentato solo dall'host di invio: se un pacchetto IPv6 è troppo grande, il router inoltra all'host di invio un messaggio ICMPv6 Packet Too Big (dimensioni del pacchetto troppo elevate) e lo scarta. Gli host di invio possono frammentare pacchetti e gli host di destinazione possono riassemblarli tramite l'utilizzo dell'intestazione di estensione Fragment. ICMPv6 (Internet Control Message Protocol for IPv6) Analogamente al protocollo IPv4, IPv6 non riporta errori; utilizza, invece, una versione aggiornata del protocollo ICMP per IPv4. Questa nuova versione, denominata ICMPv6, esegue le comuni funzioni ICMP di segnalazione errori di recapito o inoltro per IPv4 e fornisce un servizio Echo semplificato per la risoluzione degli errori. Il protocollo ICMPv6 fornisce inoltre una struttura per messaggi ND e MLD. Nella tabella 2-5 sono elencati e descritti i messaggi ICMPv6 definiti nel documento RFC 2463. Messaggio ICMPv6 Echo Request Echo Reply Destination Unreachable Packet Too Big Time Exceeded Parameter Problem Descrizione Gli host mittenti inviano messaggi Echo Request (richiesta echo) per verificare la connettività IPv6 a un determinato nodo. I nodi inviano messaggi Echo Reply (risposta echo) in risposta a messaggi ICMPv6 Echo Request. I router e gli host di destinazione inviano messaggi Destination Unreachable (destinazione non raggiungibile) per informare gli host di invio che non è possibile recapitare i pacchetti o i payload. I router inviano messaggi Packet Too Big (dimensioni del pacchetto troppo grandi) per informare gli host di invio che le dimensioni del pacchetto eccedono la capacità di inoltro. I router inviano messaggi Time Exceeded (tempo scaduto) per informare gli host di invio che il limite di hop di un pacchetto IPv6 è scaduto. I router inviano messaggi Parameter Problem (problema col parametro) per informare gli host di invio degli errori verificatisi durante l'elaborazione dell'intestazione o di un'intestazione di estensione IPv6. Tabella 2-5 Messaggi ICMPv6 comuni Il protocollo ICMPv6 contiene una serie di messaggi di destinazione non raggiungibile, i più comuni dei quali sono elencati e illustrati nella tabella 2-6. Messaggio di destinazione non raggiungibile Descrizione I router inviano questo messaggio quando non riescono a individuare percorsi agli indirizzi di destinazione nelle proprie tabelle di instradamento IPv6 locale. Communication Prohibited by I router inviano questo messaggio quando un criterio di configurazione impedisce di Administrative Policy comunicare con la destinazione. Questo tipo di messaggio è, ad esempio, inviato quando No Route Found un firewall scarta un pacchetto. I router IPv6 inviano questo messaggio quando non sono in grado di risolvere un indirizzo MAC di destinazione. Gli host di destinazione inviano questo messaggio quando un pacchetto IPv6 contenente Destination Port Unreachable un messaggio a una porta UDP di destinazione non corrisponde all'applicazione in ascolto. Destination Address Unreachable Tabella 2-6 Comuni messaggi di destinazione non raggiungibile ICMPv6 Il protocollo ICMPv6, pur non rendendo il protocollo IPv6 affidabile, riporta gli errori e fornisce un feedback in presenza di specifiche condizioni. I messaggi ICMPv6 sono trasportati come pacchetti IPv6 non riconosciuti e sono essi stessi inaffidabili. ND (Neighbor Discovery) Il protocollo ND è un insieme di messaggi e processi ICMPv6 che determinano le relazioni tra nodi adiacenti. Il protocollo ND sostituisce gli strumenti ARP, ICMP Router Discovery e ICMP Redirect utilizzati in IPv4 e fornisce altre funzionalità. Gli host utilizzano il protocollo ND per le operazioni di seguito riportate. Individuare router adiacenti. Individuare e configurare automaticamente indirizzi e altri parametri di configurazione. I router utilizzano il protocollo ND per le operazioni di seguito riportate. Notificare la propria presenza, gli indirizzi host e altri parametri di configurazione. Informare gli host di un indirizzo di hop successivo migliore per l'inoltro di pacchetti a una determinata destinazione. I nodi, sia host che router, utilizzano il protocollo ND per le operazioni di seguito riportate. Risolvere l'indirizzo del livello di collegamento, denominato anche indirizzo MAC, di un nodo adiacente al quale è inoltrato un pacchetto IPv6. Annunciare dinamicamente le modifiche di indirizzi MAC. Determinare se un nodo adiacente è ancora raggiungibile. Nella tabella 2-7 sono elencati e descritti i processi ND definiti nel documento RFC 2461. Processo ND Rilevamento router Individuazione prefisso Autoconfigurazione indirizzi Risoluzione indirizzi Determinazione hop successivo Rilevamento Descrizione Processo tramite cui un host individua i router adiacenti. Per ulteriori informazioni, vedere la sezione "Rilevamento router" più avanti in questo capitolo. Processo tramite cui gli host individuano i prefissi di rete relativi a subnet di destinazione locali. Per ulteriori informazioni sui prefissi di rete IPv6, vedere il capitolo 3 "Indirizzi IP". Processo di configurazione di indirizzi IPv6 per interfacce, indipendentemente dalla presenza di un server di configurazione indirizzi che esegue, ad esempio, DHCPv6 (Dynamic Host Configuration Protocol versione 6). Per ulteriori informazioni, vedere la sezione "Autoconfigurazione di indirizzi" più avanti in questo capitolo. Processo tramite cui i nodi risolvono un indirizzo IPv6 di un nodo adiacente nel corrispondente indirizzo MAC. La risoluzione di indirizzi in IPv6 è equivalente al protocollo ARP in IPv4. Per ulteriori informazioni, vedere la sezione "Risoluzione di indirizzi" in questo capitolo. Processo tramite cui un nodo determina l'indirizzo IPv6 dell'hop successivo a cui inoltrare un pacchetto in base all'indirizzo di destinazione. L'indirizzo dell'hop successivo può corrispondere all'indirizzo di destinazione o all'indirizzo di un router adiacente. Processo tramite cui un nodo determina che il livello IPv6 di un vicino non è in grado di irraggiungibilità di un vicino Rilevamento indirizzi duplicati Funzione di reindirizzamento inviare o ricevere pacchetti. Processo tramite cui un nodo determina se un indirizzo non è già utilizzato da un nodo adiacente. Processo tramite cui un host viene informato della presenza di un migliore indirizzo IPv6 del primo hop per il raggiungimento di una destinazione. Tabella 2-7 Processi ND per IPv6 Risoluzione di indirizzi La risoluzione indirizzi in IPv6 è costituita dallo scambio di messaggi Neighbor Solicitation (richiesta del nodo adiacente) e Neighbor Advertisement (annuncio del nodo adiacente) per risolvere l'indirizzo IPv6 dell'hop successivo nel corrispondente indirizzo MAC. L'host mittente invia sull'interfaccia appropriata una richiesta del nodo adiacente multicast, in cui è incluso l'indirizzo MAC del nodo di invio. Alla ricezione del messaggio, il nodo di destinazione aggiorna la propria cache adiacente (equivalente alla cache ARP) con una voce relativa all'indirizzo di origine e all'indirizzo MAC inclusi nel messaggio Neighbor Solicitation. Quindi invia un annuncio del nodo adiacente unicast contenente il proprio indirizzo MAC al mittente del messaggio Neighbor Solicitation. Alla ricezione dell'annuncio del nodo adiacente dalla destinazione, l'host di invio aggiorna la propria cache adiacente con una voce per il nodo di destinazione basata sull'indirizzo MAC incluso nel messaggio. A questo punto, l'host di invio e la destinazione della richiesta del nodo adiacente sono in grado di inviare traffico IPv6 unicast. Rilevamento router Il rilevamento router è il processo attraverso cui gli host tentano di individuare l'insieme di router presenti nella subnet locale. Oltre a configurare un router predefinito, il rilevamento router in IPv6 configura anche quanto segue: L'impostazione predefinita per il campo Hop Limit nell'intestazione IPv6. Determinazione se il nodo debba utilizzare un protocollo di configurazione indirizzi, quale DHCPv6 (Dynamic Host Configuration Protocol for IPv6), per indirizzi e altri parametri di configurazione. L'elenco dei prefissi di rete definiti per il collegamento. Ciascun prefisso di rete comprende il prefisso IPv6 con i relativi cicli di vita validi e preferiti. Se indicato, l'host crea una configurazione dell'indirizzo IPv6 tramite il prefisso di rete senza utilizzare un protocollo di configurazione indirizzi. Un prefisso di rete inoltre definisce l'intervallo di indirizzi relativo ai nodi del collegamento locale. Di seguito sono riportati i processi di rilevamento router in IPv6. I router IPv6 inviano periodicamente messaggi Router Advertisement (annuncio router) multicast sulla subnet con i quali, oltre alla loro esistenza, notificano altri parametri di configurazione come prefissi di indirizzi e il limite hop predefinito. Gli host IPv6 della subnet locale si servono del contenuto degli annunci router ricevuti per configurare indirizzi, un router predefinito e altri parametri di configurazione. Un host in corso di avvio invia un messaggio Router Solicitation (richiesta router) multicast. Alla ricezione di una richiesta router, tutti i router presenti nella subnet locale inviano un annuncio router unicast all'host che ha inviato la richiesta. L'host si serve del contenuto degli annunci router ricevuti per configurare indirizzi, un router predefinito e altri parametri di configurazione. Autoconfigurazione di indirizzi Un aspetto estremamente utile di IPv6 è la capacità di autoconfigurarsi senza utilizzare un protocollo di configurazione indirizzi, come DHCPv6 (Dynamic Host Configuration Protocol for IPv6). Un host IPv6 può per impostazione predefinita configurare un indirizzo da utilizzare sulla subnet per ciascuna interfaccia. Attraverso il rilevamento router, inoltre, un host è in grado di determinare gli indirizzi dei router, ulteriori indirizzi e altri parametri di configurazione. I messaggi Router Advertisement indicano se è necessario utilizzare un protocollo di configurazione indirizzi. L'autoconfigurazione di indirizzi in IPv6 è definita nel documento RFC 2462. MLD (Multicast Listener Discovery) Il protocollo MLD per IPv6 è l'equivalente del protocollo IGMP versione 2 per IPv4. Il protocollo consiste di un insieme di messaggi ICMPv6 scambiati da router e nodi, grazie ai quali i router rilevano la serie di indirizzi multicast IPv6 per cui esistono nodi in ascolto in relazione a ciascuna interfaccia collegata. Analogamente a IGMPv2, MLD rileva solo gli indirizzi multicast comprendenti almeno un listener, e non l'elenco dei singoli listener per ciascun indirizzo multicast. IL protocollo MLD è definito nel documento RFC 2710. Diversamente da IGMPv2, MLD utilizza messaggi ICMPv6 invece di definire una propria struttura di messaggi. Esistono tre tipi di messaggi MLD: Multicast Listener Query: utilizzati da router per interrogare una subnet sui listener multicast. Multicast Listener Report: utilizzati da listener multicast per esprimere disponibilità a ricevere il traffico per un determinato indirizzo multicast oppure per rispondere a un messaggio Multicast Listener Query. Multicast Listener Done: utilizzati da listener multicast per avvisare che potrebbero essere l'ultimo membro di un gruppo multicast sulla subnet. TCP (Transmission Control Protocol) Il protocollo TCP è un servizio di recapito affidabile e orientato alla connessione, nel senso che prima che gli host possano scambiare dati è necessario stabilire una connessione. L'affidabilità è ottenuta assegnando un numero di sequenza a ciascun segmento trasmesso. I peer TCP, vale a dire i due nodi che comunicano mediante il protocollo TCP, riconoscono la ricezione dei dati. Un segmento TCP è un'unità dati protocollo (PDU, Protocol Data Unit) costituita dall'intestazione e dal payload TCP, denominati anche segmento. Per ogni segmento contenente dati inviato, è necessario che l'host di ricezione restituisca un riconoscimento (ACK). Se un ACK non è riconosciuto entro un tempo calcolato, il segmento TCP viene ritrasmesso. Il protocollo TCP è definito nel documento RFC 793. Nella tabella 2-8 sono elencati e illustrati i campi chiave dell'intestazione TCP. Campo Source Port Destination Port Sequence Number Acknowledgment Number Window Checksum Descrizione Porta TCP dell'applicazione mittente. Porta TCP dell'applicazione destinataria. Numero di sequenza del primo byte di dati presente nel segmento TCP. Numero di sequenza del byte successivo che il mittente si aspetta di ricevere dal proprio peer TCP. Dimensione corrente di un buffer di memoria sull'host mittente del segmento TCP per archiviare i segmenti in entrata. Semplice calcolo matematico utilizzato per controllare errori a livello di bit nel segmento TCP. Tabella 2-8 Campi chiave in un'intestazione TCP Porte TCP Per utilizzare il protocollo TCP, un'applicazione deve fornire l'indirizzo IP e il numero di porta TCP delle applicazioni di origine e di destinazione. Una porta fornisce un percorso per l'invio di segmenti, ed è identificata da un numero univoco. Le porte TCP sono distinte dalle porte UDP sebbene alcune possano utilizzare lo stesso numero. I numeri di porta inferiori a 1024 sono porte note di assegnazione IANA (Internet Assigned Numbers Authority). Nella tabella 2-9 sono elencate alcune porte note TCP. Numero porta TCP 20 21 23 80 139 Descrizione FTP (canale dati) FTP (canale di controllo) Telnet HTTP utilizzato per il Web Servizio per le sessioni NetBIOS Tabella 2-9 Porte TCP note Per un elenco completo di porte TCP assegnate, vedere http://www.iana.org/assignments/port-numbers (informazioni in lingua inglese). Handshake a tre stadi TCP Una connessione TCP viene inizializzata tramite un handshake a tre stadi, il cui scopo è sincronizzare il numero di sequenza e i numeri di riconoscimento di entrambe le parti di una connessione e di scambiare le rispettive dimensioni della finestra TCP. Di seguito sono illustrati i passaggi con i quali un computer client contatta un computer server. 1. 2. 3. Il client invia un segmento TCP al server contenente un numero di sequenza iniziale per la connessione e una dimensione finestra del buffer per archiviare i segmenti in entrata dal server. Il server restituisce un segmento TCP contenente il numero di sequenza iniziale scelto, un riconoscimento del numero di sequenza del client e una dimensione finestra, che indica la dimensione del buffer sul server per archiviare i segmenti in ingresso dal client. Il client invia un segmento TCP al server contenente un riconoscimento del numero di sequenza dello stesso. Il protocollo TCP si serve di un processo handshake analogo per terminare una connessione. Ciò garantisce che entrambi gli host abbiano completato la trasmissione e che tutti i dati siano stati ricevuti. UDP (User Datagram Protocol) Il protocollo UDP fornisce un servizio per datagrammi non orientato alla connessione che assicura un recapito inaffidabile, di tipo massimo sforzo (best-effort), dei dati trasmessi in messaggi. Ciò significa che non sono garantiti né l'arrivo dei datagrammi né la corretta sequenza dei pacchetti recapitati. Il protocollo UDP non ritrasmette i dati persi. I messaggi UDP, costituiti da un'intestazione e un payload, sono noti anche semplicemente come messaggi. IL protocollo UDP è definito nel documento RFC 768. Le applicazioni utilizzano il protocollo UDP quando non necessitano di un riconoscimento di ricezione dei dati e di norma trasmettono piccoli volumi di dati in una sola volta. Esempi di servizi e applicazioni che utilizzano l'UDP sono il servizio per la risoluzione dei nomi NetBIOS, il servizio per i datagrammi NetBIOS e SNMP. Nella tabella 2-10 sono elencati e illustrati i campi chiave dell'intestazione UDP. Campo Descrizione Source Port Porta UDP dell'applicazione mittente. Destination Port Porta UDP dell'applicazione destinataria. Checksum Semplice calcolo matematico utilizzato per controllare errori a livello di bit nel messaggio UDP. Tabella 2-10 Campi chiave in un'intestazione UDP Porte UDP Per utilizzare il protocollo UDP, un'applicazione deve fornire l'indirizzo IP e il numero di porta UDP delle applicazioni di origine e di destinazione. Una porta fornisce un percorso per inviare messaggi, ed è identificata da un numero univoco. Le porte UDP sono distinte dalle porte TCP sebbene alcune possano utilizzare lo stesso numero. Analogamente alle porte TCP, i numeri delle porte UDP inferiori a 1024 sono porte note assegnate da IANA. Nella tabella 2-11 sono elencate alcune porte note UDP. Numero porta UDP 53 69 137 138 161 Descrizione Query per nomi DNS (Domain Name System) TFTP (Trivial File Transfer Protocol) Servizio per la risoluzione dei nomi NetBIOS Servizio per i datagrammi NetBIOS SNMP Tabella 2-11 Porte UDP note Per un elenco completo di porte UDP assegnate, vedere http://www.iana.org/assignments/port-numbers (informazioni in lingua inglese). Multiplexing e demultiplexing di pacchetti Al momento dell'invio, un host mittente include in un pacchetto IPv4 o IPv6 informazioni per recapitare i dati in esso contenuti all'applicazione di destinazione corretta. Si definisce multiplexing l'inclusione di identificatori che consentono di recapitare i dati a una delle entità presenti in ciascun livello di un'architettura a più livelli. Le informazioni multiplexing relative a pacchetti IP identificano il nodo della rete, il protocollo di livello superiore IP e, per i protocolli TCP e UDP, la porta corrispondente all'applicazione a cui sono indirizzati i dati. L'host di destinazione utilizza tali identificatori per eseguire il demultiplexing, o recapito dei dati per singolo livello, all'applicazione di destinazione corretta. Il pacchetto IP inoltre comprende informazioni per consentire all'host di destinazione di inviare una risposta. Le informazioni multiplexing del protocollo IP consentono di eseguire le seguenti operazioni. Identificare il nodo di invio (il campo Source IP Address nell'intestazione IPv4 o Source Address nell'intestazione IPv6). Identificare il nodo di destinazione (il campo Destination IP Address nell'intestazione IPv4 o Destination Address nell'intestazione IPv6). Identificare il protocollo di livello superiore al livello Internet IPv4 o IPv6 (il campo Protocol nell'intestazione iPv4 o Next Header nell'intestazione iPv6). In caso di segmenti TCP e messaggi UDP, identificare l'applicazione mittente dei messaggi (il campo Source Port nell'intestazione TCP o UDP). In caso di segmenti TCP e messaggi UDP, identificare l'applicazione destinataria dei messaggi (il campo Destination Port nell'intestazione TCP o UDP). Le porte TCP e UDP possono utilizzare tutti i numeri compresi tra 0 e 65.535. I numeri di porta relativi ad applicazioni client sono di norma assegnati dinamicamente al momento della richiesta del servizio; IANA preassegna numeri di porta per applicazioni note sul lato server. Per un elenco completo dei numeri di porta preassegnati, vedere http://www.iana.org/assignments/port-numbers (informazioni in lingua inglese). Tutti questi dati consentono di fornire informazioni multiplexing per le operazioni di seguito riportate. Il pacchetto può essere inoltrato alla destinazione corretta. La destinazione può utilizzare il payload del pacchetto per recapitare i dati all'applicazione corretta. L'applicazione di ricezione può inviare una risposta. Durante l'invio di un pacchetto, le informazioni sono utilizzate nei modi di seguito riportati. I router che inoltrano pacchetti IPv4 o IPv6 utilizzano il campo Destination IP Address, in caso di intestazione IPv4, o Destination Address, in caso di intestazione IPv6, per recapitare il pacchetto al nodo di rete corretto. Il nodo di destinazione utilizza il campo Protocol, in caso di intestazione IPv4, o Next Header, in caso di intestazione IPv6, per recapitare il payload del pacchetto al protocollo corretto di livello superiore. In caso di segmenti TCP o messaggi UDP, il nodo di destinazione utilizza il campo Destination Port dell'intestazione per eseguire il demultiplexing dei dati interni al segmento TCP o al messaggio UDP all'applicazione corretta. Nella figura 2-5 è mostrato un esempio di messaggio DNS Name Query Request (richiesta query nome DNS) di un pacchetto IPv4 con demultiplexing di un indirizzo di destinazione IP, 131.107.89.223, al servizio DNS. Figura 2-5 Esempio di demultiplexing di un pacchetto IPv4 API (Application Programming Interface) Le applicazioni di rete Windows accedono ai servizi TCP/IP in Windows mediante due API (Application Programming Interface) principali: Windows Sockets e NetBIOS. Nella figura 2-6 sono mostrate queste API e i possibili flussi di dati da esse generato. Figura 2-6 Architettura delle API Windows Sockets e NetBIOS Di seguito sono illustrate alcune differenze a livello di architettura delle API Windows Sockets e NetBIOS. L'interfaccia NetBIOS over TCP/IP (NetBT) è definita per operazioni su IPv4. Windows Sockets opera sia su IPv4 che su IPv6. Le applicazioni Windows Sockets sono in grado di operare direttamente sui livelli Internet IPv4 o IPv6 senza l'utilizzo di TCP o UDP. NetBIOS opera soltanto su TCP e UDP. Windows Sockets Windows Sockets è un'API moderna, di norma utilizzata per applicazioni di rete in Windows. I servizi e gli strumenti TCP/IP forniti con Windows sono esempi di applicazioni Windows Sockets. I servizi forniti da Windows Sockets consentono alle applicazioni di utilizzare un indirizzo e una porta IP specifici, di inizializzare e accettare una connessione a un indirizzo e una porta IP di destinazione specifici, di inviare e ricevere dati, di chiudere una connessione. Esistono tre tipi di socket: Un socket di flusso che fornisce tramite TCP un flusso di dati bidirezionale, affidabile, in sequenza e non duplicato. Un socket di datagramma che fornisce un flusso di dati bidirezionale tramite UDP. Un socket di tipo raw che consente ai protocolli di accedere direttamente al protocollo IP senza utilizzare TCP o UDP. Un socket funge da endpoint della comunicazione di rete. Un'applicazione crea un socket di flusso o datagramma attraverso la specificazione di tre elementi: indirizzo IP dell'host; tipo di servizio (TCP per servizio basato sulla connessione e UDP per servizio non orientato alla connessione); porta in corso di utilizzo da parte dell'applicazione. Due socket, uno per ciascuna estremità della connessione, formano un percorso di comunicazioni bidirezionale. Per i socket di tipo raw, l'applicazione deve specificare il payload IP completo. NetBIOS NetBIOS è un'API precedente a Windows Sockets che fornisce servizi per gestione nomi, datagrammi e sessioni in applicazioni NetBIOS. Un programma applicativo che utilizza come API per la comunicazione di rete NetBIOS può essere eseguito su tutte le implementazioni di protocollo che supportano l'interfaccia NetBIOS. Esempi di servizi e applicazioni Windows che utilizzano NetBIOS sono la condivisione di file e stampanti e il servizio Browser di computer. NetBIOS definisce inoltre un protocollo che funziona al livello Sessione del modello OSI. Questo livello è implementato dal protocollo sottostante, ad esempio NetBT (NetBIOS over TCP/IP), definito nei documenti RFC 1001 e 1002. Il servizio nomi NetBIOS utilizza la porta UDP 137. Il servizio datagrammi NetBIOS utilizza la porta 138. Il servizio sessioni NetBIOS utilizza la porta TCP 139. Schemi di denominazione TCP/IP in Windows Sebbene il protocollo IP sia stato progettato per operare con indirizzi di host di invio e di destinazione a 32 bit (IPv4) e 128 bit (IPv6), gli utenti riescono a utilizzare e ricordare più facilmente i nomi che non gli indirizzi IP. Perché un nome possa essere utilizzato come alias di un indirizzo IP, sono necessari meccanismi che consentano di assegnare nomi agli indirizzi, garantire l'univocità degli stessi e risolverli nei corrispondenti indirizzi IP. I componenti TCP/IP di Windows assegnano e risolvono i nomi host delle applicazioni Windows Sockets e i nomi NetBIOS delle applicazioni NetBIOS utilizzando meccanismi distinti. Nomi host Un nome host è un alias assegnato a un nodo IP per identificarlo come host TCP/IP. Il nome host può avere una dimensione massima di 255 caratteri e contenere caratteri alfabetici o numerici, nonché "-" e ".". È possibile assegnare allo stesso host più nomi. Le applicazioni Windows Sockets, come Internet Explorer e lo strumento Ping, possono fare riferimento alla destinazione utilizzando l'indirizzo IP o un nome host. Quando viene specificato un indirizzo IP non è necessario risolvere il nome. Se si specifica un nome host, prima che possa essere avviata una comunicazione IP con la risorsa di destinazione, il nome host deve essere risolto in un indirizzo IP. I nomi host possono assumere diversi formati: i più comuni dei quali sono uno pseudonimo e un nome di dominio completo (FQDN). Uno pseudonimo è un alias a un indirizzo IP assegnato e utilizzato da un individuo. Un FQDN è un nome strutturato, ad esempio www.microsoft.com, che segue le convenzioni Internet utilizzate in DNS. Nomi NetBIOS Un nome NetBIOS è un nome a 16 byte che identifica un'applicazione NetBIOS nella rete. Il nome può essere univoco (esclusivo) o di gruppo (non esclusivo). Quando un'applicazione NetBIOS comunica con un'altra specifica applicazione su un computer specifico, viene utilizzato un nome univoco. Quando un processo NetBIOS comunica con più applicazioni NetBIOS su più computer, viene utilizzato un nome di gruppo. Il nome NetBIOS identifica applicazioni al livello Sessione del modello OSI. Ad esempio, il servizio sessioni NetBIOS opera sulla porta TCP 139. Poiché tutte le richieste di sessione sono indirizzate alla porta di destinazione TCP 139, un'applicazione NetBIOS deve utilizzare il nome NetBIOS di destinazione al momento dello stabilimento di una sessione. Il servizio server di condivisione di file e stampanti su un computer Windows è un esempio di processo che utilizza un nome NetBIOS. All'avvio del computer, il servizio server registra un nome NetBIOS univoco basato sul nome del computer. Il nome esatto utilizzato dal servizio server è il nome del computer di 15 caratteri più un sedicesimo carattere di 0x20. Per nomi di computer inferiori a 15 caratteri vengono inseriti degli spazi fino al raggiungimento di 15 caratteri. Anche altri servizi di rete creano il proprio nome NetBIOS utilizzando il nome del computer e il sedicesimo carattere serve di norma ad identificare ciascun servizio. Quando si cerca di effettuare una connessione di condivisione file per un computer sul quale è in esecuzione Windows Server 2003 o Windows XP tramite nome, il servizio Server nel file server specificato corrisponde a uno specifico nome NetBIOS. Ad esempio, quando si tenta di connettersi a un computer denominato CORPSERVER, il nome NetBIOS corrispondente al servizio Server sarà CORPSERVER <20>. Si noti l'utilizzo degli spazi per completare il nome del computer. Prima che sia possibile stabilire una connessione di condivisione file e stampanti, è necessario creare una connessione TCP. Per poter creare una connessione TCP, sarà necessario risolvere il nome NetBIOS CORPSERVER <20> in un indirizzo IPv4. La risoluzione dei nomi NetBIOS è il processo di mapping di un nome NetBIOS a un indirizzo IPv4. Riepilogo del capitolo Di seguito sono riportate le informazioni chiave del presente capitolo. La suite di protocolli TCP/IP corrisponde ai quattro livelli del modello DARPA: Applicazione, Trasporto, Internet e Interfaccia di rete. I protocolli del livello Internet IPv4 sono ARP, IP (IPv4), ICMP e IGMP. I protocolli del livello Internet IPv6 sono IPv6, ICMPv6, ND e MLD. I protocolli del livello Trasporto comprendono TCP e UDP. Il protocollo TCP è un servizio di recapito affidabile e orientato alla connessione. Il protocollo UDP fornisce un servizio per datagrammi non orientato alla connessione che assicura un recapito inaffidabile, di tipo massimo sforzo (best-effort), dei dati trasmessi in messaggi. Il multiplexing e il demultiplexing di pacchetti IP effettuato tra le applicazioni si basa sui campi presenti nelle intestazioni IPv4, IPv6, TCP e UDP. I componenti TCP/IP supportano per le applicazioni di rete in Windows due API principali: Windows Sockets e NetBIOS. Windows Sockets è un'API recente che consente alle applicazioni di gestire socket di flusso, datagramma e di tipo raw. NetBIOS è un'API precedente che consente alle applicazioni di gestire nomi NetBIOS, datagrammi e sessioni. I componenti TCP/IP supportano per le applicazioni di rete in Windows due schemi di denominazione: nomi host (utilizzati da applicazioni Windows Sockets) e nomi NetBIOS (utilizzati da applicazioni NetBIOS). Glossario del capitolo autoconfigurazione indirizzi - Processo ND di configurazione automatica di indirizzi IPv6 su un'interfaccia. risoluzione indirizzi - Processo IPv4 (tramite ARP) o IPv6 (tramite ND) che risolve l'indirizzo MAC relativo a un indirizzo IP di hop successivo. Address Resolution Protocol (ARP) - Protocollo che risolve un indirizzo IPv4 nel corrispondente indirizzo MAC mediante traffico broadcast sulla rete locale. ARP - Vedere Address Resolution Protocol. cache ARP - Tabella relativa a ciascuna interfaccia di indirizzi IPv4 risolti in modo statico o dinamico con i corrispondenti indirizzi MAC. ICMP - Vedere Internet Control Message Protocol. ICMPv6 - Vedere Internet Control Message Protocol for IPv6. IGMP - Vedere Internet Group Management Protocol. Internet Control Message Protocol (ICMP) - Protocollo del livello Internet IPv4 che riporta errori e fornisce strumenti per la risoluzione di problemi. Internet Control Message Protocol for IPv6 (ICMPv6) - Protocollo del livello Internet IPv6 che riporta errori, fornisce strumenti per la risoluzione di problemi e ospita messaggi ND e MLD. Internet Group Management Protocol (IGMP) - Protocollo del livello Internet IPv4 che gestisce l'appartenenza a gruppi multicast in una subnet. Internet Protocol (IP) - Per IPv4, protocollo instradabile del livello Internet IPv4 che indirizza, instrada, suddivide in frammenti e riassembla pacchetti. Utilizzato anche per indicare entrambi gli insiemi di protocolli IPv4 e IPv6. IP - Vedere Internet Protocol. IPv4 - Livello Internet ampiamente utilizzato in Internet e nelle reti Intranet private. Sinonimo di IP. IPv6 - Nuovo livello Internet che in futuro sostituirà il livello Internet IPv4. MLD - Vedere Multicast Listener Discovery. Multicast Listener Discovery (MLD) - Insieme di tre messaggi ICMPv6 utilizzati da router e host per gestire l'appartenenza a gruppi multicast in una subnet. risoluzione nomi - Processo di risoluzione di un nome in un indirizzo. ND - Vedere Neighbor Discovery. cache adiacente - Cache mantenuta da ogni nodo IPv6 in cui vengono archiviati l'indirizzo IPv6 di un vicino e il corrispondente indirizzo MAC. La cache adiacente equivale alla cache ARP in IPv4. Neighbor Discovery (ND) - Insieme di messaggi e processi ICMPv6 che determinano le relazioni tra nodi adiacenti. Neighbor Discovery sostituisce i messaggi ARP, ICMP Router Discovery e ICMP Redirect utilizzati in IPv4. Network Basic Input/Output System (NetBIOS) - API standard attraverso cui le applicazioni utente sono in grado di gestire nomi NetBIOS e accedere a servizi per sessioni e datagrammi NetBIOS. NetBIOS - Vedere Network Basic Input/Output System. rilevamento router - Processo Neighbor Discovery durante il quale un host individua i router locali della subnet collegata. TCP - Vedere Transmission Control Protocol. Transmission Control Protocol (TCP) - Protocollo di livello Trasporto affidabile e orientato alla connessione che viene eseguito al livello più alto del protocollo IP. UDP - Vedere User Datagram Protocol. User Datagram Protocol (UDP) - Protocollo di livello Trasporto inaffidabile e non orientato alla connessione, che viene eseguito al livello più alto del protocollo IP. Windows Sockets - API utilizzata di norma da applicazioni Windows per trasferire dati tramite il protocollo TCP/IP. Nozioni fondamentali sul protocollo TCP/IP per Microsoft Windows: Capitolo 3 - Indirizzi IP http://technet.microsoft.com/it-it/library/bb726995.aspx Abstract Nel presente capitolo vengono fornite informazioni dettagliate sugli indirizzi IPv4 e IPv6. Per gli amministratori di rete è importante comprendere entrambi i tipi di indirizzi per l'amministrazione delle reti TCP/IP (Transmission Control Protocol/Internet Protocol) e per la risoluzione dei problemi relativi alle comunicazioni basate su TCP/IP. Nel capitolo vengono descritti dettagliatamente gli indirizzi di tipo IPv4 (Internet Protocol version 4) e IPv6 (Internet Protocol version 6), le modalità in cui vengono espressi e i tipi di indirizzi unicast assegnati alle interfacce dei nodi di rete. In questa pagina Obiettivi del capitolo Indirizzi IPv4 Indirizzi IPv6 Confronto tra gli indirizzi IPv4 e IPv6 Riepilogo del capitolo Glossario del capitolo Obiettivi del capitolo Al termine di questo capitolo, si sarà in grado di eseguire le seguenti attività: Descrivere la sintassi degli indirizzi e dei prefissi degli indirizzi IPv4 ed eseguire la conversione tra numeri binari e decimali. Elencare i tre tipi di indirizzi IPv4 e fornire esempi per ogni tipo. Descrivere le differenze tra indirizzi IPv4 pubblici, privati e non validi. Descrivere la sintassi degli indirizzi e dei prefissi degli indirizzi IPv6 ed eseguire la conversione tra numeri binari ed esadecimali. Elencare i tre tipi di indirizzi IPv6 e fornire esempi per ogni tipo. Descrivere le differenze tra indirizzi IPv6 unicast locali del collegamento, locali del sito e globali. Convertire un indirizzo IEEE (Institute of Electrical and Electronics Engineers) 802 in un identificatore di interfaccia IPv6. Confrontare gli indirizzi e il concetto di indirizzo di tipo IPv4 e IPv6. Indirizzi IPv4 Un indirizzo IP è un identificatore assegnato a livello di Internet a un'interfaccia o a un insieme di interfacce. Ogni indirizzo IP consente di identificare l'origine o la destinazione dei pacchetti IP. Nel caso di IPv4, ogni nodo in una rete dispone di una o più interfacce, in ognuna delle quali è possibile abilitare il protocollo TCP/IP. Quando si abilita il protocollo TCP/IP in un'interfaccia, si assegnano uno o più indirizzi logici IPv4, automaticamente o manualmente. L'indirizzo IPv4 è di tipo logico in quanto viene assegnato a livello di Internet e non è correlato agli indirizzi utilizzati a livello di interfaccia di rete. Gli indirizzi IPv4 sono composti da 32 bit. Sintassi degli indirizzi IPv4 Se gli amministratori di rete utilizzassero la notazione binaria per gli indirizzi IPv4, ognuno di tali indirizzi consisterebbe in una stringa a 32 cifre, composta da un'alternanza di 0 e 1. Poiché stringhe di questo tipo sono impegnative da esprimere e ricordare, gli amministratori utilizzano una notazione decimale con punti che separano quattro numeri decimali compresi tra 0 e 255. Ogni numero decimale, noto come ottetto, rappresenta 8 bit, ovvero un byte, dell'indirizzo a 32 bit. L'indirizzo IPv4 11000000101010000000001100011000 viene ad esempio espresso come 192.168.3.24 nella notazione decimale separata da punti. Per convertire un indirizzo IPv4 da notazione binaria a decimale, è necessario eseguire le operazioni seguenti: Segmentare l'indirizzo in blocchi di 8 bit: 11000000 10101000 00000011 00011000 Convertire in formato decimale ognuno dei blocchi: 192 168 3 24 Separare i blocchi tramite punti: 192.168.3.24 Quando si fa riferimento a un indirizzo IPv4, si utilizza la notazione w.x.y.z. Nella figura 3-1 è illustrata la struttura di un indirizzo IPv4. Figura 3-1 Indirizzo IPv4 in notazione decimale separata da punti Per acquisire familiarità con la conversione tra formato binario e decimale, fare riferimento alle informazioni sui sistemi di numerazione binario, base2, e decimale, base10, e sulle modalità di conversione tra i due sistemi. In alternativa, è possibile utilizzare la calcolatrice disponibile nel sistema operativo Microsoft® Windows Server™ 2003 o Windows® XP per eseguire la conversione tra formato decimale e binario, sebbene per comprendere meglio il concetto sia preferibile effettuare l'operazione manualmente. Conversione da formato binario a decimale Nel sistema di numerazione decimale i numeri vengono espressi utilizzando le cifre comprese tra 0 e 9 e i valori esponenziali di 10. Il numero decimale 207 è dato ad esempio dalla somma di 2x102 + 0x101 + 7x100. Nel sistema di numerazione binario i numeri vengono espressi utilizzando le cifre 1 e 0 e i valori esponenziali di 2. Il numero binario 11001 è dato ad esempio dalla somma di 1x24 + 1x23 + 0x22 + 0x21 + 1x20. Nella notazione decimale separata da punti non sono mai inclusi numeri superiori a 255, in quanto ogni numero decimale rappresenta 8 bit di un indirizzo a 32 bit. Il numero massimo che è possibile esprimere con 8 bit in formato binario è 11111111, che in formato decimale corrisponde a 255. Nella figura 3-2 sono illustrati le posizioni dei bit e i relativi valori decimali di un numero binario a 8 bit. Figura 3-2 Numero binario a 8 bit Per convertire manualmente da binario a decimale un numero a 8 bit, iniziando dalla parte superiore della figura 3-2, eseguire le operazioni seguenti: 1. 2. 3. 4. 5. 6. 7. 8. Se la posizione dell'ottavo bit corrisponde a 1, aggiungere 128 al totale. Se la posizione del settimo bit corrisponde a 1, aggiungere 64 al totale. Se la posizione del sesto bit corrisponde a 1, aggiungere 32 al totale. Se la posizione del quinto bit corrisponde a 1, aggiungere 16 al totale. Se la posizione del quarto bit corrisponde a 1, aggiungere 8 al totale. Se la posizione del terzo bit corrisponde a 1, aggiungere 4 al totale. Se la posizione del secondo bit corrisponde a 1, aggiungere 2 al totale. Se la posizione del primo bit corrisponde a 1, aggiungere 1 al totale. Nel caso ad esempio del numero binario a 8 bit 10111001: 1. 2. 3. 4. 5. 6. 7. 8. La posizione dell'ottavo bit corrisponde a 1. Aggiungere 128 al totale. Il totale a questo punto è 128. La posizione del settimo bit corrisponde a 0. La posizione del sesto bit corrisponde a 1. Aggiungere 32 al totale. Il totale a questo punto è 160. La posizione del quinto bit corrisponde a 1. Aggiungere 16 al totale. Il totale a questo punto è 176. La posizione del quarto bit corrisponde a 1. Aggiungere 8 al totale. Il totale a questo punto è 184. La posizione del terzo bit corrisponde a 0. La posizione del secondo bit corrisponde a 0. La posizione del primo bit corrisponde a 1. Aggiungere 1 al totale. Il totale a questo punto è 185. Il numero binario 10111001 corrisponde pertanto al numero decimale 185. Riepilogando, per convertire un numero binario nell'equivalente decimale, sommare gli equivalenti decimali per le posizioni dei bit impostati su 1. Se tutti gli 8 bit sono impostati su 1, sommare 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 per ottenere 255. Conversione da formato decimale a binario Per convertire manualmente da decimale a binario un numero minore o uguale a 255, iniziando dalla colonna decimale della figura 3-2, eseguire le operazioni seguenti: 1. 2. 3. 4. 5. 6. 7. 8. Se il numero è maggiore di 127, collocare un 1 nella posizione dell'ottavo bit e sottrarre 128 dal numero. In caso contrario, collocare uno 0 nella posizione dell'ottavo bit. Se il numero rimanente è maggiore di 63, collocare un 1 nella posizione del settimo bit e sottrarre 64 dal numero. In caso contrario, collocare uno 0 nella posizione del settimo bit. Se il numero rimanente è maggiore di 31, collocare un 1 nella posizione del sesto bit e sottrarre 32 dal numero. In caso contrario, collocare uno 0 nella posizione del sesto bit. Se il numero rimanente è maggiore di 15, collocare un 1 nella posizione del quinto bit e sottrarre 16 dal numero. In caso contrario, collocare uno 0 nella posizione del quinto bit. Se il numero rimanente è maggiore di 7, collocare un 1 nella posizione del quarto bit e sottrarre 8 dal numero. In caso contrario, collocare uno 0 nella posizione del quarto bit. Se il numero rimanente è maggiore di 3, collocare un 1 nella posizione del terzo bit e sottrarre 4 dal numero. In caso contrario, collocare uno 0 nella posizione del terzo bit. Se il numero rimanente è maggiore di 1, collocare un 1 nella posizione del secondo bit e sottrarre 2 dal numero. In caso contrario, collocare uno 0 nella posizione del secondo bit. Se il numero rimanente equivale a 1, collocare un 1 nella posizione del primo bit. In caso contrario, collocare uno 0 nella posizione del primo bit. Di seguito è riportato un esempio della conversione del numero decimale 197 in binario: 1. 2. 3. 4. 5. 6. 7. 8. Poiché 197 è maggiore di 127, collocare un 1 nella posizione dell'ottavo bit e sottrarre 128 da 197. Si otterrà come risultato 69. Fino a questo momento, il numero binario è 1xxxxxxx. Poiché 69 è maggiore di 63, collocare un 1 nella posizione del settimo bit e sottrarre 64 da 69. Si otterrà come risultato 5. Fino a questo momento, il numero binario è 11xxxxxx. Poiché 5 non è maggiore di 31, collocare uno 0 nella posizione del sesto bit. Fino a questo momento, il numero binario è 110xxxxx. Poiché 5 non è maggiore di 15, collocare uno 0 nella posizione del quinto bit. Fino a questo momento, il numero binario è 1100xxxx. Poiché 5 non è maggiore di 7, collocare uno 0 nella posizione del quarto bit. Fino a questo momento, il numero binario è 11000xxx. Poiché 5 è maggiore di 3, collocare un 1 nella posizione del terzo bit e sottrarre 4 da 5. Si otterrà come risultato 1. Fino a questo momento, il numero binario è 110001xx. Poiché 1 non è maggiore di 1, collocare uno 0 nella posizione del secondo bit. Fino a questo momento, il numero binario è 1100010x. Poiché 1 è equivalente a 1, collocare un 1 nella posizione del primo bit. Il numero binario finale è 11000101. Il numero decimale 197 corrisponde al numero binario 11000101. Riepilogando, per convertire un numero decimale in binario, verificare se il numero decimale contiene le quantità rappresentate dalle posizioni dei bit a partire dall'ottavo bit fino al primo. Partendo dalla quantità dell'ottavo bit, ovvero 128, se la quantità è presente, impostare su 1 il bit in quella posizione. Il numero decimale 211 contiene ad esempio 128, 64, 16, 2 e 1. In notazione binaria il numero corrisponde pertanto a 11010011. Prefissi degli indirizzi IPv4 Ogni bit di un indirizzo IPv4 univoco ha un valore definito. I prefissi degli indirizzi IPv4 indicano tuttavia un intervallo di indirizzi IPv4 in cui zero o più bit di ordine superiore sono fissati su valori specifici e i rimanenti bit variabili di ordine inferiore sono impostati su zero. I prefissi degli indirizzi sono in genere utilizzati per esprimere un intervallo di indirizzi consentiti, identificatori di rete assegnati a subnet e route. Per esprimere un prefisso di un indirizzo IPv4, è necessario identificare i bit di ordine superiore fissi e il relativo valore. È quindi possibile utilizzare la notazione della lunghezza del prefisso o la notazione decimale separata da punti. Notazione della lunghezza del prefisso Se si utilizza la notazione della lunghezza del prefisso, i prefissi degli indirizzi vengono espressi come IndirizzoIniziale/LunghezzaPrefisso, dove: IndirizzoIniziale è l'espressione in notazione decimale separata da punti del primo indirizzo matematicamente possibile nell'intervallo. Per comporre l'indirizzo iniziale, impostare i bit fissi sui relativi valori definiti e i bit rimanenti su 0. LunghezzaPrefisso indica il numero di bit fissi di ordine superiore nell'indirizzo. Il prefisso dell'indirizzo IPv4 131.107.0.0/16 specifica ad esempio un intervallo di 65.536 indirizzi. La lunghezza del prefisso, 16, specifica che tutti gli indirizzi nell'intervallo iniziano con gli stessi 16 bit, che rappresentano l'indirizzo iniziale. Poiché i primi 16 bit dell'indirizzo iniziale sono fissati a 10000011 01101011, ovvero 131 107 in formato decimale, tutti gli indirizzi nell'intervallo hanno 131 come primo ottetto e 107 come secondo ottetto. Poiché ci sono 16 bit variabili negli ultimi due ottetti, sono disponibili in tutto 216 o 65.536 indirizzi possibili. Per specificare un prefisso di un indirizzo tramite la notazione della lunghezza del prefisso, è necessario creare l'indirizzo iniziale impostando tutti i bit variabili su 0, convertire l'indirizzo nella notazione decimale separata da punti, quindi aggiungere una barra e il numero di bit fissi, ovvero la lunghezza del prefisso, dopo l'indirizzo iniziale. Il prefisso dell'indirizzo IPv4 131.107.0.0/16 ha 16 bit fissi (10000011 01101011). L'indirizzo iniziale è composto dai 16 bit fissi, mentre gli ultimi 16 bit sono impostati su 0. Il risultato è pertanto 10000011 01101011 00000000 00000000 o 131.107.0.0. È quindi necessario aggiungere una barra e specificare il numero di bit fissi (/16) per esprimere il prefisso dell'indirizzo, ad esempio 131.107.0.0/16. La notazione della lunghezza del prefisso è detta anche notazione CIDR (Classless Inter-Domain Routing). Notazione decimale separata da punti È anche possibile esprimere la lunghezza del prefisso di un indirizzo IPv4 come numero a 32 bit in notazione decimale separata da punti. Per utilizzare questo metodo, impostare tutti i bit fissi su 1 e tutti quelli variabili su 0, quindi convertire il risultato in notazione decimale separata da punti. Continuando a utilizzare l'esempio precedente, impostare i 16 bit fissi su 1 e i 16 bit variabili su 0. Il risultato sarà 11111111 11111111 00000000 00000000 o 255.255.0.0. Il prefisso dell'indirizzo viene espresso come 131.107.0.0, 255.255.0.0. Questo tipo di espressione della lunghezza del prefisso come numero decimale separato da punti è detta anche notazione network mask o subnet mask. Nella tabella 3-1 sono elencati i valori decimali di un ottetto quando si impostano su 1 i bit di ordine superiore successivi di un numero a 8 bit. Numero di bit 0 1 2 3 4 5 6 7 8 Formato binario 00000000 10000000 11000000 11100000 11110000 11111000 11111100 11111110 11111111 Formato decimale 0 128 192 224 240 248 252 254 255 Tabella 3-1 Valori decimali per le lunghezze dei prefissi Quando si configurano i prefissi degli indirizzi IPv4 in Windows, si utilizza più frequentemente la notazione subnet mask rispetto a quella della lunghezza del prefisso. È tuttavia necessario conoscere entrambi i tipi di notazione, in quanto in alcune finestre di dialogo per la configurazione di Windows è necessario utilizzare la notazione della lunghezza del prefisso e non la subnet mask e inoltre perché il protocollo IPv6 supporta solo la notazione della lunghezza del prefisso. Tipi di indirizzi IPv4 Tramite gli standard Internet vengono definiti i tipi di indirizzi IPv4 seguenti: Unicast Assegnati a una singola interfaccia di rete situata in una subnet specifica e utilizzati per le comunicazioni unoa-uno. Multicast Assegnati a una o più interfacce di rete situate in diverse subnet e utilizzati per le comunicazioni uno-a-molti. Broadcast Assegnati a tutte le interfacce di rete situate in una subnet e utilizzati per le comunicazioni uno-a-tutti nella subnet. Nelle sezioni seguenti vengono descritti dettagliatamente questi tipi di indirizzi. Indirizzi unicast IPv4 Un indirizzo unicast IPv4 identifica la posizione di un'interfaccia nella rete, nello stesso modo in cui un indirizzo stradale identifica una casa in un isolato. Proprio come gli indirizzi stradali devono identificare un'unica abitazione, gli indirizzi unicast IPv4 devono essere globalmente univoci e avere un formato uniforme. Ogni indirizzo unicast IPv4 include una parte riservata all'ID di rete e una all'ID host. La parte riservata all'ID di rete, detto anche indirizzo di rete, di un indirizzo unicast IPv4 identifica l'insieme di interfacce che si trovano nello stesso segmento di rete fisico o logico, i cui confini sono definiti dai router IPv4. Un segmento di rete in una rete TCP/IP è anche detto subnet o collegamento. Tutti i nodi nella stessa subnet fisica o logica devono utilizzare lo stesso ID di rete e tale ID deve essere univoco nell'intera rete TCP/IP. La parte riservata all'ID host, detto anche indirizzo host, di un indirizzo unicast IPv4 identifica l'interfaccia di un nodo di rete in una subnet. L'ID host deve essere univoco all'interno del segmento di rete. Nella figura 3-3 è illustrata la struttura di un indirizzo unicast IPv4 di esempio. Figura 3-3 Struttura di un indirizzo unicast IPv4 di esempio Se l'ID di rete è univoco nella rete TCP/IP e l'ID host è univoco nel segmento di rete, l'intero indirizzo unicast IPv4 è univoco nell'intera rete TCP/IP. Classi di indirizzi Internet In Internet sono state originariamente definite classi di indirizzi per assegnare in modo sistematico i prefissi degli indirizzi di reti di varie dimensioni. La classe di un indirizzo definisce il numero di bit utilizzati per l'ID di rete e di bit utilizzati per l'ID host. Le classi di indirizzi definiscono inoltre il numero possibile di reti e quello di host per rete. Delle cinque classi di indirizzi esistenti, le classi A, B e C sono state riservate agli indirizzi unicast IPv4. La classe D è stata riservata agli indirizzi multicast IPv4 e la classe E a un utilizzo di tipo sperimentale. Gli ID di rete di classe A sono stati assegnati alle reti con un numero di host molto elevato. La lunghezza del prefisso degli ID di rete di classe A è di soli 8 bit. In questo modo, tramite i 24 bit rimanenti è possibile identificare fino a 16.777.214 ID host. A causa tuttavia della limitata lunghezza del prefisso, il numero di reti di classe A può essere al massimo 126. In primo luogo, il bit di ordine superiore in un ID di rete di classe A è sempre impostato su 0. In questo modo, il numero di ID di rete di classe A si riduce da 256 a 128. In secondo luogo, gli indirizzi in cui i primi otto bit sono impostati su 00000000 non possono essere assegnati in quanto costituiscono un ID di rete riservato. Infine, gli indirizzi in cui i primi otto bit sono impostati su 01111111, ovvero 127 in formato decimale, non possono essere assegnati in quanto sono riservati per gli indirizzi di loopback. A causa di queste ultime due convenzioni, il numero di ID di rete di classe A passa da 128 a 126. Per qualsiasi ID di rete IPv4, i due ID host in cui tutti i bit relativi all'host sono impostati su 0, ovvero l'ID host costituito da soli valori 0, o su 1, ovvero l'ID host costituito da soli valori 1, non possono essere assegnati alle interfacce dei nodi di rete. A causa di questa convenzione, il numero di ID host in ogni rete di classe A viene ridotto da 16.777.216 (224) a 16.777.214. Nella figura 3-4 è illustrata la struttura degli indirizzi di classe A. Figura 3-4 Struttura degli indirizzi di classe A Gli ID di rete di classe B sono stati assegnati alle reti di medie e grandi dimensioni. Negli indirizzi di queste reti i primi 16 bit specificano una rete particolare e gli ultimi 16 un host particolare. I due bit di ordine superiore in un indirizzo di classe B sono tuttavia sempre impostati su 10, pertanto il prefisso dell'indirizzo per tutti gli indirizzi e le reti di classe B corrisponde a 128.0.0.0/2 oppure a 128.0.0.0, 192.0.0.0. Negli indirizzi di classe B 14 bit sono dedicati agli ID di rete e 16 bit agli ID host e pertanto tali indirizzi possono essere assegnati a 16.384 reti con un numero massimo di 65.534 host per rete. Nella figura 3-5 è illustrata la struttura degli indirizzi di classe B. Figura 3-5 Struttura degli indirizzi di classe B Gli indirizzi di classe C sono stati assegnati alle reti di piccole dimensioni. Negli indirizzi di queste reti i primi 24 bit specificano una rete particolare e gli ultimi 8 host particolari. I tre bit di ordine superiore in un indirizzo di classe C sono tuttavia sempre impostati su 110, pertanto il prefisso dell'indirizzo per tutti gli indirizzi e le reti di classe C corrisponde a 192.0.0.0/3 oppure a 192.0.0.0, 224.0.0.0. Negli indirizzi di classe C 21 bit sono dedicati agli ID di rete e 8 bit agli ID host, pertanto tali indirizzi possono essere assegnati a 2.097.152 reti con un numero massimo di 254 host per rete. Nella figura 3-6 è illustrata la struttura degli indirizzi di classe C. Figura 3-6 Struttura degli indirizzi di classe C Gli indirizzi di classe D sono riservati a indirizzi multicast IPv4. I quattro bit di ordine superiore in un indirizzo di classe D sono sempre impostati su 1110, pertanto il prefisso dell'indirizzo per tutti gli indirizzi di classe D corrisponde a 224.0.0.0/4 oppure a 224.0.0.0, 240.0.0.0. Per ulteriori informazioni, vedere la sezione "Indirizzi multicast IPv4" in questo capitolo. Gli indirizzi di classe E sono riservati a un utilizzo di tipo sperimentale. I quattro bit di ordine superiore in un indirizzo di classe E sono impostati su 1111, pertanto il prefisso dell'indirizzo per tutti gli indirizzi di classe E corrisponde a 240.0.0.0/4 oppure a 240.0.0.0, 240.0.0.0. Nella tabella 3-2 è riportato un riepilogo delle classi di indirizzi Internet A, B e C che possono essere utilizzate per gli indirizzi unicast IPv4. Classe A B C Valore di w 1-126 127-191 192-223 Parte riservata all'ID di rete w w.x w.x.y Parte riservata all'ID host x.y.z y.z z ID di rete 126 16.384 2.097.152 ID host per rete 16.277.214 65.534 254 Tabella 3-2 Riepilogo delle classi di indirizzi Internet Indirizzi Internet moderni Le classi di indirizzi Internet rappresentano un metodo obsoleto di allocazione degli indirizzi unicast, che si è rivelato poco efficace. Un'organizzazione di grandi dimensioni con una rete di classe A può ad esempio avere fino a 16.777.214 host. Se tuttavia l'organizzazione utilizza solo 70.000 ID host, verranno sprecati 16.707.214 indirizzi unicast IPv4 potenziali. Dal 1993, i prefissi degli indirizzi IPv4 vengono assegnati in base alle effettive esigenze delle organizzazioni relativamente agli indirizzi unicast IPv4 a cui sia possibile accedere via Internet. Questo metodo è noto anche come CIDR (Classless Inter-Domain Routing). Se, ad esempio, un'organizzazione determina di avere bisogno di 2.000 indirizzi unicast IPv4 a cui sia possibile accedere via Internet, l'autorità ICANN (Internet Corporation for Assigned Names and Numbers) oppure un provider di servizi Internet (ISP, Internet Service Provider) provvederà all'allocazione di un prefisso degli indirizzi IPv4 con 21 bit fissi e 11 bit riservati agli ID host. Tramite questi 11 bit è possibile creare 2.046 indirizzi unicast IPv4. Generalmente le allocazioni di indirizzi basati sulla notazione CIDR iniziano con 24 bit assegnati all'ID di rete e 8 all'ID host. Nella tabella 3-3 sono indicate le diverse lunghezze dei prefissi in base al numero di ID host richiesti per quanto riguarda le allocazioni di indirizzi basati su CIDR. Numero di ID host 2-254 255-510 511-1.022 1.021-2.046 2.047-4.094 Lunghezza del prefisso /24 /23 /22 /21 /20 Notazione decimale separata da punti 255.255.255.0 255.255.254.0 255.255.252.0 255.255.248.0 255.255.240.0 4.095-8.190 8.191-16.382 16.383-32.766 32.767-65.534 /19 /18 /17 /16 255.255.224.0 255.255.192.0 255.255.128.0 255.255.0.0 Tabella 3-3 Requisiti relativi a ID host e lunghezze dei prefissi degli indirizzi basati su CIDR Indirizzi pubblici Se si desidera disporre di connettività diretta a Internet, ovvero tramite instradamento, è necessario utilizzare gli indirizzi pubblici. Se si desidera disporre di connettività indiretta, ovvero tramite proxy o conversione, è possibile utilizzare sia indirizzi pubblici che privati. Se la rete Intranet non è connessa a Internet in alcun modo, è possibile utilizzare tutti gli indirizzi unicast IPv4 desiderati. Se tuttavia la rete Intranet è connessa a Internet, è necessario utilizzare indirizzi privati per evitare problemi di rinumerazione. L'autorità ICANN assegna gli indirizzi pubblici, che consistono in ID di rete di classe allocati in passato o, più recentemente, in prefissi di indirizzi basati su CIDR e la cui univocità in Internet è garantita. Per i prefissi degli indirizzi basati su CIDR, il valore di w, ovvero del primo ottetto, è compreso tra 1 e 126 e tra 128 e 223, ad eccezione dei prefissi degli indirizzi privati, descritti nella sezione "Indirizzi privati" del presente capitolo. Quando l'autorità ICANN assegna un prefisso di un indirizzo pubblico a un'organizzazione, vengono aggiunte route ai router Internet affinché il traffico che corrisponde al prefisso dell'indirizzo possa raggiungere l'organizzazione. Quando, ad esempio, a un'organizzazione viene assegnato un prefisso di un indirizzo, tale prefisso esiste anche come route nei router Internet. I pacchetti IPv4 inviati a un indirizzo con il prefisso assegnato vengono instradati alla destinazione corretta. Indirizzi non validi Nelle reti Intranet di organizzazioni private in cui non è necessaria una connessione Internet è possibile scegliere lo schema di indirizzi desiderato, anche utilizzando prefissi di indirizzi pubblici assegnati dall'autorità ICANN ad altre reti. Se successivamente l'organizzazione privata decide di utilizzare una connessione diretta a Internet, tali indirizzi possono entrare in conflitto con gli indirizzi pubblici esistenti, diventando indirizzi non validi. Le organizzazioni con indirizzi non validi non possono ricevere traffico verso tali indirizzi, in quanto tramite i router Internet viene inviato il traffico destinato ai prefissi degli indirizzi allocati dall'autorità ICANN e non alle organizzazioni che utilizzano indirizzi non validi. Se, ad esempio, un'organizzazione decide di utilizzare il prefisso 206.73.118.0/24 per gli indirizzi nella propria rete Intranet, poiché l'autorità ICANN ha assegnato tale prefisso a Microsoft Corporation, nei router Internet sono presenti route per l'invio dei pacchetti IPv4 con prefisso 206.73.118.0/24 a Microsoft. Fino a quando l'organizzazione privata non si connette a Internet, non si verifica alcun problema, in quanto i due prefissi degli indirizzi si trovano in reti IPv4 separate e pertanto gli indirizzi sono univoci in ognuna delle reti. Se successivamente l'organizzazione privata si connette direttamente a Internet e continua a utilizzare il prefisso 206.73.118.0/24, il traffico inviato tramite Internet a tali indirizzi arriverà a Microsoft e non all'organizzazione privata. Indirizzi privati Ogni interfaccia IPv4 deve disporre di un indirizzo IPv4 univoco nella rete IPv4. Nel caso di Internet, ogni interfaccia IPv4 in una subnet connessa a Internet deve disporre di un indirizzo IPv4 univoco in Internet. Con l'espandersi di Internet, per le organizzazioni connesse è diventato necessario disporre di un indirizzo pubblico per ogni interfaccia nella rete Intranet. Questo motivo ha portato a un'ingente richiesta di indirizzi del pool di indirizzi pubblici disponibili. Analizzando le necessità delle organizzazioni per quanto riguarda gli indirizzi, i progettisti di Internet si sono resi conto del fatto che per molte organizzazioni la maggior parte degli host non necessitava di connettività diretta a Internet. Per gli host per cui era necessario un insieme specifico di servizi Internet, ad esempio accesso Web e posta elettronica, l'accesso a tali servizi avveniva tramite gateway di livello applicazione, ad esempio server proxy e server di posta elettronica. Di conseguenza, per la maggior parte delle organizzazioni erano necessari solo pochi indirizzi pubblici per i nodi direttamente connessi a Internet, ad esempio proxy, server, router, firewall e convertitori. Per gli host all'interno dell'organizzazione che non necessitavano di accesso diretto a Internet, erano necessari indirizzi IPv4 che non duplicassero indirizzi pubblici già assegnati. Per risolvere questo problema di assegnazione degli indirizzi, è stato deciso di riservare una parte dello spazio degli indirizzi IPv4 agli indirizzi privati. Gli indirizzi IPv4 nello spazio degli indirizzi privati sono noti come indirizzi privati e non vengono mai assegnati come indirizzi pubblici. Poiché gli spazi degli indirizzi pubblici e privati non si sovrappongono, gli indirizzi privati non rappresentano mai un duplicato di quelli pubblici. Nella specifica RFC 1918 vengono definiti i seguenti prefissi per lo spazio degli indirizzi privati: 10.0.0.0/8 (10.0.0.0, 255.0.0.0) Consente il seguente intervallo di indirizzi unicast IPv4 validi: da 10.0.0.1 a 10.255.255.254. Il prefisso 10.0.0.0/8 ha 24 bit per l'host che possono essere utilizzati per qualsiasi schema di indirizzi all'interno di un'organizzazione privata. 172.16.0.0/12 (172.16.0.0, 255.240.0.0) Consente il seguente intervallo di indirizzi unicast IPv4 validi: da 172.16.0.1 a 172.31.255.254. Il prefisso 172.16.0.0/12 ha 20 bit per l'host che possono essere utilizzati per qualsiasi schema di indirizzi all'interno di un'organizzazione privata. 192.168.0.0/16 (192.168.0.0, 255.255.0.0) Consente il seguente intervallo di indirizzi unicast IPv4 validi: da 192.168.0.1 a 192.168.255.254. Il prefisso 192.168.0.0/16 ha 16 bit per l'host che possono essere utilizzati per qualsiasi schema di indirizzi all'interno di un'organizzazione privata. Poiché l'autorità ICANN non assegnerà mai gli indirizzi IPv4 nello spazio degli indirizzi privati a un'organizzazione connessa a Internet, i router Internet non conterranno mai route agli indirizzi privati. Non è possibile connettersi a un indirizzo privato in Internet. Un host con un indirizzo privato deve pertanto inviare le proprie richieste di traffico Internet a un gateway di livello applicazione, ad esempio un server proxy, che disponga di un indirizzo pubblico valido oppure tramite un dispositivo NAT (Network Address Translation) in grado di convertire l'indirizzo privato in un indirizzo pubblico valido. Indirizzi IP privati automatici Come descritto nel capitolo 1 "Introduzione al protocollo TCP/IP", è possibile configurare un'interfaccia in un computer in cui è in esecuzione Windows Server 2003 o Windows XP in modo che per tale interfaccia possa essere configurato automaticamente un indirizzo IPv4. Se tramite il computer non viene contattato un server DHCP (Dynamic Host Configuration Protocol), viene utilizzata la configurazione alternativa, come specificato nella scheda Configurazione alternativa della finestra di dialogo delle proprietà del componente Protocollo Internet (TCP/IP). Se nella scheda Configurazione alternativa è selezionata l'opzione Indirizzo IP privato automatico e non è possibile trovare un server DHCP, per il componente TCP/IP di Windows viene utilizzata la funzionalità APIPA (Automatic Private IP Addressing). Tramite il componente TCP/IP viene selezionato in modo casuale un indirizzo IPv4 dal prefisso degli indirizzi 169.254.0.0/16 e viene assegnata la subnet mask 255.255.0.0. L'autorità ICANN ha riservato questo prefisso degli indirizzi, che non può essere raggiunto in Internet. La funzionalità APIPA consente alle reti SOHO (Small Office/Home Office) con un'unica subnet di utilizzare il protocollo TCP/IP senza che sia necessario che un amministratore configuri e aggiorni gli indirizzi statici o amministri un server DHCP. Tramite la funzionalità APIPA non viene configurato un gateway predefinito e pertanto è possibile scambiare traffico solo con gli altri nodi nella subnet. Indirizzi IPv4 speciali Di seguito sono indicati gli indirizzi IPv4 speciali: 0.0.0.0 Conosciuto come indirizzo IPv4 non specificato, indica l'assenza di un indirizzo. L'indirizzo non specificato viene utilizzato solo come indirizzo di origine quando il nodo IPv4 non è configurato come indirizzo IPv4 e dal nodo viene eseguito il tentativo di ottenere un indirizzo tramite un protocollo di configurazione, ad esempio DHCP. 127.0.0.1 Conosciuto come indirizzo di loopback IPv4, è assegnato a un'interfaccia di loopback interna. Questa interfaccia consente a un nodo di inviare pacchetti a se stesso. Informazioni sull'assegnazione degli indirizzi unicast IPv4 Quando si assegnano ID di rete alle subnet di un'organizzazione, è necessario attenersi alle indicazioni seguenti: L'ID di rete deve essere univoco all'interno della rete IPv4. Se gli host possono accedere direttamente a Internet dalla subnet, è necessario utilizzare un prefisso di indirizzo pubblico IPv4 assegnato dall'autorità ICANN o da un provider di servizi Internet. Se gli host non possono accedere direttamente a Internet dalla subnet, utilizzare un prefisso di indirizzo pubblico valido oppure un prefisso di indirizzo privato univoco nella rete Intranet privata. L'ID di rete non può iniziare con il numero 0 o 127. Entrambi questi valori per il primo ottetto sono riservati e non possono essere utilizzati per gli indirizzi unicast IPv4. Quando si assegnano ID host alle interfacce dei nodi in una subnet IPv4, è necessario attenersi alle indicazioni seguenti: L'ID host deve essere univoco all'interno della subnet. Non è possibile utilizzare gli ID host costituiti da tutti 0 o tutti 1. Quando si definisce l'intervallo di indirizzi unicast IPv4 validi per un determinato prefisso di indirizzo, utilizzare la seguente procedura standard: Per il primo indirizzo unicast IPv4 nell'intervallo, impostare su 0 tutti i bit relativi all'host disponibili nell'indirizzo, ad eccezione del bit di ordine inferiore, che deve essere impostato su 1. Per l'ultimo indirizzo unicast IPv4 nell'intervallo, impostare su 1 tutti i bit relativi all'host disponibili nell'indirizzo, ad eccezione del bit di ordine inferiore, che deve essere impostato su 0. Per esprimere ad esempio l'intervallo di indirizzi per il prefisso 192.168.16.0/20: Il primo indirizzo unicast IPv4 nell'intervallo è 11000000 10101000 00010000 00000001, dove i bit relativi all'host sono indicati in grassetto, oppure 192.168.16.1. L'ultimo indirizzo unicast IPv4 nell'intervallo è 11000000 10101000 00011111 11111110, dove i bit relativi all'host sono indicati in grassetto, oppure 192.168.31.254. L'intervallo di indirizzi per il prefisso 192.168.16.0/20 è compreso pertanto tra 192.168.16.1 e 192.168.21.254. Indirizzi multicast IPv4 Il protocollo IPv4 prevede l'utilizzo di indirizzi multicast per la distribuzione di singoli pacchetti da un'origine a più destinazioni. In una rete Intranet IPv4 abilitata per le comunicazioni multicast, tramite i router un pacchetto IPv4 destinato a un indirizzo multicast IPv4 viene inviato alle subnet in cui vi sono host in ascolto del traffico inviato all'indirizzo multicast IPv4. Tramite il protocollo multicast IPv4 vengono trasmessi in modo efficace molti tipi di comunicazioni da un'origine a più destinazioni. Gli indirizzi multicast IPv4 sono definiti dalla classe D di indirizzi Internet: 224.0.0.0/4. L'intervallo di indirizzi multicast IPv4 è compreso tra 224.0.0.0 e 239.255.255.255. Gli indirizzi multicast IPv4 per il prefisso 224.0.0.0/24, ovvero da 224.0.0.0 a 224.0.0.255, sono riservati per il traffico multicast in una subnet locale. Indirizzi broadcast IPv4 Il protocollo IPv4 prevede l'utilizzo di un insieme di indirizzi per la distribuzione di pacchetti da un'origine a tutte le interfacce nella subnet. I pacchetti inviati agli indirizzi broadcast IPv4 vengono elaborati da tutte le interfacce nella subnet. Di seguito sono indicati i tipi di indirizzi broadcast IPv4: Broadcast di rete Indirizzo formato impostando su 1 tutti i bit relativi all'host per un prefisso di un indirizzo di classe. 131.107.255.255 è ad esempio un indirizzo broadcast di rete per l'ID di rete di classe 131.107.0.0/16. Tramite gli indirizzi broadcast di rete vengono inviati pacchetti a tutte le interfacce di una rete di classe. Tramite i router IPv4 non vengono inoltrati pacchetti broadcast di rete. Broadcast di subnet Indirizzo formato impostando su 1 tutti i bit relativi all'host per un prefisso di un indirizzo senza classe. 131.107.26.255 è ad esempio un indirizzo broadcast di rete per l'ID di rete senza classe 131.107.26.0/24. Tramite gli indirizzi broadcast di subnet vengono inviati pacchetti a tutti gli host di una rete senza classe. Tramite i router IPv4 non vengono inoltrati pacchetti broadcast di subnet. Per un prefisso di indirizzo di classe, non vi è alcun indirizzo broadcast di subnet ma solo un indirizzo broadcast di rete. Per un prefisso di indirizzo senza classe, non vi è alcun indirizzo broadcast di rete ma solo un indirizzo broadcast di subnet. Broadcast diretto a tutte le subnet Indirizzo formato impostando su 1 i bit relativi all'host dell'ID di rete di classe per un prefisso di un indirizzo senza classe. Questo tipo di indirizzo è indicato come obsoleto nella specifica RFC 1812. Un pacchetto inviato all'indirizzo broadcast diretto a tutte le subnet era destinato a raggiungere tutti gli host di tutte le subnet di un ID di rete di classe con subnet. 131.107.255.255 è ad esempio l'indirizzo broadcast diretto a tutte le subnet per l'ID di rete con subnet 131.107.26.0/24. L'indirizzo broadcast diretto a tutte le subnet è l'indirizzo broadcast di rete dell'ID di rete di classe originale. Broadcast limitato Indirizzo formato impostando su 1 tutti i 32 bit dell'indirizzo IPv4, ovvero 255.255.255.255. L'indirizzo broadcast limitato è utilizzato per la distribuzione uno-a-tutti nella subnet locale quando l'ID di rete locale è sconosciuto. L'indirizzo broadcast limitato viene generalmente utilizzato dai nodi IPv4 solo durante un processo di configurazione automatico, ad esempio BOOTP (Boot Protocol) o DHCP. Un client DHCP deve ad esempio utilizzare l'indirizzo broadcast limitato per tutto il traffico inviato prima che tramite il server DHCP venga riconosciuto l'uso della configurazione dell'indirizzo IPv4 offerta. Indirizzi IPv6 La differenza più ovvia tra protocollo IPv6 e IPv4 è costituita dalle dimensioni dell'indirizzo. Un indirizzo IPv6 ha una lunghezza di 128 bit ed è pertanto quattro volte più lungo di un indirizzo IPv6. Uno spazio degli indirizzi a 32 bit consente di creare 232 o 4.294.967.296 indirizzi. Uno spazio degli indirizzi a 128 bit consente di creare 2128 o 340.282.366.920.938.463.463.374.607.431.768.211.456, ovvero 3,4x1038, indirizzi. Lo spazio degli indirizzi IPv4 è stato progettato alla fine degli anni '70, quando nessuno avrebbe potuto immaginare che sarebbe stato possibile esaurire gli indirizzi. Tuttavia, a causa dell'allocazione originale di ID di rete basati su classi di indirizzi Internet e del recente aumento di host presenti in Internet, lo spazio degli indirizzi IPv4 si è progressivamente esaurito fino al punto che a partire dal 1992 è diventata chiara la necessità di una sostituzione. Con il protocollo IPv6, è ancora più difficile immaginare che lo spazio degli indirizzi possa venire esaurito. Per disporre di un riferimento, è possibile pensare che uno spazio degli indirizzi a 128 bit offre 655.570.793.348.866.943.898.599, ovvero 6,5x1023, indirizzi per ogni metro quadrato della superficie terrestre. La decisione di utilizzare 128 bit per gli indirizzi IPv6 non è stata presa per garantire che ogni metro quadrato della superficie terrestre potesse disporre di 6,5x1023 indirizzi. Le dimensioni relativamente grandi dello spazio degli indirizzi IPv6 sono state piuttosto progettate per offrire allocazione e routing efficaci in grado di riflettere la topologia della rete Internet attuale e per adattarsi agli indirizzi MAC (Media Access Control) utilizzati dalle più recenti tecnologie di rete. L'utilizzo di 128 bit consente di disporre di più livelli di gerarchia e di maggiore flessibilità per la progettazione di routing e indirizzi gerarchici, caratteristiche non disponibili con gli indirizzi Internet basati su IPv4. Nella specifica RFC 3513 viene descritta l'architettura degli indirizzi IPv6. Sintassi degli indirizzi IPv6 Gli indirizzi IPv4 sono rappresentati in notazione decimale separata da punti. Gli indirizzi IPv6, a 128 bit, vengono divisi in blocchi da 16 bit, ognuno dei quali viene convertito in un numero esadecimale a 4 cifre, secondo il sistema di numerazione a base 16. I blocchi sono separati da un segno di due punti. La rappresentazione risultante è nota come esadecimale separata da due punti. Di seguito è rappresentato un indirizzo IPv6 in forma binaria: 0011111111111110001010010000000011010000000001010000000000000000 0000001010101010000000001111111111111110001010001001110001011010 L'indirizzo a 128 bit viene suddiviso in blocchi di 16 bit: 0011111111111110 0010100100000000 1101000000000101 0000000000000000 0000001010101010 0000000011111111 1111111000101000 1001110001011010 Ogni blocco di 16 bit viene convertito in formato esadecimale e i blocchi adiacenti sono separati dal segno di due punti. Il risultato è il seguente: 3FFE:2900:D005:0000:02AA:00FF:FE28:9C5A La rappresentazione IPv6 può essere ulteriormente semplificata eliminando gli zeri iniziali all'interno di ogni blocco di 16 bit. È tuttavia necessario che ogni blocco contenga almeno una cifra. Eliminando gli zeri iniziali, la rappresentazione dell'indirizzo diventa la seguente: 3FFE:2900:D005:0:2AA:FF:FE28:9C5A Conversione tra formato binario ed esadecimale Nel sistema di numerazione esadecimale i numeri vengono espressi utilizzando le cifre comprese tra 0 e 9, le lettere A, B, C, D, E ed F e i valori esponenziali di 16. Nella tabella 3-4 sono indicati gli equivalenti decimali, esadecimali e binari dei numeri compresi tra 0 e 15. Formato decimale 0 1 2 3 4 5 6 7 Formato esadecimale 0 1 2 3 4 5 6 7 Formato binario 0000 0001 0010 0011 0100 0101 0110 0111 8 9 10 11 12 13 14 15 8 9 A B C D E F 1000 1001 1010 1011 1100 1101 1110 1111 Tabella 3-4 Conversioni tra formato decimale, esadecimale e binario Per convertire un numero esadecimale in binario, convertire ogni cifra esadecimale nell'equivalente a 4 bit. Per convertire ad esempio il numero esadecimale 0x03D8 in binario, convertire ogni cifra esadecimale, ovvero 0, 3, D e 8, in formato binario. 0x03D8 corrisponde pertanto a 0000 0011 1101 1000 o a 0000001111011000. Per convertire un numero binario in esadecimale, suddividere il numero binario in blocchi di 4 bit, iniziando dal bit di ordine inferiore. Convertire quindi ogni blocco di 4 bit nell'equivalente esadecimale. Per convertire ad esempio il numero binario 0110000110101110 in esadecimale, suddividere innanzitutto in blocchi di 4 bit l'intero numero, ad esempio 0110 0001 1010 1110. Convertire quindi ogni blocco in cifre esadecimali, ovvero 0x61AE. In alternativa, è possibile utilizzare la calcolatrice disponibile nel sistema operativo Windows Server™ 2003 o Windows XP per eseguire la conversione tra formato esadecimale e binario, sebbene per comprendere meglio il concetto sia preferibile effettuare l'operazione manualmente. Per la conversione tra formato decimale ed esadecimale, che non è necessaria di frequente per gli indirizzi IPv6, utilizzare la calcolatrice di Windows. Compressione degli zeri Alcuni tipi di indirizzi contengono lunghe sequenze di zeri. Per semplificare ulteriormente la rappresentazione degli indirizzi IPv6, una sequenza contigua di blocchi di 16 bit impostati su 0 nel formato esadecimale separato da due punti può essere compressa in "::", formato noto come due punti doppio. È ad esempio possibile comprimere l'indirizzo unicast IPv6 FE80:0:0:0:2AA:FF:FE9A:4CA2 in FE80::2AA:FF:FE9A:4CA2 e l'indirizzo multicast IPv6 FF02:0:0:0:0:0:0:2 in FF02::2. È possibile utilizzare la compressione degli zeri solo per una singola serie contigua di blocchi di 16 bit espressi in notazione esadecimale separata da due punti. Non è possibile utilizzare la compressione degli zeri per includere una parte di un blocco di 16 bit. Non è ad esempio possibile esprimere FF02:30:0:0:0:0:0:5 come FF02:3::5. Per determinare quanti bit 0 sono rappresentati da "::", è possibile contare il numero di blocchi nell'indirizzo compresso, sottrarre tale numero da 8, quindi moltiplicare il risultato per 16. L'indirizzo FF02::2 è ad esempio costituito da due blocchi, ovvero "FF02" e "2", e pertanto gli altri 6 blocchi di 16 bit, in totale 96 bit, sono stati compressi. La compressione degli zeri può essere utilizzata una sola volta in un determinato indirizzo. In caso contrario, non sarebbe possibile determinare il numero di bit 0 rappresentati da ogni istanza di "::". Se un indirizzo contiene due serie di blocchi di zeri della stessa lunghezza e non vi sono altre serie di blocchi di zeri più lunghe, per convenzione il blocco più a sinistra viene espresso come "::". Prefissi degli indirizzi IPv6 Gli intervalli di indirizzi IPv6 vengono espressi come prefissi degli indirizzi nello stesso modo in cui vengono espressi gli intervalli di indirizzi IPv4 tramite la notazione della lunghezza del prefisso. FF00::/8 indica ad esempio un intervallo di indirizzi, 3FFE:FFFF::/32 un prefisso di route e 3FFE:FFFF:0:2F3B::/64 un prefisso di subnet. Un prefisso di un indirizzo non viene espresso utilizzando un equivalente esadecimale separato da due punti di una subnet mask IPv4. Tipi di indirizzi IPv6 Esistono tre tipi di indirizzi IPv6: Unicast Un indirizzo unicast identifica un'unica interfaccia all'interno dell'ambito del tipo di indirizzo unicast. Con la topologia di routing unicast appropriata, i pacchetti inviati a un indirizzo unicast vengono consegnati a un'unica interfaccia. Un indirizzo unicast viene utilizzato per le comunicazioni da un'origine a un'unica destinazione. Multicast Un indirizzo multicast identifica più interfacce. Con la topologia di routing multicast appropriata, i pacchetti inviati a un indirizzo multicast vengono recapitati a tutte le interfacce identificate dall'indirizzo. Un indirizzo multicast viene utilizzato per le comunicazioni da un'origine a più destinazioni, con recapito a più interfacce. Anycast Un indirizzo anycast identifica più interfacce. Con la topologia di routing appropriata, i pacchetti inviati a un indirizzo anycast vengono recapitati a un'unica interfaccia, ovvero a quella più vicina identificata dall'indirizzo. L'interfaccia "più vicina" è definita in termini di distanza di routing. Un indirizzo anycast viene utilizzato per le comunicazioni da un'origine a una tra più destinazioni, con recapito a un'unica interfaccia. Gli indirizzi IPv6 identificano sempre interfacce e non nodi. Un nodo viene identificato da qualsiasi indirizzo unicast assegnato a una delle relative interfacce. Nella specifica RFC 3513 non viene definito alcun tipo di indirizzo broadcast. Vengono invece utilizzati gli indirizzi multicast IPv6. Gli indirizzi broadcast limitati e di subnet utilizzati nel protocollo IPv4 sono ad esempio sostituiti dall'indirizzo multicast IPv6 riservato FF02::1. Indirizzi unicast IPv6 Di seguito sono indicati i tipi di indirizzi unicast IPv6: Indirizzi unicast globali Indirizzi locali del collegamento Indirizzi locali del sito Indirizzi IPv6 speciali Indirizzi di compatibilità Indirizzi unicast globali Gli indirizzi unicast globali equivalgono agli indirizzi IPv4 pubblici. Tali indirizzi sono instradabili e raggiungibili globalmente nella parte IPv6 di Internet, nota come Internet IPv6. Gli indirizzi unicast globali possono essere aggregati o riepilogati in modo da produrre un'infrastruttura di routing efficiente. Mentre nell'attuale rete Internet basata su IPv4 vengono utilizzati meccanismi di routing sia gerarchici che lineari, la rete Internet basata su IPv6 è stata progettata sin dall'inizio per supportare in modo efficiente routing e meccanismi di indirizzamento gerarchici. Gli indirizzi unicast globali sono univoci nel proprio ambito, che corrisponde all'intera rete Internet IPv6. Nella figura 3-7 è illustrata la struttura generale di un indirizzo unicast globale in base a quanto definito nella specifica RFC 3587. Figura 3-7 Struttura di un indirizzo unicast globale in base a quanto definito nella specifica RFC 3587 Nella figura 3-8 è illustrata la struttura di indirizzi unicast globali allocati dall'autorità IANA al momento della stesura del presente documento, in base a quanto definito nella specifica RFC 3587. Figura 3-8 Indirizzi unicast globali attualmente assegnati dall'autorità IANA I campi che costituiscono un indirizzo unicast globale sono i seguenti: Parte fissa (impostata su 001) I tre bit di ordine superiore sono impostati su 001. Il prefisso degli indirizzi globali attualmente assegnati è 2000::/3. Prefisso di routing globale Il prefisso di routing globale identifica un sito specifico di un'organizzazione. La combinazione dei tre bit fissi e del prefisso di routing globale a 45 bit viene utilizzata per creare un prefisso degli indirizzi del sito a 48 bit, assegnato ai singoli siti di un'organizzazione. Dopo l'assegnazione, tramite i router Internet IPv6 il traffico corrispondente al prefisso degli indirizzi a 48 bit viene inoltrato ai router del sito dell'organizzazione. ID subnet L'ID subnet identifica le subnet all'interno del sito di un'organizzazione. Questo campo è costituito da 16 bit. L'organizzazione può utilizzare questi 16 bit all'interno del sito per creare 65.536 subnet o più livelli di gerarchia di indirizzamento e un'infrastruttura di routing efficiente. ID interfaccia L'ID interfaccia indica un'interfaccia in una subnet interna al sito. Questo campo è costituito da 64 bit. 3FFE:FFFF:2A3C:F282:2B0:D0FF:FEE9:4143 è ad esempio un indirizzo unicast IPv6 globale. All'interno di tale indirizzo: 3FFE:FFFF:2A3C indica il sito di un'organizzazione F282 indica una subnet all'interno di tale sito 2B0:D0FF:FEE9:4143 indica un'interfaccia nella subnet all'interno di tale sito I campi di un indirizzo unicast globale, in base a quanto definito nella specifica RFC 3587, creano una struttura a tre livelli, come illustrato nella figura 3-9. Figura 3-9 Struttura a tre livelli di un indirizzo unicast globale come definito nella specifica RFC 3587 La topologia pubblica è l'insieme degli ISP maggiori e minori che offrono accesso alla rete Internet IPv6 e delle organizzazioni che si connettono a tale rete. La topologia del sito è l'insieme delle subnet all'interno del sito di un'organizzazione. L'identificatore di interfaccia identifica un'interfaccia specifica in una subnet all'interno del sito di un'organizzazione. Gli indirizzi unicast di utilizzo locale si dividono in due categorie: Indirizzi locali del collegamento utilizzati tra nodi adiacenti collegati e per i processi di rilevamento adiacente (ND, Neighbor Discovery), che definiscono la modalità di interazione dei nodi in una subnet IPv6 con host e router. Indirizzi locali del sito utilizzati tra nodi comunicanti con altri nodi nello stesso sito di una rete Intranet di un'organizzazione. Indirizzi locali del collegamento Gli indirizzi locali del collegamento vengono utilizzati dai nodi durante la comunicazione con i nodi adiacenti sullo stesso collegamento, noti anche come subnet. In una rete IPv6 a collegamento singolo sprovvista di router, gli indirizzi locali del collegamento vengono ad esempio utilizzati per la comunicazione tra host sul collegamento. Gli indirizzi locali del collegamento equivalgono agli indirizzi IPv4 APIPA configurati automaticamente in computer in cui è in esecuzione Windows. L'ambito di un indirizzo locale del collegamento, ovvero la parte di rete in cui l'indirizzo è univoco, corrisponde al collegamento locale. Per i processi di rilevamento adiacente (ND, Neighbor Discovery) è necessario un indirizzo locale del collegamento, che viene sempre configurato automaticamente anche in assenza di tutti gli altri indirizzi unicast. Nella figura 3-10 è illustrata la struttura di un indirizzo locale del collegamento. Figura 3-10 Struttura di un indirizzo locale del collegamento Poiché i primi 64 bit di un indirizzo locale del collegamento sono fissi, il prefisso per tutti gli indirizzi locali del collegamento è FE80::/64. Un router IPv6 non inoltra mai il traffico locale del collegamento al di fuori del collegamento. Indirizzi locali del sito Gli indirizzi locali del sito equivalgono allo spazio degli indirizzi privato IPv4. Nelle reti Intranet private che non dispongono di una connessione di routing diretta alla rete Internet IPv6 è ad esempio possibile utilizzare indirizzi locali del sito senza creare conflitti con gli indirizzi globali. Gli indirizzi locali del sito non sono raggiungibili da altri siti e i router non devono inoltrare il traffico locale del sito al di fuori del sito stesso. Gli indirizzi locali del sito possono essere utilizzati in aggiunta agli indirizzi globali. L'ambito di un indirizzo locale del sito corrisponde al sito stesso, ovvero una parte di una rete aziendale con confini geografici, topologici o di larghezza di banda definiti. A differenza degli indirizzi locali del collegamento, gli indirizzi locali del sito non vengono configurati automaticamente e devono essere assegnati tramite processi di configurazione degli indirizzi con o senza informazioni sullo stato. Nella figura 3-11 è illustrata la struttura di un indirizzo locale del sito. Figura 3-11 Struttura di un indirizzo locale del sito I primi 10 bit degli indirizzi locali del sito sono fissi a 1111 1110 11. Il prefisso per tutti gli indirizzi locali del sito è pertanto FEC0::/10. Oltre ai 10 bit fissi di ordine superiore, vi è un campo ID subnet a 54 bit che può essere utilizzato per la creazione di subnet all'interno dell'organizzazione. Con 54 bit, è possibile creare fino a 254 subnet in una struttura di subnet semplice oppure suddividere i bit di ordine superiore del campo ID subnet per creare un'infrastruttura di routing gerarchica e riepilogabile. Dopo il campo ID subnet vi è un campo ID interfaccia composto da 64 bit, che identifica un'interfaccia specifica in una subnet. Nota Una bozza Internet intitolata "Deprecating Site Local Addresses" (draft-ietf-ipv6-deprecate-site-local-0x.txt) condanna formalmente l'utilizzo di indirizzi locali del sito per le implementazioni IPv6 future. Le implementazioni IPv6 esistenti possono continuare a utilizzare gli indirizzi locali del sito fino a quando non verrà creato uno standard adatto a sostituirli. Attualmente è stata pubblicata una bozza Internet con la versione aggiornata dell'architettura di indirizzamento IPv6, intitolata "Internet Protocol Version 6 (IPv6) Addressing Architecture" (draft-ietf-ipv6-addr-archv4-0x.txt), che include la condanna degli indirizzi locali del sito. Questa bozza Internet sulla definizione di standard per gli indirizzi IPv6 renderà obsoleta la specifica RFC 3513. ID area per gli indirizzi a utilizzo locale Gli indirizzi locali non sono univoci all'interno di una rete Intranet aziendale. Gli indirizzi locali del collegamento possono essere duplicati per ogni collegamento, o subnet. Gli indirizzi locali del sito possono essere duplicati per ogni sito. Quando si specifica pertanto un indirizzo di destinazione locale del collegamento, è necessario specificare il collegamento in cui si trova la destinazione. Per un indirizzo di destinazione locale del sito, quando si utilizzano più siti è necessario specificare il sito in cui si trova la destinazione. L'ID area consente di specificare la parte o l'area della rete in cui è possibile raggiungere la destinazione. Nei comandi Ping, Tracert e Pathping la sintassi per specificare un ID area è IndirizzoIPv6%IDArea. Per le destinazioni locali del collegamento, IDArea corrisponde solitamente all'indice dell'interfaccia connessa al collegamento in cui si trova la destinazione. L'indice dell'interfaccia è un numero interno assegnato a un'interfaccia IPv6 visualizzabile tramite il comando netsh interface ipv6 show interface. Per gli indirizzi locali del sito, IDArea corrisponde al numero del sito visualizzabile tramite il comando netsh interface ipv6 show address level=verbose. Se non vengono utilizzati più siti, per gli indirizzi locali del sito non è necessario l'ID area. Il parametro IDArea non è necessario quando la destinazione è un indirizzo unicast globale. Indirizzi IPv6 speciali Di seguito sono indicati gli indirizzi IPv6 speciali: Indirizzo non specificato L'indirizzo non specificato (0:0:0:0:0:0:0:0 oppure ::) indica l'assenza di un indirizzo ed equivale all'indirizzo non specificato IPv4 0.0.0.0. L'indirizzo non specificato viene in genere utilizzato come indirizzo di origine dei pacchetti per verificare l'univocità di un indirizzo provvisorio. L'indirizzo non specificato non viene mai assegnato a un'interfaccia, né viene utilizzato come indirizzo di destinazione. Indirizzo di loopback L'indirizzo di loopback (0:0:0:0:0:0:0:1 oppure ::1) identifica un'interfaccia di loopback. Tale indirizzo consente a un nodo di inviare pacchetti a se stesso ed equivale all'indirizzo di loopback IPv4 127.0.0.1. I pacchetti destinati all'indirizzo di loopback non vengono mai inviati su un collegamento, né vengono inoltrati tramite un router IPv6. Indirizzi di compatibilità Per offrire supporto nel passaggio da IPv4 a IPv6, sono stati definiti gli indirizzi seguenti: Indirizzo compatibile con IPv4 L'indirizzo compatibile con IPv4 0:0:0:0:0:0:w.x.y.z o ::w.x.y.z, dove w.x.y.z è la rappresentazione decimale separata da punti di un indirizzo pubblico IPv4, viene utilizzato dai nodi IPv6/IPv4 per comunicare tramite il protocollo IPv6. I nodi IPv6/IPv4 sono nodi che dispongono di entrambi i protocolli IPv4 e IPv6. Quando l'indirizzo compatibile con IPv4 viene utilizzato come destinazione IPv6, il traffico IPv6 viene automaticamente incapsulato in un'intestazione IPv4 e inviato a destinazione mediante l'infrastruttura IPv4. Il protocollo IPv6 per Windows Server 2003 e Windows XP supporta gli indirizzi compatibili con IPv4, ma tali indirizzi sono disattivati per impostazione predefinita. Indirizzo mappato IPv4 L'indirizzo mappato IPv4 0:0:0:0:0:FFFF:w.x.y.z o ::FFFF:w.x.y.z rappresenta un nodo solo IPv4 in un nodo IPv6. Gli indirizzi di questo tipo vengono utilizzati solo per la rappresentazione interna e non vengono mai utilizzati come indirizzi di origine o di destinazione di un pacchetto IPv6. Il protocollo IPv6 per Windows Server 2003 e Windows XP non supporta gli indirizzi mappati IPv4. Indirizzo 6to4 L'indirizzo 6to4 viene utilizzato per le comunicazioni tra due nodi che eseguono sia IPv4 che IPv6 in Internet. L'indirizzo 6to4 viene formato combinando il prefisso globale 2002::/16 con i 32 bit di un indirizzo pubblico IPv4 del nodo, formando un prefisso composto da 48 bit. 6to4 è una tecnologia di transizione IPv6 descritta nella specifica RFC 3056. Indirizzo ISATAP La bozza Internet intitolata "Intra-Site Automatic Tunnel Addressing Protocol (ISATAP)" definisce gli indirizzi ISATAP utilizzati tra due nodi che eseguono sia IPv4 che IPv6 in una rete Intranet privata. Per gli indirizzi ISATAP viene utilizzato l'ID interfaccia amministrato localmente ::0:5EFE:w.x.y.z, dove w.x.y.z rappresenta un indirizzo unicast IPv4, pubblico o privato. È possibile combinare l'ID interfaccia ISATAP con qualsiasi prefisso a 64 bit valido per gli indirizzi unicast IPv6, incluso il prefisso dell'indirizzo locale del collegamento, ovvero FE80::/64, i prefissi locali del sito e i prefissi globali. Indirizzo Teredo L'indirizzo Teredo viene utilizzato per le comunicazioni tra due nodi che eseguono sia IPv4 che IPv6 in Internet quando un endpoint o entrambi si trovano dietro un dispositivo NAT (Network Address Translation) IPv4. L'indirizzo Teredo viene formato combinando un prefisso Teredo a 32 bit con l'indirizzo pubblico IPv4 di un server Teredo e altri elementi. Teredo è una tecnologia di transizione IPv6 descritta nella bozza Internet intitolata "Teredo: Tunneling IPv6 over UDP through NATs". Identificatori di interfaccia IPv6 Gli ultimi 64 bit di un indirizzo unicast IPv6 rappresentano l'identificatore di interfaccia univoco per il prefisso di 64 bit dell'indirizzo IPv6. Gli identificatori di interfaccia IPv6 vengono determinati come descritto di seguito: Un identificatore di interfaccia a 64 bit derivato dall'indirizzo EUI-64 (Extended Unique Identifier). Un identificatore di interfaccia generato in modo casuale e modificato nel tempo per garantire l'anonimato. Un identificatore di interfaccia assegnato durante l'autoconfigurazione degli indirizzi con informazioni sullo stato, ad esempio tramite DHCPv6 (Dynamic Host Configuration Protocol for IP version 6). Identificatori di interfaccia basati sull'indirizzo EUI-64 Nella specifica RFC 3513 viene stabilito che in tutti gli indirizzi unicast con i prefissi da 001 a 111 è necessario utilizzare anche un identificatore di interfaccia a 64 bit derivato dall'indirizzo EUI-64, un indirizzo a 64 bit definito dallo standard IEEE. Gli indirizzi EUI-64 vengono assegnati a una scheda di rete o derivati dagli indirizzi IEEE 802. In un identificatore di interfaccia tradizionale per una scheda di rete viene utilizzato un indirizzo a 48 bit detto indirizzo IEEE 802. Tale indirizzo è composto da un ID società a 24 bit, detto anche ID produttore, e un ID estensione a 24 bit, detto anche ID scheda. La combinazione dell'ID società, specifico del produttore di schede di rete, e dell'ID scheda, specifico di ogni scheda di rete assemblata, dà origine a un indirizzo a 48 bit globalmente univoco. L'indirizzo a 48 bit è noto anche come indirizzo fisico, hardware o MAC. Nella figura 3-12 è illustrata la struttura di un indirizzo IEEE a 48 bit. Figura 3-12 Struttura di un indirizzo IEEE a 48 bit I bit definiti all'interno dell'indirizzo IEEE 802 sono i seguenti: Universale/locale (U/L, Universal/Local) Il bit accanto al bit di ordine inferiore del primo byte viene utilizzato per indicare se l'indirizzo è amministrato universalmente o localmente. Se il bit U/L è impostato su 0, significa che l'indirizzo è amministrato dall'IEEE, mediante la designazione di un ID società univoco. Se il bit U/L è impostato su 1, significa che l'indirizzo è amministrato localmente. L'amministratore di rete ha sostituito l'indirizzo di produzione e ne ha specificato uno diverso. Nella figura 3-12 il bit U/L è indicato con u. Individuale/di gruppo (I/G, Individual/Group) Il bit di ordine inferiore del primo byte viene utilizzato per indicare se l'indirizzo è individuale (unicast) o di gruppo (multicast). Se impostato su 0, l'indirizzo è di tipo unicast. Se impostato su 1, l'indirizzo è di tipo multicast. Nella figura 3-12 il bit I/G è indicato con g. In un indirizzo tipico di una scheda di rete 802, entrambi i bit U/L e I/G sono impostati su 0, indicando un indirizzo MAC unicast amministrato universalmente. L'indirizzo IEEE EUI-64 rappresenta un nuovo standard per l'indirizzamento delle interfacce di rete. L'ID società è sempre formato da 24 bit, ma l'ID estensione è composto da 40 bit, pertanto lo spazio degli indirizzi disponibile per un produttore di schede di rete è di dimensioni molto maggiori. Nell'indirizzo EUI-64 i bit U/L e I/G vengono utilizzati in modo analogo all'indirizzo IEEE 802. Nella figura 3-13 è illustrata la struttura di un indirizzo EUI-64. Figura 3-13 Struttura di un indirizzo EUI-64 Nella figura 3-14 viene illustrato come creare un indirizzo EUI-64 da un indirizzo IEEE 802. A tale scopo, è necessario inserire i 16 bit 11111111 11111110 (0xFFFE) nell'indirizzo IEEE 802 tra l'ID società e l'ID estensione. Figura 3-14 Conversione di un indirizzo IEEE 802 in indirizzo EUI-64 Per ottenere l'identificatore di interfaccia a 64 bit per gli indirizzi unicast IPv6, il bit U/L nell'indirizzo EUI-64 viene reso complementare, ovvero se il valore è 1, viene impostato su 0, mentre se il valore è 0, viene impostato su 1. Nella figura 3-15 è illustrata la conversione di un indirizzo EUI-64 unicast amministrato universalmente. Figura 3-15 Conversione di un indirizzo EUI-64 unicast amministrato universalmente in un identificatore di interfaccia IPv6 Per ottenere un identificatore di interfaccia IPv6 da un indirizzo IEEE 802, è innanzitutto necessario convertire l'indirizzo IEEE 802 in un indirizzo EUI-64, quindi rendere complementare il bit U/L. Nella figura 3-16 è illustrata la conversione di un indirizzo IEEE 802 unicast amministrato universalmente. Figura 3-16 Conversione di un indirizzo IEEE I802 unicast amministrato universalmente in un identificatore di interfaccia IPv6 Esempio di conversione di un indirizzo IEEE 802 L'host A ha un indirizzo MAC Ethernet 00-AA-00-3F-2A-1C. L'indirizzo viene innanzi tutto convertito nel formato EUI-64 inserendo FF-FE tra il terzo e il quarto byte, dando come risultato l'indirizzo 00-AA-00-FF-FE-3F-2A-1C. Viene quindi reso complementare il bit U/L, ovvero il settimo bit all'interno del primo byte. Il primo byte nel formato binario è 00000000. Rendendo complementare il settimo bit, il byte diventa 00000010 (0x02). Il risultato finale sarà 02AA-00-FF-FE-3F-2A-1C che, convertito in notazione esadecimale separata da due punti, diventa l'identificatore di interfaccia 2AA:FF:FE3F:2A1C. Di conseguenza, l'indirizzo locale del collegamento corrispondente alla scheda di rete con indirizzo MAC 00-AA-00-3F-2A-1C è FE80::2AA:FF:FE3F:2A1C. Quando si rende complementare il bit U/L, aggiungere 0x2 al primo byte se l'indirizzo è amministrato universalmente oppure sottrarre 0x2 dal primo byte se l'indirizzo è amministrato localmente. Identificatori di interfaccia di indirizzi temporanei Nell'attuale rete Internet basata su IPv4 l'utente Internet si connette a un provider di servizi Internet (ISP, Internet Service Provider) e ottiene un indirizzo IPv4 utilizzando il protocollo PPP (Point-to-Point Protocol) e il protocollo IPCP (Internet Protocol Control Protocol). Poiché a ogni connessione l'utente può ottenere un indirizzo IPv4 diverso, è difficile tenere traccia del traffico Internet di un utente remoto in base all'indirizzo IPv4. Nel caso di connessioni remote basate su IPv6, all'utente viene assegnato un prefisso a 64 bit dopo aver stabilito la connessione attraverso la funzione di scoperta router e l'autoconfigurazione degli indirizzi senza informazioni sullo stato. Se l'identificatore di interfaccia è sempre basato sull'indirizzo EUI-64, derivato dall'indirizzo IEEE 802 statico, è possibile identificare il traffico di un determinato nodo indipendentemente dal prefisso e tenere traccia in modo semplice di un utente specifico e del suo utilizzo di Internet. Per risolvere questo problema e garantire l'anonimato, nella specifica RFC 3041 viene descritto un identificatore di interfaccia IPv6 alternativo generato in modo casuale e modificato periodicamente. L'identificatore di interfaccia iniziale viene generato utilizzando numeri casuali. Per i sistemi IPv6 in cui non è possibile archiviare informazioni cronologiche per la creazione dei successivi valori per gli identificatori di interfaccia, viene generato un nuovo identificatore di interfaccia casuale ad ogni inizializzazione del protocollo IPv6. Per i sistemi IPv6 in cui è possibile archiviare informazioni, viene memorizzato un valore cronologico e, al momento dell'inizializzazione del protocollo IPv6, viene creato un nuovo identificatore di interfaccia tramite il processo descritto di seguito: 1. 2. 3. 4. Recupero del valore cronologico dall'archivio e aggiunta dell'identificatore di interfaccia in base all'indirizzo EUI-64 della scheda. Calcolo dell'algoritmo hash MD5 (Message Digest-5) sulla quantità del passaggio 1. Un hash produce un risultato matematico di dimensioni fisse da un input. Gli hash sono semplici da calcolare ma è estremamente difficile determinare l'input dal risultato di un hash. Salvataggio degli ultimi 64 bit dell'hash MD5 calcolato al passaggio 2 come valore cronologico per il calcolo dell'identificatore di interfaccia successivo. Utilizzo dei primi 64 bit dell'hash MD5 calcolato al passaggio 2 e impostazione del settimo bit su 0. Il settimo bit corrisponde al bit U/L che, impostato su 0, indica un identificatore di interfaccia IPv6 amministrato localmente. Il risultato sarà l'identificatore di interfaccia IPv6. L'indirizzo IPv6 risultante, basato su questo identificatore di interfaccia casuale, è noto come indirizzo temporaneo. Gli indirizzi temporanei vengono generati per prefissi di indirizzi pubblici che utilizzano l'autoconfigurazione senza informazioni sullo stato. Indirizzi multicast IPv6 Negli indirizzi multicast IPv6 i primi otto bit sono fissi su 1111 1111. Il prefisso di tutti gli indirizzi multicast IPv6 è pertanto FF00::/8. Oltre ai primi otto bit, gli indirizzi multicast includono un'ulteriore struttura che ne identifica i flag, l'ambito e il gruppo multicast. Nella figura 3-17 è illustrata la struttura di un indirizzo multicast IPv6. Figura 3-17 Struttura di un indirizzo multicast IPv6 I campi che costituiscono un indirizzo multicast sono i seguenti: Flag Indica i flag impostati nell'indirizzo multicast. Questo campo è composto da 4 bit. In base alla specifica RFC 3513, l'unico flag definito è il flag transitorio (T), che utilizza il bit di ordine inferiore del campo dei flag. Se impostato su 0, il flag T indica che l'indirizzo multicast è un indirizzo multicast assegnato in modo permanente, ovvero conosciuto, allocato dall'autorità IANA (Internet Assigned Numbers Authority). Se impostato su 1, il flag T indica che l'indirizzo multicast è un indirizzo transitorio, ovvero non assegnato in modo permanente. Ambito Indica l'ambito della rete IPv6 a cui è destinato il traffico multicast. Questo campo è composto da 4 bit. I router utilizzano l'ambito multicast e le informazioni fornite dai protocolli di routing multicast per determinare se sia possibile inoltrare il traffico multicast. I valori per questo campo sono definiti nella specifica RFC 3513. I valori più comuni per il campo dell'ambito sono 1, ambito locale dell'interfaccia, 2, ambito locale del collegamento e 5, ambito locale del sito. ID gruppo Identifica il gruppo multicast ed è univoco all'interno dell'ambito. Questo campo è composto da 112 bit. Gli ID gruppo assegnati in modo permanente sono indipendenti dall'ambito. Gli ID gruppo temporanei sono validi solo per un ambito specifico. Per identificare tutti i nodi per gli ambiti locali dell'interfaccia e del collegamento, vengono definiti i seguenti indirizzi: FF01::1 (indirizzo multicast per tutti i nodi, ambito locale dell'interfaccia) FF02::1 (indirizzo multicast per tutti i nodi, ambito locale del collegamento) Per identificare tutti i router per gli ambiti locali dell'interfaccia, del collegamento e del sito, vengono definiti i seguenti indirizzi: FF01::2 (indirizzo multicast per tutti i router, ambito locale dell'interfaccia) FF02::2 (indirizzo multicast per tutti i router, ambito locale del collegamento) FF05::2 (indirizzo multicast per tutti i router, ambito locale del sito) Per un elenco aggiornato degli indirizzi multicast IPv6 assegnati in modo permanente, vedere http://www.iana.org/assignments/ipv6-multicast-addresses (informazioni in lingua inglese). Gli indirizzi multicast IPv6 sostituiscono tutte le forme di indirizzi broadcast IPv4. L'indirizzo multicast IPv6 per tutti i nodi, per l'ambito locale del collegamento, ovvero FF02::1, sostituisce l'indirizzo broadcast di rete IPv4, in cui tutti i bit relativi all'host sono impostati su 1 in un ambiente di classe, l'indirizzo broadcast di subnet, in cui tutti i bit relativi all'host sono impostati su 1 in un ambiente senza classe, e l'indirizzo broadcast limitato, ovvero 255.255.255.255. Indirizzo multicast del nodo richiesto L'indirizzo multicast del nodo richiesto rende più semplice ed efficace l'esecuzione di query dei nodi di rete per la risoluzione di un indirizzo a livello di collegamento da un indirizzo IPv6 noto, processo detto risoluzione dell'indirizzo a livello di collegamento. Nel protocollo IPv4 il frame di richiesta ARP nei segmenti di rete senza fili 802.11 ed Ethernet viene inviato all'indirizzo broadcat 0xFF-FF-FF-FF-FF-FF. Tale frame viene esaminato da tutti i nodi nel segmento di rete, inclusi quelli in cui non è in esecuzione IPv4. Per la risoluzione di indirizzi a livello di collegamento, nel protocollo IPv6 viene utilizzato il messaggio di richiesta del nodo adiacente (NS, Neighbor Solicitation). Tuttavia, anziché utilizzare come destinazione del messaggio l'indirizzo multicast per tutti i nodi, per l'ambito locale del collegamento, che provocherebbe l'analisi da parte di tutti i nodi IPv6 nel collegamento locale, viene utilizzato l'indirizzo multicast del nodo richiesto. L'indirizzo multicast del nodo richiesto è costituito dal prefisso FF02::1:FF00:0/104 e dagli ultimi 24 bit di un indirizzo unicast IPv6. Nella figura 3-18 è illustrato il mapping di un indirizzo unicast IPv6 al corrispondente indirizzo multicast del nodo richiesto. Figura 3-18 Creazione dell'indirizzo multicast del nodo richiesto Al nodo A viene ad esempio assegnato l'indirizzo locale del collegamento FE80::2AA:FF:FE28:9C5A e tale nodo è anche in ascolto sull'indirizzo multicast del nodo richiesto corrispondente FF02::1:FF28:9C5A. (Il grassetto è utilizzato per sottolineare la corrispondenza delle ultime sei cifre esadecimali). Il nodo B nel collegamento locale deve risolvere l'indirizzo locale del collegamento del nodo A FE80::2AA:FF:FE28:9C5A nel corrispondente indirizzo a livello di collegamento. Tramite il nodo B viene inviato un messaggio NS all'indirizzo multicast del nodo richiesto FF02::1:FF28:9C5A. Poiché il nodo A è in ascolto su questo indirizzo multicast, elabora il messaggio NS e risponde con un messaggio di annuncio del nodo adiacente (NA, Neighbor Advertisement) completando il processo di risoluzione dell'indirizzo. Se si utilizza l'indirizzo multicast del nodo richiesto, per eventi comuni in un collegamento, ad esempio la risoluzione di un indirizzo a livello di collegamento, non vengono interessati tutti i nodi della rete, ma solo pochi di essi. In pratica, grazie alla relazione tra l'indirizzo a livello di collegamento, l'ID interfaccia IPv6 e l'indirizzo del nodo richiesto, quest'ultimo svolge la funzione di indirizzo pseudo-unicast garantendo una risoluzione degli indirizzi efficiente. Indirizzi anycast IPv6 Un indirizzo anycast viene assegnato a più interfacce. I pacchetti inviati a un indirizzo anycast vengono inoltrati tramite l'infrastruttura di routing all'interfaccia più vicina alla quale è stato assegnato l'indirizzo anycast. Per semplificare il recapito, è necessario che l'infrastruttura di routing sia a conoscenza delle interfacce a cui sono stati assegnati indirizzi anycast e della relativa distanza in termini di routing. Attualmente gli indirizzi anycast vengono utilizzati esclusivamente come indirizzi di destinazione. L'assegnazione degli indirizzi anycast avviene al di fuori dello spazio degli indirizzi unicast e l'ambito di un indirizzo anycast corrisponde all'ambito del tipo di indirizzo unicast dal quale l'indirizzo anycast viene assegnato. L'indirizzo anycast subnet-router viene creato dal prefisso di subnet di un'interfaccia specifica. Per creare l'indirizzo anycast subnet-router, i bit del prefisso di subnet a 64 bit vengono fissati sui valori appropriati, mentre i bit della parte dell'indirizzo relativa all'ID interfaccia vengono impostati su 0. L'indirizzo anycast subnet-router viene assegnato a tutte le interfacce di router collegate a una subnet. L'indirizzo anycast subnet-router consente di comunicare con uno dei router collegati a una subnet remota, ad esempio per ottenere i dati statistici di gestione della rete per il traffico nella subnet. Indirizzi IPv6 per un host Un host IPv4 dotato di una singola scheda di rete dispone in genere di un unico indirizzo IPv4 assegnato a tale scheda. Al contrario, un host IPv6 dispone solitamente di più indirizzi IPv6, anche in presenza di una singola interfaccia. A un host IPv6 vengono assegnati i seguenti indirizzi unicast: Un indirizzo locale del collegamento per ogni interfaccia. Indirizzi unicast per ogni interfaccia, che possono essere rappresentati da un indirizzo locale del sito e da uno o più indirizzi unicast globali. Indirizzo di loopback (::1) per l'interfaccia di loopback. Gli host IPv6 dispongono in genere di almeno due indirizzi per la ricezione dei pacchetti: un indirizzo locale del collegamento per il traffico del collegamento locale e un indirizzo globale o locale del sito instradabile. Ogni host è inoltre in grado di eseguire l'ascolto del traffico sugli indirizzi multicast seguenti: Indirizzo multicast per tutti i nodi, ambito locale dell'interfaccia (FF01::1). Indirizzo multicast per tutti i nodi, ambito locale del collegamento (FF02::1). Indirizzo del nodo richiesto per ogni indirizzo unicast su ogni interfaccia. Indirizzi multicast di gruppi uniti su ogni interfaccia. Indirizzi IPv6 per un router A un router IPv6 vengono assegnati gli indirizzi unicast e anycast seguenti: Un indirizzo locale del collegamento per ogni interfaccia. Indirizzi unicast per ogni interfaccia, che possono essere rappresentati da un indirizzo locale del sito e da uno o più indirizzi unicast globali. Un indirizzo anycast subnet-router. Indirizzi anycast aggiuntivi (facoltativi). Indirizzo di loopback (::1) per l'interfaccia di loopback. Ogni router è inoltre in grado di eseguire l'ascolto del traffico sui seguenti indirizzi multicast: Indirizzo multicast per tutti i nodi, ambito locale dell'interfaccia (FF01::1). Indirizzo multicast per tutti i router, ambito locale dell'interfaccia (FF01::2). Indirizzo multicast per tutti i nodi, ambito locale del collegamento (FF02::1). Indirizzo multicast per tutti i router, ambito locale del collegamento (FF02::2). Indirizzo multicast per tutti i router, ambito locale del sito (FF05::2). Indirizzo del nodo richiesto per ogni indirizzo unicast su ogni interfaccia. Indirizzi multicast di gruppi uniti su ogni interfaccia. Confronto tra gli indirizzi IPv4 e IPv6 Nella tabella 3-5 sono elencati gli indirizzi e i concetti di indirizzi IPv4 e gli equivalenti IPv6. Indirizzo IPv4 Classi di indirizzi Internet Indirizzi multicast IPv4 (224.0.0.0/4) Indirizzi broadcast: broadcast di rete, broadcast di subnet, broadcast diretto a tutte le subnet e broadcast limitato L'indirizzo non specificato è 0.0.0.0 L'indirizzo di loopback è 127.0.0.1 Indirizzi IPv4 pubblici Indirizzi IPv4 privati (10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16) Indirizzi APIPA (169.254.0.0/16) Indirizzo IPv6 Non applicabile in IPv6 Indirizzi multicast IPv6 (FF00::/8) Non applicabile in IPv6 L'indirizzo non specificato è :: L'indirizzo di loopback è ::1 Indirizzi unicast globali Indirizzi locali del sito (FEC0::/10) Indirizzi locali del collegamento (FE80::/64) Sintassi dell'indirizzo: notazione decimale separata da punti Sintassi dell'indirizzo: formato esadecimale separato da due punti, con eliminazione degli zeri iniziali e compressione degli zeri Sintassi del prefisso degli indirizzi: notazione della lunghezza del prefisso o decimale separata da punti (subnet mask) Sintassi del prefisso degli indirizzi: solo notazione della lunghezza del prefisso Tabella 3-5 Confronto tra gli indirizzi IPv4 e IPv6 Riepilogo del capitolo Le principali informazioni fornite nel presente capitolo sono le seguenti: Gli indirizzi IPv4 vengono espressi in formato decimale separato da punti. I prefissi degli indirizzi IPv4 vengono espressi come forma decimale separata da punti dell'indirizzo iniziale, con la lunghezza del prefisso indicata da un numero intero o da un numero decimale separato da punti, detto anche subnet mask. Nel protocollo IPv4 vengono utilizzati indirizzi unicast per recapitare un pacchetto da un'origine a una destinazione, indirizzi multicast per recapitare un pacchetto da un'origine a più destinazioni e indirizzi broadcast per recapitare un pacchetto da un'origine a ogni destinazione nella subnet. Per il protocollo IPv4, è possibile utilizzare indirizzi unicast pubblici, se assegnati dall'autorità ICANN o da un ISP, oppure indirizzi privati, ovvero 10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16. I componenti TCP/IP di Windows utilizzano gli indirizzi APIPA per configurare automaticamente gli host con indirizzi derivati dal prefisso degli indirizzi 169.254.0.0/16 in una singola subnet. Gli indirizzi IPv6 vengono espressi in formato esadecimale separato da due punti, eliminando gli zeri iniziali e comprimendo un singolo insieme di blocchi contigui di zeri, tramite la notazione due punti doppio. I prefissi degli indirizzi IPv6 vengono espressi come forma esadecimale separata da due punti dell'indirizzo iniziale con una lunghezza del prefisso. Nel protocollo IPv6 vengono utilizzati indirizzi unicast, multicast e anycast per recapitare un pacchetto da un'origine a una tra più destinazioni. Per gli indirizzi unicast IPv6, è possibile utilizzare indirizzi globali, se sono assegnati dall'autorità IANA o da un ISP, indirizzi locali del sito, ovvero FEC0::/10, o indirizzi locali del collegamento, ovvero FE80::/64. Per gli indirizzi locali del collegamento è necessario specificare un ID area per identificare il collegamento per una destinazione. Per gli indirizzi locali del sito è necessario specificare un ID area per identificare il sito per una destinazione, nel caso in cui siano presenti più siti. Gli identificatori di interfaccia IPv6 vengono generalmente derivati da indirizzi IEEE 802 o IEEE EUI-64. L'indirizzo multicast del nodo richiesto è un indirizzo multicast speciale utilizzato per garantire un'efficace risoluzione degli indirizzi a livello di collegamento in una subnet. Glossario del capitolo indirizzo - Identificatore assegnato a livello di Internet a un'interfaccia o a un insieme di interfacce e che identifica l'origine o la destinazione dei pacchetti IP. classe di indirizzi - Gruppo predefinito di indirizzi IPv4 utilizzati in Internet. Le classi di indirizzi definivano reti di dimensioni specifiche e determinavano l'intervallo di numeri che era possibile assegnare al primo ottetto di un indirizzo IPv4. La notazione CIDR (Classless Inter-Domain Routing) ha reso obsoleti gli indirizzi IPv4 di classe. prefisso dell'indirizzo - Intervallo di indirizzi definito impostando i bit fissi di ordine superiore su valori specifici e i bit variabili di ordine inferiore su 0. I prefissi degli indirizzi sono in genere utilizzati per esprimere un intervallo di indirizzi consentiti, identificatori di rete assegnati a subnet e route. Nel protocollo IPv4 i prefissi degli indirizzi vengono espressi con la notazione della lunghezza del prefisso o decimale separata da punti (subnet mask). Nel protocollo IPv6 i prefissi degli indirizzi vengono espressi con la notazione della lunghezza del prefisso. indirizzo anycast - Indirizzo assegnato dallo spazio degli indirizzi unicast, che identifica più interfacce e viene utilizzato per recapitare pacchetti da un'origine a una di più destinazioni. Con la topologia di routing appropriata, i pacchetti inviati a un indirizzo anycast vengono recapitati all'interfaccia più vicina a cui è assegnato l'indirizzo. APIPA - Vedere Indirizzi IP privati automatici (APIPA; Automatic Private IP Addressing). indirizzi IP privati automatici (APIPA; Automatic Private IP Addressing) - Funzionalità del componente TCP/IP di Windows Server 2003 e Windows XP. La funzionalità APIPA consente la configurazione automatica di un indirizzo IPv4 e di una subnet mask dall'intervallo 169.254.0.0/16 quando il componente TCP/IP è impostato per la configurazione automatica e non è disponibile un server DHCP. CIDR - Vedere Classless Inter-Domain Routing (CIDR). indirizzo IPv4 di classe A - Indirizzo unicast IPv4 compreso nell'intervallo da 1.0.0.1 a 127.255.255.254. Il primo ottetto indica l'ID di rete, mentre gli ultimi tre ottetti indicano l'ID host. La notazione CIDR (Classless Inter-Domain Routing) ha reso obsoleti gli indirizzi IPv4 di classe. indirizzo IPv4 di classe B - Indirizzo unicast IPv4 compreso nell'intervallo da 128.0.0.1 a 191.255.255.254. I primi due ottetti indicano l'ID di rete, mentre gli ultimi due ottetti indicano l'ID host. La notazione CIDR (Classless Inter-Domain Routing) ha reso obsoleti gli indirizzi IPv4 di classe. indirizzo IPv4 di classe C - Indirizzo unicast IPv4 compreso nell'intervallo da 192.0.0.1 a 223.255.255.254. I primi tre ottetti indicano l'ID di rete, mentre l'ultimo ottetto indica l'ID host. La notazione CIDR (Classless Inter-Domain Routing) ha reso obsoleti gli indirizzi IPv4 di classe. Classless Inter-Domain Routing (CIDR) - Tecnica per l'aggregazione di route e l'assegnazione di indirizzi IPv4 nell'attuale rete Internet. Con la notazione CIDR i prefissi degli indirizzi vengono espressi in forma di prefisso dell'indirizzo con una lunghezza del prefisso e non in termini di classi di indirizzi, concetto sostituito dalla notazione CIDR. notazione esadecimale separata da due punti - Notazione utilizzata per esprimere gli indirizzi IPv6. Gli indirizzi IPv6 sono costituiti da 128 bit suddivisi in otto blocchi da 16 bit. Ogni blocco viene espresso come numero esadecimale e i blocchi adiacenti sono separati dal segno di due punti. In ogni blocco vengono eliminati gli zeri iniziali. Un esempio di indirizzo unicast IPv6 in notazione esadecimale separata da due punti è 3FFE:FFFF:2A1D:48C:2AA:3CFF:FE21:81F9. notazione decimale separata da punti - Notazione generalmente utilizzata per esprimere gli indirizzi IPv4. Gli indirizzi IPv4 sono costituiti da 32 bit suddivisi in quattro blocchi da 8 bit. Ogni blocco viene espresso come numero decimale e i blocchi adiacenti sono separati da punti. Un esempio di indirizzo unicast IPv4 in notazione decimale separata da punti è 131.107.199.45. due punti doppio - Tecnica di compressione di una singola serie di blocchi contigui di zeri in un indirizzo IPv6 in"::". È ad esempio possibile esprimere l'indirizzo multicast FF02:0:0:0:0:0:0:2 come FF02::2. EUI - Vedere Identificatore univoco esteso (EUI, Extended Unique Identifier). indirizzo EUI-64 - Indirizzo a livello di collegamento composto da 64 bit e utilizzato come base per un identificatore di interfaccia IPv6. identificatore univoco esteso (EUI, Extended Unique Identifier) - Indirizzo a livello di collegamento definito dall'istituto IEEE (Electrical and Electronics Engineers). indirizzo unicast globale - Indirizzo unicast IPv6 instradabile e raggiungibile globalmente nella parte IPv6 di Internet. Gli indirizzi globali IPv6 equivalgono agli indirizzi IPv4 pubblici. IEEE - Acronimo di Institute of Electrical and Electronics Engineers. indirizzo IEEE 802 - Indirizzo a livello di collegamento composto da 48 bit e definito dall'istituto IEEE. Gli indirizzi IEEE 802 vengono utilizzati per le schede di rete Ethernet e token ring. indirizzo IEEE EUI-64 - Vedere Indirizzo EUI-64. indirizzo non valido - Indirizzo duplicato che entra in conflitto con un indirizzo pubblico IPv4 già assegnato dall'autorità ICANN a un'altra organizzazione. indirizzo locale del collegamento - Indirizzo utilizzato localmente che ha il prefisso FE80::/64 e il cui ambito è il collegamento locale. Gli indirizzi locali del collegamento vengono utilizzati dai nodi per la comunicazione con i nodi adiacenti sullo stesso collegamento. Gli indirizzi locali del collegamento equivalgono agli indirizzi APIPA (Automatic Private IP Addressing) IPv4. indirizzo di loopback - Per il protocollo IPv4 è costituito dall'indirizzo 127.0.0.1. Per il protocollo IPv6 è costituito dall'indirizzo 0:0:0:0:0:0:0:1 oppure ::1. L'indirizzo di loopback viene utilizzato dai nodi per inviare pacchetti a se stessi. indirizzo multicast - Indirizzo che identifica zero o più interfacce e viene utilizzato per recapitare pacchetti da un'origine a più destinazioni. Con la topologia di routing multicast appropriata, i pacchetti inviati a un indirizzo multicast vengono consegnati a tutte le interfacce identificate dall'indirizzo. notazione della lunghezza del prefisso - Tecnica mediante la quale i prefissi degli indirizzi vengono espressi come IndirizzoIniziale/LunghezzaPrefisso, dove LunghezzaPrefisso indica il numero di bit fissi di ordine superiore nell'indirizzo. indirizzi privati - Indirizzi IPv4 utilizzati dalle organizzazioni nelle reti Intranet private, con uno dei seguenti prefissi: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16. indirizzi pubblici - Indirizzi IPv4 assegnati dall'autorità ICANN globalmente univoci e raggiungibili nella rete Internet IPv4. indirizzo locale del sito - Indirizzo IPv6 utilizzato localmente identificato dal prefisso FEC0::/10 e il cui ambito è rappresentato da un sito. Gli indirizzi locali del sito equivalgono allo spazio degli indirizzi privato IPv4. Gli indirizzi locali del sito non sono raggiungibili da altri siti e i router non devono inoltrare il traffico locale del sito al di fuori del sito stesso. indirizzo multicast del nodo richiesto - Indirizzo multicast IPv6 utilizzato dai nodi per risolvere gli indirizzi. L'indirizzo multicast del nodo richiesto è costituito dal prefisso FF02::1:FF00:0/104 e dagli ultimi 24 bit di un indirizzo unicast IPv6. L'indirizzo multicast del nodo richiesto svolge la funzione di indirizzo pseudo-unicast per garantire una risoluzione degli indirizzi efficiente nei collegamenti IPv6. subnet mask - Espressione della lunghezza di un prefisso per gli intervalli di indirizzi IPv4 in notazione decimale separata da punti. Il prefisso dell'indirizzo 131.107.0.0/16 in notazione subnet mask è ad esempio 131.107.0.0, 255.255.0.0. indirizzo unicast - Indirizzo che identifica un'unica interfaccia e viene utilizzato per recapitare pacchetti da un'origine a una singola destinazione. Con la topologia di routing unicast appropriata, i pacchetti inviati a un indirizzo unicast vengono consegnati a un'unica interfaccia. indirizzo non specificato - Per il protocollo IPv4 è costituito dall'indirizzo 0.0.0.0. Per il protocollo IPv6 è costituito dall'indirizzo 0:0:0:0:0:0:0:0 oppure ::. L'indirizzo non specificato indica l'assenza di un indirizzo. ID area - Numero intero che specifica l'area di destinazione del traffico IPv6. Nei comandi Ping, Tracert e Pathping la sintassi per specificare un ID area è IndirizzoIPv6%IDArea. In genere il valore di IDArea per gli indirizzi locali del collegamento equivale all'indice dell'interfaccia. Per gli indirizzi locali del sito, il valore di IDArea equivale al numero del sito. Il parametro IDArea non è necessario quando la destinazione è un indirizzo globale e quando non sono utilizzati più siti. Nozioni fondamentali sul protocollo TCP/IP per Microsoft Windows: Capitolo 2: Panoramica dell'architettura della suite di protocolli TCP/IP Capitolo 2: Panoramica dell'architettura della suite di protocolli TCP/IP Pubblicato: 2 novembre 2004 Abstract Nel presente capitolo viene illustrato più dettagliatamente il modello TCP/IP (Transmission Control Protocol/Internet Protocol) attraverso l'analisi dei suoi quattro livelli e dei protocolli principali utilizzati in ciascun livello. Gli amministratori di rete devono conoscere i protocolli di base dei vari livelli con le relative funzioni per poter comprendere il funzionamento delle applicazioni di rete, le modalità di invio di dati tra applicazioni e in che modo interpretare le acquisizioni di rete. Nel presente capitolo vengono inoltre illustrate le due API (Application Programming Interface) principali utilizzate dai sistemi operativi Microsoft® Windows® e gli schemi di denominazione delle stesse. In questa pagina Obiettivi del capitolo La suite di protocolli TCP/IP Livello Internet IPv4 Livello Internet IPv6 TCP (Transmission Control Protocol) UDP (User Datagram Protocol) Multiplexing e demultiplexing di pacchetti API (Application Programming Interface) Schemi di denominazione TCP/IP in Windows Riepilogo del capitolo Glossario del capitolo Obiettivi del capitolo Al termine di questo capitolo si sarà in grado di eseguire le seguenti attività. Descrivere in che modo la suite di protocolli TCP/IP corrisponde ai modelli DARPA (Department of Defense Advanced Research Projects Agency) e OSI (Open System Interconnection). Elencare i principali protocolli nei livelli Interfaccia di rete, Internet, Trasporto e Applicazione del modello DARPA. Illustrare lo scopo dei protocolli di base del livello Internet IPv4. Illustrare lo scopo dei protocolli di base del livello Internet IPv6. Illustrare lo scopo e le caratteristiche dei protocolli TCP e UDP (User Datagram Protocol). Spiegare in che modo IP adopera le informazioni contenute nei pacchetti IP per recapitare dati all'applicazione corretta nel nodo di destinazione. Descrivere lo scopo e le caratteristiche delle API Windows Sockets e NetBIOS (Network Basic Input/Output System). Descrivere lo scopo e le caratteristiche del nome host e gli schemi di denominazione NetBIOS utilizzati dai componenti TCP/IP nei sistemi operativi Microsoft Windows Server™ 2003 e Windows XP. La suite di protocolli TCP/IP La suite di protocolli TCP/IP corrisponde a un modello concettuale a quattro livelli denominato DARPA, dal nome dell'agenzia governativa statunitense che sviluppò inizialmente il protocollo TCP/IP. I quattro livelli del modello DARPA sono: Applicazione, Trasporto, Internet e Interfaccia di rete. Ciascun livello del modello DARPA corrisponde a uno o più livelli del modello OSI a sette livelli. Nella figura 2-1 viene mostrata l'architettura della suite dei protocolli TCP/IP. Figura 2-1 Architettura della suite di protocolli TCP/IP La suite dei protocolli TCP/IP è composta da due insiemi di protocolli al livello Internet: IPv4, noto anche come IP, rappresenta il livello Internet attualmente più utilizzato nelle reti Intranet e sul Web. IPv6 è il nuovo livello Internet che in futuro sostituirà l'attuale livello IPv4. Livello Interfaccia di rete Il livello Interfaccia di rete, denominato anche livello Accesso di rete, invia e riceve pacchetti TCP/IP a e dal supporto di rete. La suite TCP/IP è stata progettata in modo da risultare indipendente dal metodo di accesso alla rete, dal formato del frame e dal supporto utilizzati. È quindi possibile utilizzarla per comunicare in tipi di rete differenti che adoperano tecnologie LAN, ad esempio LAN senza fili Ethernet e 802.11, e tecnologie WAN, ad esempio Frame Relay e ATM (Asynchronous Transfer Mode). La mancata associazione a una tecnologia di rete specifica consente di adattare la suite TCP/IP a nuove tecnologie. Il livello Interfaccia di rete del modello DARPA comprende i livelli Collegamento dati e Fisico del modello OSI. Il livello Internet del modello DARPA non sfrutta i servizi di sequenzializzazione e riconoscimento eventualmente presenti nel livello Collegamento dati del modello OSI. Il livello Internet presuppone un livello Interfaccia di rete inaffidabile e demanda la responsabilità di garantire comunicazioni affidabili mediante l'attivazione di una sessione, come anche la sequenzializzazione e il riconoscimento di pacchetti, al livello Trasporto o Applicazione. Livello Internet Il livello Internet, responsabile delle funzioni di indirizzamento, suddivisione in pacchetti e instradamento dei dati, corrisponde al livello Rete del modello OSI. Il livello Internet IPv4 è costituito dai seguenti protocolli di base: Il protocollo ARP (Address Resolution Protocol) risolve l'indirizzo di livello Internet in un indirizzo di livello Interfaccia di rete, ad esempio un indirizzo hardware. Il protocollo IP (Internet Protocol) è un protocollo instradabile che indirizza, instrada, suddivide in frammenti e riassembla pacchetti. Il protocollo ICMP (Internet Control Message Protocol) riporta errori e altre informazioni utili per diagnosticare la mancata consegna di pacchetti. Il protocollo IGMP (Group Management Protocol) gestisce gruppi multicast IP. Per ulteriori informazioni sui protocolli di base relativi al livello Internet IPv4, vedere la sezione "Livello Internet IPv4" più avanti nel presente capitolo. Il livello Internet IPv6 è costituito dai seguenti protocolli di base: IPv6 è un protocollo instradabile che indirizza e instrada pacchetti. Il protocollo ICMPv6 (Internet Control Message Protocol for IPv6) riporta errori e altre informazioni utili per diagnosticare la mancata consegna di pacchetti. Il protocollo ND (Neighbor Discovery) gestisce le interazioni tra nodi IPv6 adiacenti. Il protocollo MLD (Multicast Listener Discovery) gestisce gruppi multicast IPv6. Per ulteriori informazioni sui protocolli di base relativi al livello Internet IPv6, vedere la sezione "Livello Internet IPv6" più avanti nel presente capitolo. Livello Trasporto Il livello Trasporto, noto anche come Trasporto host-to-host, fornisce al livello Applicazione servizi di sessione e comunicazione datagrammi. Il livello Trasporto è analogo all'omonimo livello del modello OSI. I protocolli di base del livello Trasporto sono TCP e UDP. Il protocollo TCP fornisce un servizio per comunicazioni affidabili, orientato alla connessione, uno-a-uno. Il TCP instaura le connessioni, stabilisce la sequenza, riconosce i pacchetti inviati e recupera pacchetti persi nel corso della trasmissione. Diversamente dal TCP, il protocollo UDP fornisce un servizio per comunicazioni inaffidabili, non orientato alla connessione, uno-a-uno o uno-a-molti. L'UDP viene utilizzato per il trasferimento di piccoli volumi di dati (ad esempio, i dati di un singolo pacchetto), dagli sviluppatori di applicazioni per evitare il sovraccarico associato alle connessioni TCP, oppure quando le applicazioni o protocolli di livello superiore assicurano una consegna affidabile. TCP e UDP funzionano su entrambi i livelli Internet, IPv4 e IPv6. Nota Le versioni dei protocolli TCP e UDP del componente Internet Protocol (TCP/IP) di Windows differiscono dal componente TCP/IP Microsoft versione 6. Le versioni presenti nel componente TCP/IP Microsoft versione 6 sono funzionalmente equivalenti a quelle fornite con i sistemi operativi Microsoft Windows NT® 4.0 e includono tutti gli ultimi aggiornamenti di protezione. L'esistenza di componenti protocollo separati con proprie versioni TCP e UDP è definita "architettura dual-stack". L'architettura ideale è costituita da un livello IP doppio, nel quale, secondo quanto mostrato nella figura 2-1, le stesse versioni di TCP e UDP funzionano sia su IPv4 che su IPv6. In un prossimo aggiornamento dei sistemi operativi Windows, Microsoft ha intenzione di adoperare un'architettura di livello IP doppio per i componenti protocollo TCP/IP. Livello Applicazione Il livello Applicazione consente alle applicazioni di accedere ai servizi degli altri livelli e definisce i protocolli utilizzati dalle applicazioni per lo scambio di dati. Tale livello contiene molti protocolli, e altri sono costantemente in fase di sviluppo. Di seguito sono illustrati i protocolli più noti per lo scambio di dati del livello Applicazione. Il protocollo HTTP (Hypertext Transfer Protocol) trasferisce file che costituiscono pagine sul Web. Il protocollo FTP (File Transfer Protocol) trasferisce singoli file, di norma per una sessione utente interattiva. Il protocollo SMTP (Simple Mail Transfer Protocol) trasferisce messaggi e allegati di posta. Inoltre, i protocolli del livello Applicazione di seguito riportati aiutano nell'utilizzo e gestione di reti TCP/IP. Il protocollo DNS (Domain Name System) risolve i nomi host, ad esempio www.microsoft.com, in un indirizzo IP e copia le informazioni sui nomi tra server DNS. Il protocollo RIP (Routing Information Protocol) viene utilizzato dai router per scambiarsi informazioni di routing in una rete IP. Il protocollo SNMP (Simple Network Management Protocol) raccoglie e scambia informazioni relative alla gestione di rete tra una console gestionale e periferiche di rete, come router, bridge e server. Windows Sockets e NetBIOS sono esempi di interfacce di livello Applicazione per applicazioni TCP/IP. Per ulteriori informazioni, vedere la sezione "API (Application Programming Interface)" più avanti nel presente capitolo. Livello Internet IPv4 Il livello Internet IPv4 è costituito dai seguenti protocolli: ARP IP (IPv4) ICMP IGMP Nelle sezioni seguenti ciascun protocollo viene illustrato più analiticamente. ARP Quando IP invia pacchetti su una rete ad accesso condiviso basata sul broadcast, come una LAN senza fili Ethernet o 802.11, il protocollo deve risolvere gli indirizzi MAC (Media Access Control) corrispondenti agli indirizzi IPv4 dei nodi a cui i pacchetti sono stati inoltrati, noti anche come indirizzi IPv4 di hop successivo. In base alla definizione del documento RFC 826, il protocollo ARP utilizza broadcast di livello MAC per risolvere indirizzi IPv4 di hop successivo nei corrispondenti indirizzi MAC. A seconda dell'indirizzo IPv4 di destinazione e del processo di determinazione del percorso, IPv4 determina l'indirizzo IPv4 dell'hop successivo e l'interfaccia per l'inoltro del pacchetto. Quindi passa il pacchetto IPv4, l'indirizzo IPv4 e l'interfaccia dell'hop successivo al protocollo ARP. Se l'indirizzo IPv4 dell'hop successivo del pacchetto è identico all'indirizzo IPv4 di destinazione, il protocollo ARP recapita direttamente il pacchetto a destinazione. In una consegna diretta ARP deve risolvere l'indirizzo IPv4 della destinazione del pacchetto nel corrispondente indirizzo MAC. Se l'indirizzo IPv4 dell'hop successivo del pacchetto non è identico all'indirizzo IPv4 di destinazione, il protocollo ARP esegue una consegna indiretta a un router. In una consegna indiretta ARP deve risolvere l'indirizzo IPv4 del router nel corrispondente indirizzo MAC. Per risolvere l'indirizzo IPv4 dell'hop successivo di un pacchetto nel corrispondente indirizzo MAC, il protocollo ARP sfrutta la funzione di broadcasting presente nelle reti ad accesso condiviso, come Ethernet o 802.11, per inviare un frame di richiesta ARP sotto forma di broadcast. Il mittente riceve in risposta un frame ARP che contiene l'indirizzo MAC corrispondente all'indirizzo IPv4 dell'hop successivo del pacchetto. Cache ARP Per ridurre al minimo la quantità di frame di richiesta ARP broadcast, molte implementazioni di protocollo TCP/IP incorporano una cache ARP: una tabella di indirizzi IPv4 recentemente risolti con i corrispondenti indirizzi MAC. Prima di inviare un frame di richiesta, ARP controlla questa cache. Ogni interfaccia dispone della propria cache ARP. A seconda delle implementazioni del fornitore, la cache ARP può presentare le caratteristiche di seguito riportate. Le voci della cache ARP possono essere dinamiche (basate su repliche ARP) o statiche. Le voci statiche sono permanenti e vengono aggiunte manualmente mediante uno strumento TCP/IP, come lo strumento ARP di Windows. Le voci statiche della cache ARP impediscono ai nodi di inviare richieste ARP per indirizzi locali IPv4 utilizzati comunemente, come gli indirizzi relativi a router e server. Se viene cambiata la scheda di rete, è tuttavia necessario aggiornare le voci ARP statiche manualmente. Le voci di cache ARP dinamiche, essendo associate a valori di timeout, vengono rimosse dalla cache allo scadere di un determinato intervallo di tempo. Ad esempio, le voci di cache ARP dinamiche relative a Windows sono rimosse dopo non più di 10 minuti. Per visualizzare la cache ARP su un computer basato su Windows, al prompt dei comandi digitare arp -a. Lo strumento ARP può essere utilizzato anche per aggiungere o eliminare voci statiche della cache ARP. Processo ARP Durante l'invio del pacchetto iniziale come host di invio o l'inoltro del pacchetto in qualità di router, IPv4 invia ad ARP il pacchetto IPv4, l'indirizzo IPv4 e l'interfaccia dell'hop successivo. ARP esegue una consegna diretta o indiretta tramite il processo di seguito riportato. 1. 2. 3. 4. 5. 6. In base all'indirizzo IPv4 e all'interfaccia dell'hop successivo, ARP controlla nella cache appropriata la presenza di una voce che corrisponda all'indirizzo IPv4 dell'hop successivo. Se individua una voce, ARP procede direttamente al passaggio 6. Se ARP non trova alcuna voce, crea un frame di richiesta contenente gli indirizzi MAC e IPv4 dell'interfaccia da cui è stata inviata la richiesta ARP e l'indirizzo IPv4 dell'hop successivo del pacchetto. Quindi invia in broadcast il frame di richiesta dall'interfaccia appropriata. Il frame in broadcast viene ricevuto da tutti i nodi della subnet che elaborano perciò la richiesta ARP. Se l'indirizzo dell'hop successivo della richiesta ARP corrisponde all'indirizzo IPv4 assegnato ad un'interfaccia nella subnet, il nodo di ricezione aggiorna la propria cache ARP con gli indirizzi IPv4 e MAC del richiedente. Tutti gli altri nodi scartano automaticamente la richiesta ARP. Il nodo di ricezione a cui viene assegnato l'indirizzo dell'hop successivo del pacchetto IPv4 formula una risposta ARP contenente l'indirizzo MAC richiesto e la invia direttamente al richiedente. Al ricevimento della risposta ARP, il richiedente aggiorna la propria cache con il mapping degli indirizzi. Attraverso lo scambio ARP, il richiedente e il nodo che risponde acquisiscono reciprocamente i mapping degli indirizzi nelle rispettive cache. Il richiedente ARP invia il pacchetto IPv4 al nodo dell'hop successivo indirizzandolo all'indirizzo MAC risolto. Il processo descritto è illustrato nella figura 2-2. Figura 2-2 Processo di risoluzione indirizzi ARP Internet Protocol versione 4 (IPv4) IPv4 è un protocollo a datagrammi responsabile principalmente dell'indirizzamento e instradamento di pacchetti tra host. Il protocollo IPv4 non è orientato alla connessione, per cui non stabilisce una connessione prima dello scambio di dati, ed è inaffidabile, nel senso che non assicura la consegna del pacchetto. IPv4 tenta sempre di recapitare un pacchetto, che tuttavia potrebbe andare perso, essere consegnato fuori sequenza, duplicato o recapitato in ritardo. IPv4 non effettua alcun tentativo per recuperare questo tipo di errori. Un protocollo di livello superiore, ad esempio un protocollo TCP o applicazioni, deve in caso di necessità riconoscere i pacchetti recapitati e recuperare quelli persi. IPv4 è definito nel documento RFC 791. Un pacchetto IPv4 è costituito da un'intestazione e un payload IPv4. Il payload è a sua volta formato da un'unità dati di un protocollo di livello superiore, come un segmento TCP o un messaggio UDP. Nella figura 2-3 è mostrata la struttura di base di un pacchetto IPv4. Figura 2-3 Struttura di base di un pacchetto IPv4 Nella tabella 2-1 sono elencati e illustrati i campi chiave dell'intestazione IPv4. Campo intestazione IPv4 Source IP Address Destination IP Address Identification Protocol Checksum Time-to-Live (TTL) Descrizione Indirizzo di origine del pacchetto IP. Indirizzo della destinazione intermedia o finale del pacchetto IP. Identificatore, in caso di frammentazione, di tutti i frammenti di un determinato pacchetto IPv4. Identificatore del protocollo di livello superiore a cui è necessario trasferire il payload IPv4. Semplice calcolo matematico utilizzato per controllare errori a livello di bit nell'intestazione IPv4. Numero di segmenti di rete sui quali può viaggiare il datagramma prima che un router lo scarti. All'inoltro di un pacchetto IPv4, i router riducono di un'unità il campo TTL impostato dall'host di invio. Grazie a questo campo i pacchetti non circolano all'infinito in una rete IPv4. Tabella 2-1 Campi chiave in un'intestazione IPv4 Frammentazione e riassemblaggio Se un router riceve un pacchetto IPv4 troppo grande per il segmento di rete su cui è stato inoltrato, l'IPv4 del router frammenta il pacchetto originale in pacchetti di dimensioni minori adeguate al segmento di rete su cui avviene l'inoltro. Quando i pacchetti arrivano alla destinazione finale, l'IPv4 dell'host di destinazione riassembla i frammenti nel payload originale. Questo processo è denominato frammentazione e riassemblaggio. La frammentazione può essere effettuata in ambienti con tecnologie di rete miste, come Ethernet o Token Ring. Di seguito è illustrato il funzionamento del processo di frammentazione e riassemblaggio. 1. 2. 3. Prima dell'invio di un pacchetto IPv4, l'origine inserisce un valore univoco nel campo Identification. Lungo il percorso tra l'host di invio e la destinazione, il pacchetto IPv4 viene ricevuto da un router che si accorge che le dimensioni del pacchetto eccedono le dimensioni dell'unità massima di trasmissione (MTU) della rete su cui deve essere inoltrato. IPv4 divide il payload originale in frammenti che possono essere contenuti sulla rete successiva. Ciascun frammento riceve la propria intestazione IPv4 che contiene: o Il campo Identification originale che identifica tutti i frammenti raggruppati insieme. o Il flag More Fragments che indica la presenza di altri frammenti successivi. Tale flag, a causa dell'assenza di altri frammenti, non è impostato sull'ultimo frammento. o Il campo Fragment Offset che indica la posizione del frammento rispetto al payload IPv4 originale. Alla ricezione dei frammenti, l'host remoto utilizza il campo Identification per identificare i frammenti raggruppati insieme e, tramite il campo Fragment Offset, li riassembla nell'ordine corretto così da ricreare il payload IPv4 originale. ICMP (Internet Control Message Protocol) Il protocollo ICMP, definito nel documento RFC 792, riporta e aiuta a risolvere errori di pacchetti che non possono essere recapitati. Se, ad esempio, IPv4 non riesce a recapitare un pacchetto all'host di destinazione, il protocollo ICMP del router o dell'host di destinazione invia un messaggio di destinazione non raggiungibile all'host di invio. Nella tabella 2-2 sono elencati e illustrati i messaggi ICMP più comuni. Messaggio ICMP Echo Echo Reply Redirect Source Quench Destination Unreachable Descrizione Lo strumento Ping invia messaggi Echo ICMP per risolvere problemi di rete attraverso la verifica della connettività IPv4 a un determinato nodo. I nodi inviano messaggi Echo Reply in risposta a messaggi Echo ICMP. I router inviano messaggi Redirect per comunicare ad host di invio i migliori percorsi ad indirizzi IPv4 di destinazione. I router inviano messaggi Source Quench (origine estinta) per informare gli host di invio che i pacchetti IPv4 sono stati scartati per problemi di congestione. In tal modo gli host di invio rallentano la frequenza di invio dei pacchetti. I router e gli host di destinazione inviano messaggi Destination Unreachable (destinazione non raggiungibile) per informare gli host di invio che non è possibile recapitare i pacchetti. Tabella 2-2 Messaggi ICMP comuni Il protocollo ICMP contiene una serie di messaggi di destinazione non raggiungibile, i più comuni dei quali sono elencati e illustrati nella tabella 2-3. Messaggio di destinazione non raggiungibile Host Unreachable Protocol Unreachable Port Unreachable Fragmentation Needed and DF Set Descrizione I router inviano messaggi Host Unreachable (host irraggiungibile) quando non sono in grado di individuare percorsi agli indirizzi IPv4 di destinazione. I nodi IPv4 di destinazione inviano messaggi Protocol Unreachable (protocollo non raggiungibile) quando non sono in grado di associare il campo Protocol dell'intestazione IPv4 al protocollo client IPv4 correntemente utilizzato. I nodi IPv4 inviano messaggi Port Unreachable (porta non raggiungibile) quando non sono in grado di associare il campo Destination Port dell'intestazione UDP all'applicazione che utilizza quella porta UDP. I router IPv4 inviano messaggi Fragmentation Needed and DF Set quando è necessario eseguire la frammentazione di un pacchetto ma il nodo di invio ha impostato il flag Don’t Fragment (DF) nell'intestazione IPv4. Tabella 2-3 Messaggi di destinazione non raggiungibile ICMP comuni L'ICMP, pur non rendendo il protocollo IPv4 affidabile, riporta gli errori e fornisce un feedback in presenza di specifiche condizioni. I messaggi ICMP sono trasportati come pacchetti IPv4 non riconosciuti e sono essi stessi inaffidabili. IGMP (Internet Group Management Protocol) Router e host utilizzano il protocollo IGMP per gestire l'appartenenza in gruppi multicast IPv4 su una subnet. Un gruppo multicast IPv4, definito anche gruppo host, è un insieme di host posti in ascolto del traffico destinato a uno specifico indirizzo multicast IPv4. Il traffico multicast IPv4 di una determinata subnet, sebbene inviato a un singolo indirizzo MAC, viene ricevuto ed elaborato da più host IPv4. Un membro del gruppo host ascolta uno specifico indirizzo multicast IPv4 e riceve tutti i pacchetti ad esso inviati. Perché un host riceva il traffico multicast IPv4, è necessario che un'applicazione informi il protocollo IPv4 della relativa ricezione presso uno specifico indirizzo multicast IPv4. Il protocollo IPv4 informa quindi i router delle subnet locali della necessità di ricevere pacchetti multicast inviati all'indirizzo multicast IPv4 specificato. Le informazioni relative all'appartenenza ad un gruppo host sono registrate tramite il protocollo IGMP. Di seguito sono riportati i possibili formati dei messaggi IGMP. Membri di un gruppo host utilizzano il messaggio IGMP Host Membership Report per dichiarare la propria appartenenza a uno specifico gruppo host. I router utilizzano il messaggio IGMP Host Membership Query per richiedere alle subnet informazioni sui membri di gruppi host. I membri di un gruppo host utilizzano il messaggio IGMP Leave Group quando abbandonano un gruppo del quale potrebbero essere l'ultimo membro nella subnet. Per il multicasting lungo una rete IPv4, i router comunicano informazioni sui gruppi host mediante protocolli di routing multicast. Ciascun router che supporta l'inoltro multicast è in grado quindi di determinare la modalità di inoltro del traffico multicast IPv4. Windows Server 2003 e Windows XP supportano i protocolli IGMP, IGMP versione 2 e IGMP versione 3, rispettivamente definiti nei documenti RFC 1112, RFC 2236 e RFC 3376. Livello Internet IPv6 IPv6 sostituirà completamente i protocolli del livello Internet IPv4 del modello DARPA. Saranno effettuate le seguenti sostituzioni. IPv4 con IPv6: IPv6 è un protocollo instradabile che indirizza, instrada, suddivide in frammenti e riassembla pacchetti. ICMP con ICMPv6: il protocollo ICMPv6 diagnostica e riporta gli errori alla base del mancato recapito di pacchetti IPv6. IGMP con MLD: il protocollo MLD gestisce l'appartenenza a gruppi multicast IPv6. ARP con ND: il protocollo ND gestisce le interazioni tra nodi adiacenti, compresa la configurazione automatica di indirizzi e la risoluzione di indirizzi IPv6 di hop successivo in indirizzi MAC. Per supportare le operazioni sul livello Internet IPv6, non è necessario che gli sviluppatori di software modifichino i protocolli ai livelli Trasporto e Applicazione, se non quando gli indirizzi fanno parte del payload o delle strutture di dati gestite dal protocollo. Ad esempio, gli sviluppatori devono aggiornare i protocolli TCP e UDP per eseguire un nuovo checksum, e il protocollo RIP per inviare e ricevere informazioni di routing su IPv6. Il livello Internet IPv6 è costituito dai seguenti protocolli: IPv6 ICMPv6 ND MLD Tali protocolli sono illustrati più analiticamente nelle sezioni seguenti. IPv6 Analogamente all'IPv4, l'IPv6 è un protocollo a datagrammi, inaffidabile e non orientato alla connessione, principalmente responsabile dell'indirizzamento e instradamento di pacchetti tra host. La struttura di un pacchetto IPv6 è definita nel documento RFC 2460. Un pacchetto IPv6 è costituito da un'intestazione e un payload IPv6. Il payload è rappresentato da zero o più intestazioni di estensione IPv6 e da un'unità dati di un protocollo di livello superiore, come un messaggio ICMPv6, un segmento TCP o un messaggio UDP. Nella figura 2-4 è mostrata la struttura di base di un pacchetto IPv6. Figura 2-4 Struttura di base di un pacchetto IPv6 Nella tabella 2-4 sono elencati e illustrati i campi chiave dell'intestazione IPv6. Campo intestazione Descrizione IPv6 Source Address Indirizzo IPv6 a 128 bit che identifica l'origine del pacchetto IPv6. Destination Indirizzo IPv6 a 128 bit che identifica l'intermediario o la destinazione finale del pacchetto IPv6. Address Identificatore relativo all'intestazione dell'estensione IPv6 immediatamente successiva o ad un Next Header protocollo di livello superiore quale ICMPv6, TCP o UDP. Numero di collegamenti sui quali può viaggiare il pacchetto prima di essere scartato da un router. Nel Hop Limit corso dell'inoltro del pacchetto, i router riducono di un'unità il limite hop impostato dall'host di invio. Grazie a questo campo i pacchetti non circolano all'infinito in una rete IPv6. Tabella 2-4 Campi chiave in un'intestazione IPv6 Intestazioni di estensione IPv6 I payload IPv6 possono contenere zero o più intestazioni di estensione di lunghezza variabile. Un campo Next Header presente nell'intestazione IPv6 indica la successiva intestazione di estensione. Ciascuna intestazione di estensione contiene un altro campo Next Header con l'intestazione successiva. L'ultima intestazione di estensione indica l'eventuale protocollo di livello superiore (ad esempio, TCP, UDP o ICMPv6) contenuto nell'unità dati di un protocollo di livello superiore. Intestazione e intestazioni di estensione IPv6 sostituiscono l'intestazione IPv4 esistente e la possibile inclusione di relative opzioni. Il nuovo formato delle intestazioni di estensione consente di accrescere il protocollo IPv6 per supportare esigenze e funzioni future. Diversamente dalle opzioni presenti nell'intestazione IPv4, le dimensioni delle intestazioni di estensione IPv6 non sono soggette a limiti e possono essere espanse in modo da contenere tutti i dati di estensione necessari per la comunicazione. Nel documento RFC 2460 sono definite le seguenti intestazioni di estensione che tutti i nodi IPv6 devono supportare. Hop-by-Hop Options Destination Options Routing Fragment Authentication Encapsulating Security Payload I pacchetti IPv6 di norma non contengono intestazioni di estensione. Gli host di invio aggiungono almeno un'intestazione di estensione soltanto quando è necessario che router intermedi o la destinazione gestiscano il pacchetto in un determinato modo. Frammentazione in IPv6 In IPv4, se un router riceve un pacchetto troppo grande per il segmento di rete a cui è stato inoltrato ed è consentita la frammentazione del pacchetto, il protocollo IPv4 del router frammenta il pacchetto originale in pacchetti di dimensioni minori adeguati al segmento di rete destinatario dell'inoltro. In IPv6, il pacchetto è frammentato solo dall'host di invio: se un pacchetto IPv6 è troppo grande, il router inoltra all'host di invio un messaggio ICMPv6 Packet Too Big (dimensioni del pacchetto troppo elevate) e lo scarta. Gli host di invio possono frammentare pacchetti e gli host di destinazione possono riassemblarli tramite l'utilizzo dell'intestazione di estensione Fragment. ICMPv6 (Internet Control Message Protocol for IPv6) Analogamente al protocollo IPv4, IPv6 non riporta errori; utilizza, invece, una versione aggiornata del protocollo ICMP per IPv4. Questa nuova versione, denominata ICMPv6, esegue le comuni funzioni ICMP di segnalazione errori di recapito o inoltro per IPv4 e fornisce un servizio Echo semplificato per la risoluzione degli errori. Il protocollo ICMPv6 fornisce inoltre una struttura per messaggi ND e MLD. Nella tabella 2-5 sono elencati e descritti i messaggi ICMPv6 definiti nel documento RFC 2463. Messaggio ICMPv6 Echo Request Echo Reply Destination Unreachable Packet Too Big Time Exceeded Parameter Problem Descrizione Gli host mittenti inviano messaggi Echo Request (richiesta echo) per verificare la connettività IPv6 a un determinato nodo. I nodi inviano messaggi Echo Reply (risposta echo) in risposta a messaggi ICMPv6 Echo Request. I router e gli host di destinazione inviano messaggi Destination Unreachable (destinazione non raggiungibile) per informare gli host di invio che non è possibile recapitare i pacchetti o i payload. I router inviano messaggi Packet Too Big (dimensioni del pacchetto troppo grandi) per informare gli host di invio che le dimensioni del pacchetto eccedono la capacità di inoltro. I router inviano messaggi Time Exceeded (tempo scaduto) per informare gli host di invio che il limite di hop di un pacchetto IPv6 è scaduto. I router inviano messaggi Parameter Problem (problema col parametro) per informare gli host di invio degli errori verificatisi durante l'elaborazione dell'intestazione o di un'intestazione di estensione IPv6. Tabella 2-5 Messaggi ICMPv6 comuni Il protocollo ICMPv6 contiene una serie di messaggi di destinazione non raggiungibile, i più comuni dei quali sono elencati e illustrati nella tabella 2-6. Messaggio di destinazione non raggiungibile Descrizione I router inviano questo messaggio quando non riescono a individuare percorsi agli indirizzi di destinazione nelle proprie tabelle di instradamento IPv6 locale. I router inviano questo messaggio quando un criterio di configurazione impedisce di Communication Prohibited by comunicare con la destinazione. Questo tipo di messaggio è, ad esempio, inviato quando Administrative Policy un firewall scarta un pacchetto. Destination Address I router IPv6 inviano questo messaggio quando non sono in grado di risolvere un Unreachable indirizzo MAC di destinazione. Gli host di destinazione inviano questo messaggio quando un pacchetto IPv6 contenente Destination Port Unreachable un messaggio a una porta UDP di destinazione non corrisponde all'applicazione in ascolto. No Route Found Tabella 2-6 Comuni messaggi di destinazione non raggiungibile ICMPv6 Il protocollo ICMPv6, pur non rendendo il protocollo IPv6 affidabile, riporta gli errori e fornisce un feedback in presenza di specifiche condizioni. I messaggi ICMPv6 sono trasportati come pacchetti IPv6 non riconosciuti e sono essi stessi inaffidabili. ND (Neighbor Discovery) Il protocollo ND è un insieme di messaggi e processi ICMPv6 che determinano le relazioni tra nodi adiacenti. Il protocollo ND sostituisce gli strumenti ARP, ICMP Router Discovery e ICMP Redirect utilizzati in IPv4 e fornisce altre funzionalità. Gli host utilizzano il protocollo ND per le operazioni di seguito riportate. Individuare router adiacenti. Individuare e configurare automaticamente indirizzi e altri parametri di configurazione. I router utilizzano il protocollo ND per le operazioni di seguito riportate. Notificare la propria presenza, gli indirizzi host e altri parametri di configurazione. Informare gli host di un indirizzo di hop successivo migliore per l'inoltro di pacchetti a una determinata destinazione. I nodi, sia host che router, utilizzano il protocollo ND per le operazioni di seguito riportate. Risolvere l'indirizzo del livello di collegamento, denominato anche indirizzo MAC, di un nodo adiacente al quale è inoltrato un pacchetto IPv6. Annunciare dinamicamente le modifiche di indirizzi MAC. Determinare se un nodo adiacente è ancora raggiungibile. Nella tabella 2-7 sono elencati e descritti i processi ND definiti nel documento RFC 2461. Processo ND Rilevamento router Individuazione prefisso Autoconfigurazione indirizzi Risoluzione indirizzi Determinazione hop successivo Rilevamento irraggiungibilità di un vicino Rilevamento indirizzi duplicati Funzione di reindirizzamento Descrizione Processo tramite cui un host individua i router adiacenti. Per ulteriori informazioni, vedere la sezione "Rilevamento router" più avanti in questo capitolo. Processo tramite cui gli host individuano i prefissi di rete relativi a subnet di destinazione locali. Per ulteriori informazioni sui prefissi di rete IPv6, vedere il capitolo 3 "Indirizzi IP". Processo di configurazione di indirizzi IPv6 per interfacce, indipendentemente dalla presenza di un server di configurazione indirizzi che esegue, ad esempio, DHCPv6 (Dynamic Host Configuration Protocol versione 6). Per ulteriori informazioni, vedere la sezione "Autoconfigurazione di indirizzi" più avanti in questo capitolo. Processo tramite cui i nodi risolvono un indirizzo IPv6 di un nodo adiacente nel corrispondente indirizzo MAC. La risoluzione di indirizzi in IPv6 è equivalente al protocollo ARP in IPv4. Per ulteriori informazioni, vedere la sezione "Risoluzione di indirizzi" in questo capitolo. Processo tramite cui un nodo determina l'indirizzo IPv6 dell'hop successivo a cui inoltrare un pacchetto in base all'indirizzo di destinazione. L'indirizzo dell'hop successivo può corrispondere all'indirizzo di destinazione o all'indirizzo di un router adiacente. Processo tramite cui un nodo determina che il livello IPv6 di un vicino non è in grado di inviare o ricevere pacchetti. Processo tramite cui un nodo determina se un indirizzo non è già utilizzato da un nodo adiacente. Processo tramite cui un host viene informato della presenza di un migliore indirizzo IPv6 del primo hop per il raggiungimento di una destinazione. Tabella 2-7 Processi ND per IPv6 Risoluzione di indirizzi La risoluzione indirizzi in IPv6 è costituita dallo scambio di messaggi Neighbor Solicitation (richiesta del nodo adiacente) e Neighbor Advertisement (annuncio del nodo adiacente) per risolvere l'indirizzo IPv6 dell'hop successivo nel corrispondente indirizzo MAC. L'host mittente invia sull'interfaccia appropriata una richiesta del nodo adiacente multicast, in cui è incluso l'indirizzo MAC del nodo di invio. Alla ricezione del messaggio, il nodo di destinazione aggiorna la propria cache adiacente (equivalente alla cache ARP) con una voce relativa all'indirizzo di origine e all'indirizzo MAC inclusi nel messaggio Neighbor Solicitation. Quindi invia un annuncio del nodo adiacente unicast contenente il proprio indirizzo MAC al mittente del messaggio Neighbor Solicitation. Alla ricezione dell'annuncio del nodo adiacente dalla destinazione, l'host di invio aggiorna la propria cache adiacente con una voce per il nodo di destinazione basata sull'indirizzo MAC incluso nel messaggio. A questo punto, l'host di invio e la destinazione della richiesta del nodo adiacente sono in grado di inviare traffico IPv6 unicast. Rilevamento router Il rilevamento router è il processo attraverso cui gli host tentano di individuare l'insieme di router presenti nella subnet locale. Oltre a configurare un router predefinito, il rilevamento router in IPv6 configura anche quanto segue: L'impostazione predefinita per il campo Hop Limit nell'intestazione IPv6. Determinazione se il nodo debba utilizzare un protocollo di configurazione indirizzi, quale DHCPv6 (Dynamic Host Configuration Protocol for IPv6), per indirizzi e altri parametri di configurazione. L'elenco dei prefissi di rete definiti per il collegamento. Ciascun prefisso di rete comprende il prefisso IPv6 con i relativi cicli di vita validi e preferiti. Se indicato, l'host crea una configurazione dell'indirizzo IPv6 tramite il prefisso di rete senza utilizzare un protocollo di configurazione indirizzi. Un prefisso di rete inoltre definisce l'intervallo di indirizzi relativo ai nodi del collegamento locale. Di seguito sono riportati i processi di rilevamento router in IPv6. I router IPv6 inviano periodicamente messaggi Router Advertisement (annuncio router) multicast sulla subnet con i quali, oltre alla loro esistenza, notificano altri parametri di configurazione come prefissi di indirizzi e il limite hop predefinito. Gli host IPv6 della subnet locale si servono del contenuto degli annunci router ricevuti per configurare indirizzi, un router predefinito e altri parametri di configurazione. Un host in corso di avvio invia un messaggio Router Solicitation (richiesta router) multicast. Alla ricezione di una richiesta router, tutti i router presenti nella subnet locale inviano un annuncio router unicast all'host che ha inviato la richiesta. L'host si serve del contenuto degli annunci router ricevuti per configurare indirizzi, un router predefinito e altri parametri di configurazione. Autoconfigurazione di indirizzi Un aspetto estremamente utile di IPv6 è la capacità di autoconfigurarsi senza utilizzare un protocollo di configurazione indirizzi, come DHCPv6 (Dynamic Host Configuration Protocol for IPv6). Un host IPv6 può per impostazione predefinita configurare un indirizzo da utilizzare sulla subnet per ciascuna interfaccia. Attraverso il rilevamento router, inoltre, un host è in grado di determinare gli indirizzi dei router, ulteriori indirizzi e altri parametri di configurazione. I messaggi Router Advertisement indicano se è necessario utilizzare un protocollo di configurazione indirizzi. L'autoconfigurazione di indirizzi in IPv6 è definita nel documento RFC 2462. MLD (Multicast Listener Discovery) Il protocollo MLD per IPv6 è l'equivalente del protocollo IGMP versione 2 per IPv4. Il protocollo consiste di un insieme di messaggi ICMPv6 scambiati da router e nodi, grazie ai quali i router rilevano la serie di indirizzi multicast IPv6 per cui esistono nodi in ascolto in relazione a ciascuna interfaccia collegata. Analogamente a IGMPv2, MLD rileva solo gli indirizzi multicast comprendenti almeno un listener, e non l'elenco dei singoli listener per ciascun indirizzo multicast. IL protocollo MLD è definito nel documento RFC 2710. Diversamente da IGMPv2, MLD utilizza messaggi ICMPv6 invece di definire una propria struttura di messaggi. Esistono tre tipi di messaggi MLD: Multicast Listener Query: utilizzati da router per interrogare una subnet sui listener multicast. Multicast Listener Report: utilizzati da listener multicast per esprimere disponibilità a ricevere il traffico per un determinato indirizzo multicast oppure per rispondere a un messaggio Multicast Listener Query. Multicast Listener Done: utilizzati da listener multicast per avvisare che potrebbero essere l'ultimo membro di un gruppo multicast sulla subnet. TCP (Transmission Control Protocol) Il protocollo TCP è un servizio di recapito affidabile e orientato alla connessione, nel senso che prima che gli host possano scambiare dati è necessario stabilire una connessione. L'affidabilità è ottenuta assegnando un numero di sequenza a ciascun segmento trasmesso. I peer TCP, vale a dire i due nodi che comunicano mediante il protocollo TCP, riconoscono la ricezione dei dati. Un segmento TCP è un'unità dati protocollo (PDU, Protocol Data Unit) costituita dall'intestazione e dal payload TCP, denominati anche segmento. Per ogni segmento contenente dati inviato, è necessario che l'host di ricezione restituisca un riconoscimento (ACK). Se un ACK non è riconosciuto entro un tempo calcolato, il segmento TCP viene ritrasmesso. Il protocollo TCP è definito nel documento RFC 793. Nella tabella 2-8 sono elencati e illustrati i campi chiave dell'intestazione TCP. Campo Source Port Destination Port Sequence Number Acknowledgment Number Window Checksum Descrizione Porta TCP dell'applicazione mittente. Porta TCP dell'applicazione destinataria. Numero di sequenza del primo byte di dati presente nel segmento TCP. Numero di sequenza del byte successivo che il mittente si aspetta di ricevere dal proprio peer TCP. Dimensione corrente di un buffer di memoria sull'host mittente del segmento TCP per archiviare i segmenti in entrata. Semplice calcolo matematico utilizzato per controllare errori a livello di bit nel segmento TCP. Tabella 2-8 Campi chiave in un'intestazione TCP Porte TCP Per utilizzare il protocollo TCP, un'applicazione deve fornire l'indirizzo IP e il numero di porta TCP delle applicazioni di origine e di destinazione. Una porta fornisce un percorso per l'invio di segmenti, ed è identificata da un numero univoco. Le porte TCP sono distinte dalle porte UDP sebbene alcune possano utilizzare lo stesso numero. I numeri di porta inferiori a 1024 sono porte note di assegnazione IANA (Internet Assigned Numbers Authority). Nella tabella 2-9 sono elencate alcune porte note TCP. Numero porta TCP 20 21 23 80 139 Descrizione FTP (canale dati) FTP (canale di controllo) Telnet HTTP utilizzato per il Web Servizio per le sessioni NetBIOS Tabella 2-9 Porte TCP note Per un elenco completo di porte TCP assegnate, vedere http://www.iana.org/assignments/port-numbers (informazioni in lingua inglese). Handshake a tre stadi TCP Una connessione TCP viene inizializzata tramite un handshake a tre stadi, il cui scopo è sincronizzare il numero di sequenza e i numeri di riconoscimento di entrambe le parti di una connessione e di scambiare le rispettive dimensioni della finestra TCP. Di seguito sono illustrati i passaggi con i quali un computer client contatta un computer server. 1. 2. 3. Il client invia un segmento TCP al server contenente un numero di sequenza iniziale per la connessione e una dimensione finestra del buffer per archiviare i segmenti in entrata dal server. Il server restituisce un segmento TCP contenente il numero di sequenza iniziale scelto, un riconoscimento del numero di sequenza del client e una dimensione finestra, che indica la dimensione del buffer sul server per archiviare i segmenti in ingresso dal client. Il client invia un segmento TCP al server contenente un riconoscimento del numero di sequenza dello stesso. Il protocollo TCP si serve di un processo handshake analogo per terminare una connessione. Ciò garantisce che entrambi gli host abbiano completato la trasmissione e che tutti i dati siano stati ricevuti. UDP (User Datagram Protocol) Il protocollo UDP fornisce un servizio per datagrammi non orientato alla connessione che assicura un recapito inaffidabile, di tipo massimo sforzo (best-effort), dei dati trasmessi in messaggi. Ciò significa che non sono garantiti né l'arrivo dei datagrammi né la corretta sequenza dei pacchetti recapitati. Il protocollo UDP non ritrasmette i dati persi. I messaggi UDP, costituiti da un'intestazione e un payload, sono noti anche semplicemente come messaggi. IL protocollo UDP è definito nel documento RFC 768. Le applicazioni utilizzano il protocollo UDP quando non necessitano di un riconoscimento di ricezione dei dati e di norma trasmettono piccoli volumi di dati in una sola volta. Esempi di servizi e applicazioni che utilizzano l'UDP sono il servizio per la risoluzione dei nomi NetBIOS, il servizio per i datagrammi NetBIOS e SNMP. Nella tabella 2-10 sono elencati e illustrati i campi chiave dell'intestazione UDP. Campo Descrizione Source Port Porta UDP dell'applicazione mittente. Destination Port Porta UDP dell'applicazione destinataria. Checksum Semplice calcolo matematico utilizzato per controllare errori a livello di bit nel messaggio UDP. Tabella 2-10 Campi chiave in un'intestazione UDP Porte UDP Per utilizzare il protocollo UDP, un'applicazione deve fornire l'indirizzo IP e il numero di porta UDP delle applicazioni di origine e di destinazione. Una porta fornisce un percorso per inviare messaggi, ed è identificata da un numero univoco. Le porte UDP sono distinte dalle porte TCP sebbene alcune possano utilizzare lo stesso numero. Analogamente alle porte TCP, i numeri delle porte UDP inferiori a 1024 sono porte note assegnate da IANA. Nella tabella 2-11 sono elencate alcune porte note UDP. Numero porta UDP 53 69 137 138 161 Descrizione Query per nomi DNS (Domain Name System) TFTP (Trivial File Transfer Protocol) Servizio per la risoluzione dei nomi NetBIOS Servizio per i datagrammi NetBIOS SNMP Tabella 2-11 Porte UDP note Per un elenco completo di porte UDP assegnate, vedere http://www.iana.org/assignments/port-numbers (informazioni in lingua inglese). Multiplexing e demultiplexing di pacchetti Al momento dell'invio, un host mittente include in un pacchetto IPv4 o IPv6 informazioni per recapitare i dati in esso contenuti all'applicazione di destinazione corretta. Si definisce multiplexing l'inclusione di identificatori che consentono di recapitare i dati a una delle entità presenti in ciascun livello di un'architettura a più livelli. Le informazioni multiplexing relative a pacchetti IP identificano il nodo della rete, il protocollo di livello superiore IP e, per i protocolli TCP e UDP, la porta corrispondente all'applicazione a cui sono indirizzati i dati. L'host di destinazione utilizza tali identificatori per eseguire il demultiplexing, o recapito dei dati per singolo livello, all'applicazione di destinazione corretta. Il pacchetto IP inoltre comprende informazioni per consentire all'host di destinazione di inviare una risposta. Le informazioni multiplexing del protocollo IP consentono di eseguire le seguenti operazioni. Identificare il nodo di invio (il campo Source IP Address nell'intestazione IPv4 o Source Address nell'intestazione IPv6). Identificare il nodo di destinazione (il campo Destination IP Address nell'intestazione IPv4 o Destination Address nell'intestazione IPv6). Identificare il protocollo di livello superiore al livello Internet IPv4 o IPv6 (il campo Protocol nell'intestazione iPv4 o Next Header nell'intestazione iPv6). In caso di segmenti TCP e messaggi UDP, identificare l'applicazione mittente dei messaggi (il campo Source Port nell'intestazione TCP o UDP). In caso di segmenti TCP e messaggi UDP, identificare l'applicazione destinataria dei messaggi (il campo Destination Port nell'intestazione TCP o UDP). Le porte TCP e UDP possono utilizzare tutti i numeri compresi tra 0 e 65.535. I numeri di porta relativi ad applicazioni client sono di norma assegnati dinamicamente al momento della richiesta del servizio; IANA preassegna numeri di porta per applicazioni note sul lato server. Per un elenco completo dei numeri di porta preassegnati, vedere http://www.iana.org/assignments/port-numbers (informazioni in lingua inglese). Tutti questi dati consentono di fornire informazioni multiplexing per le operazioni di seguito riportate. Il pacchetto può essere inoltrato alla destinazione corretta. La destinazione può utilizzare il payload del pacchetto per recapitare i dati all'applicazione corretta. L'applicazione di ricezione può inviare una risposta. Durante l'invio di un pacchetto, le informazioni sono utilizzate nei modi di seguito riportati. I router che inoltrano pacchetti IPv4 o IPv6 utilizzano il campo Destination IP Address, in caso di intestazione IPv4, o Destination Address, in caso di intestazione IPv6, per recapitare il pacchetto al nodo di rete corretto. Il nodo di destinazione utilizza il campo Protocol, in caso di intestazione IPv4, o Next Header, in caso di intestazione IPv6, per recapitare il payload del pacchetto al protocollo corretto di livello superiore. In caso di segmenti TCP o messaggi UDP, il nodo di destinazione utilizza il campo Destination Port dell'intestazione per eseguire il demultiplexing dei dati interni al segmento TCP o al messaggio UDP all'applicazione corretta. Nella figura 2-5 è mostrato un esempio di messaggio DNS Name Query Request (richiesta query nome DNS) di un pacchetto IPv4 con demultiplexing di un indirizzo di destinazione IP, 131.107.89.223, al servizio DNS. Figura 2-5 Esempio di demultiplexing di un pacchetto IPv4 API (Application Programming Interface) Le applicazioni di rete Windows accedono ai servizi TCP/IP in Windows mediante due API (Application Programming Interface) principali: Windows Sockets e NetBIOS. Nella figura 2-6 sono mostrate queste API e i possibili flussi di dati da esse generato. Figura 2-6 Architettura delle API Windows Sockets e NetBIOS Di seguito sono illustrate alcune differenze a livello di architettura delle API Windows Sockets e NetBIOS. L'interfaccia NetBIOS over TCP/IP (NetBT) è definita per operazioni su IPv4. Windows Sockets opera sia su IPv4 che su IPv6. Le applicazioni Windows Sockets sono in grado di operare direttamente sui livelli Internet IPv4 o IPv6 senza l'utilizzo di TCP o UDP. NetBIOS opera soltanto su TCP e UDP. Windows Sockets Windows Sockets è un'API moderna, di norma utilizzata per applicazioni di rete in Windows. I servizi e gli strumenti TCP/IP forniti con Windows sono esempi di applicazioni Windows Sockets. I servizi forniti da Windows Sockets consentono alle applicazioni di utilizzare un indirizzo e una porta IP specifici, di inizializzare e accettare una connessione a un indirizzo e una porta IP di destinazione specifici, di inviare e ricevere dati, di chiudere una connessione. Esistono tre tipi di socket: Un socket di flusso che fornisce tramite TCP un flusso di dati bidirezionale, affidabile, in sequenza e non duplicato. Un socket di datagramma che fornisce un flusso di dati bidirezionale tramite UDP. Un socket di tipo raw che consente ai protocolli di accedere direttamente al protocollo IP senza utilizzare TCP o UDP. Un socket funge da endpoint della comunicazione di rete. Un'applicazione crea un socket di flusso o datagramma attraverso la specificazione di tre elementi: indirizzo IP dell'host; tipo di servizio (TCP per servizio basato sulla connessione e UDP per servizio non orientato alla connessione); porta in corso di utilizzo da parte dell'applicazione. Due socket, uno per ciascuna estremità della connessione, formano un percorso di comunicazioni bidirezionale. Per i socket di tipo raw, l'applicazione deve specificare il payload IP completo. NetBIOS NetBIOS è un'API precedente a Windows Sockets che fornisce servizi per gestione nomi, datagrammi e sessioni in applicazioni NetBIOS. Un programma applicativo che utilizza come API per la comunicazione di rete NetBIOS può essere eseguito su tutte le implementazioni di protocollo che supportano l'interfaccia NetBIOS. Esempi di servizi e applicazioni Windows che utilizzano NetBIOS sono la condivisione di file e stampanti e il servizio Browser di computer. NetBIOS definisce inoltre un protocollo che funziona al livello Sessione del modello OSI. Questo livello è implementato dal protocollo sottostante, ad esempio NetBT (NetBIOS over TCP/IP), definito nei documenti RFC 1001 e 1002. Il servizio nomi NetBIOS utilizza la porta UDP 137. Il servizio datagrammi NetBIOS utilizza la porta 138. Il servizio sessioni NetBIOS utilizza la porta TCP 139. Schemi di denominazione TCP/IP in Windows Sebbene il protocollo IP sia stato progettato per operare con indirizzi di host di invio e di destinazione a 32 bit (IPv4) e 128 bit (IPv6), gli utenti riescono a utilizzare e ricordare più facilmente i nomi che non gli indirizzi IP. Perché un nome possa essere utilizzato come alias di un indirizzo IP, sono necessari meccanismi che consentano di assegnare nomi agli indirizzi, garantire l'univocità degli stessi e risolverli nei corrispondenti indirizzi IP. I componenti TCP/IP di Windows assegnano e risolvono i nomi host delle applicazioni Windows Sockets e i nomi NetBIOS delle applicazioni NetBIOS utilizzando meccanismi distinti. Nomi host Un nome host è un alias assegnato a un nodo IP per identificarlo come host TCP/IP. Il nome host può avere una dimensione massima di 255 caratteri e contenere caratteri alfabetici o numerici, nonché "-" e ".". È possibile assegnare allo stesso host più nomi. Le applicazioni Windows Sockets, come Internet Explorer e lo strumento Ping, possono fare riferimento alla destinazione utilizzando l'indirizzo IP o un nome host. Quando viene specificato un indirizzo IP non è necessario risolvere il nome. Se si specifica un nome host, prima che possa essere avviata una comunicazione IP con la risorsa di destinazione, il nome host deve essere risolto in un indirizzo IP. I nomi host possono assumere diversi formati: i più comuni dei quali sono uno pseudonimo e un nome di dominio completo (FQDN). Uno pseudonimo è un alias a un indirizzo IP assegnato e utilizzato da un individuo. Un FQDN è un nome strutturato, ad esempio www.microsoft.com, che segue le convenzioni Internet utilizzate in DNS. Nomi NetBIOS Un nome NetBIOS è un nome a 16 byte che identifica un'applicazione NetBIOS nella rete. Il nome può essere univoco (esclusivo) o di gruppo (non esclusivo). Quando un'applicazione NetBIOS comunica con un'altra specifica applicazione su un computer specifico, viene utilizzato un nome univoco. Quando un processo NetBIOS comunica con più applicazioni NetBIOS su più computer, viene utilizzato un nome di gruppo. Il nome NetBIOS identifica applicazioni al livello Sessione del modello OSI. Ad esempio, il servizio sessioni NetBIOS opera sulla porta TCP 139. Poiché tutte le richieste di sessione sono indirizzate alla porta di destinazione TCP 139, un'applicazione NetBIOS deve utilizzare il nome NetBIOS di destinazione al momento dello stabilimento di una sessione. Il servizio server di condivisione di file e stampanti su un computer Windows è un esempio di processo che utilizza un nome NetBIOS. All'avvio del computer, il servizio server registra un nome NetBIOS univoco basato sul nome del computer. Il nome esatto utilizzato dal servizio server è il nome del computer di 15 caratteri più un sedicesimo carattere di 0x20. Per nomi di computer inferiori a 15 caratteri vengono inseriti degli spazi fino al raggiungimento di 15 caratteri. Anche altri servizi di rete creano il proprio nome NetBIOS utilizzando il nome del computer e il sedicesimo carattere serve di norma ad identificare ciascun servizio. Quando si cerca di effettuare una connessione di condivisione file per un computer sul quale è in esecuzione Windows Server 2003 o Windows XP tramite nome, il servizio Server nel file server specificato corrisponde a uno specifico nome NetBIOS. Ad esempio, quando si tenta di connettersi a un computer denominato CORPSERVER, il nome NetBIOS corrispondente al servizio Server sarà CORPSERVER <20>. Si noti l'utilizzo degli spazi per completare il nome del computer. Prima che sia possibile stabilire una connessione di condivisione file e stampanti, è necessario creare una connessione TCP. Per poter creare una connessione TCP, sarà necessario risolvere il nome NetBIOS CORPSERVER <20> in un indirizzo IPv4. La risoluzione dei nomi NetBIOS è il processo di mapping di un nome NetBIOS a un indirizzo IPv4. Riepilogo del capitolo Di seguito sono riportate le informazioni chiave del presente capitolo. La suite di protocolli TCP/IP corrisponde ai quattro livelli del modello DARPA: Applicazione, Trasporto, Internet e Interfaccia di rete. I protocolli del livello Internet IPv4 sono ARP, IP (IPv4), ICMP e IGMP. I protocolli del livello Internet IPv6 sono IPv6, ICMPv6, ND e MLD. I protocolli del livello Trasporto comprendono TCP e UDP. Il protocollo TCP è un servizio di recapito affidabile e orientato alla connessione. Il protocollo UDP fornisce un servizio per datagrammi non orientato alla connessione che assicura un recapito inaffidabile, di tipo massimo sforzo (best-effort), dei dati trasmessi in messaggi. Il multiplexing e il demultiplexing di pacchetti IP effettuato tra le applicazioni si basa sui campi presenti nelle intestazioni IPv4, IPv6, TCP e UDP. I componenti TCP/IP supportano per le applicazioni di rete in Windows due API principali: Windows Sockets e NetBIOS. Windows Sockets è un'API recente che consente alle applicazioni di gestire socket di flusso, datagramma e di tipo raw. NetBIOS è un'API precedente che consente alle applicazioni di gestire nomi NetBIOS, datagrammi e sessioni. I componenti TCP/IP supportano per le applicazioni di rete in Windows due schemi di denominazione: nomi host (utilizzati da applicazioni Windows Sockets) e nomi NetBIOS (utilizzati da applicazioni NetBIOS). Glossario del capitolo autoconfigurazione indirizzi - Processo ND di configurazione automatica di indirizzi IPv6 su un'interfaccia. risoluzione indirizzi - Processo IPv4 (tramite ARP) o IPv6 (tramite ND) che risolve l'indirizzo MAC relativo a un indirizzo IP di hop successivo. Address Resolution Protocol (ARP) - Protocollo che risolve un indirizzo IPv4 nel corrispondente indirizzo MAC mediante traffico broadcast sulla rete locale. ARP - Vedere Address Resolution Protocol. cache ARP - Tabella relativa a ciascuna interfaccia di indirizzi IPv4 risolti in modo statico o dinamico con i corrispondenti indirizzi MAC. ICMP - Vedere Internet Control Message Protocol. ICMPv6 - Vedere Internet Control Message Protocol for IPv6. IGMP - Vedere Internet Group Management Protocol. Internet Control Message Protocol (ICMP) - Protocollo del livello Internet IPv4 che riporta errori e fornisce strumenti per la risoluzione di problemi. Internet Control Message Protocol for IPv6 (ICMPv6) - Protocollo del livello Internet IPv6 che riporta errori, fornisce strumenti per la risoluzione di problemi e ospita messaggi ND e MLD. Internet Group Management Protocol (IGMP) - Protocollo del livello Internet IPv4 che gestisce l'appartenenza a gruppi multicast in una subnet. Internet Protocol (IP) - Per IPv4, protocollo instradabile del livello Internet IPv4 che indirizza, instrada, suddivide in frammenti e riassembla pacchetti. Utilizzato anche per indicare entrambi gli insiemi di protocolli IPv4 e IPv6. IP - Vedere Internet Protocol. IPv4 - Livello Internet ampiamente utilizzato in Internet e nelle reti Intranet private. Sinonimo di IP. IPv6 - Nuovo livello Internet che in futuro sostituirà il livello Internet IPv4. MLD - Vedere Multicast Listener Discovery. Multicast Listener Discovery (MLD) - Insieme di tre messaggi ICMPv6 utilizzati da router e host per gestire l'appartenenza a gruppi multicast in una subnet. risoluzione nomi - Processo di risoluzione di un nome in un indirizzo. ND - Vedere Neighbor Discovery. cache adiacente - Cache mantenuta da ogni nodo IPv6 in cui vengono archiviati l'indirizzo IPv6 di un vicino e il corrispondente indirizzo MAC. La cache adiacente equivale alla cache ARP in IPv4. Neighbor Discovery (ND) - Insieme di messaggi e processi ICMPv6 che determinano le relazioni tra nodi adiacenti. Neighbor Discovery sostituisce i messaggi ARP, ICMP Router Discovery e ICMP Redirect utilizzati in IPv4. Network Basic Input/Output System (NetBIOS) - API standard attraverso cui le applicazioni utente sono in grado di gestire nomi NetBIOS e accedere a servizi per sessioni e datagrammi NetBIOS. NetBIOS - Vedere Network Basic Input/Output System. rilevamento router - Processo Neighbor Discovery durante il quale un host individua i router locali della subnet collegata. TCP - Vedere Transmission Control Protocol. Transmission Control Protocol (TCP) - Protocollo di livello Trasporto affidabile e orientato alla connessione che viene eseguito al livello più alto del protocollo IP. UDP - Vedere User Datagram Protocol. User Datagram Protocol (UDP) - Protocollo di livello Trasporto inaffidabile e non orientato alla connessione, che viene eseguito al livello più alto del protocollo IP. Windows Sockets - API utilizzata di norma da applicazioni Windows per trasferire dati tramite il protocollo TCP/IP.