Conversione di applicazioni broadcast in IPv6
Questa sezione descrive le procedure consigliate per la conversione di un'applicazione di trasmissione IPv6 alle funzionalità multicast disponibili con Windows Sockets.
Confronto tra IPv4 e IPv6
La considerazione più importante quando si prepara a convertire un'applicazione di trasmissione IPv4 in IPv6 è questo: IPv6 non ha alcun concetto implementato di trasmissione. IPv6 usa invece il multicast.
Il multicast per IPv6 può emulare le funzionalità di trasmissione tradizionali disponibili in IPv4. L'impostazione dell'opzione socket IPV6_ADD_MEMBERSHIP con l'indirizzo IPv6 impostato sull'ambito locale del collegamento tutti gli indirizzi di nodi (FF02::1) equivale alla trasmissione negli indirizzi di trasmissione IPv4 usando l'opzione socket SO_BROADCAST . Questo indirizzo viene talvolta chiamato gruppo multicast all-nodes. Per le applicazioni che vogliono semplicemente l'emulazione broadcast per IPv6, questo approccio è equivalente a livello operativo. Una differenza notevole con IPv6, tuttavia, è che i multicast sull'indirizzo del gruppo multicast tutti i nodi non vengono ricevuti per impostazione predefinita (le trasmissioni IPv4 vengono ricevute per impostazione predefinita). I programmatori di applicazioni devono usare l'opzione socket IPV6_ADD_MEMBERSHIP per abilitare la ricezione multicast da qualsiasi origine, incluso l'indirizzo multicast di tutti i nodi.
Nota
In IPv6, la selezione dell'interfaccia viene specificata nella struttura dell'argomento passata all'opzione socket multicast o IOCTL.
Tuttavia, per trasmissioni più avanzate, più robuste, più selettive e gestibili in più host, gli sviluppatori di applicazioni devono prendere in considerazione il passaggio a un modello multicast.
Passaggio a Multicast
Con il multicast, i programmatori di applicazioni possono scegliere in modo selettivo una determinata coppia di origine/gruppo, abilitando un modello di ricezione selettiva. L'individuazione del listener multicast (MLD) in IPv6 e la versione 3 del protocollo IGMPv3 (Internet Group Management Protocol) in IPv4 supportano la programmazione multicast. Inoltre, il multicast consente alle applicazioni di bloccare (o sbloccare) in modo specifico i mittenti all'interno di un gruppo, proteggendo ulteriormente le applicazioni da emittenti non autorizzate. Questa funzionalità è disponibile per IPv4 (richiede IGMPv3) e IPv6 (richiede MLDv2).
Esistono due scenari principali per i programmatori di applicazioni che usano il multicast: le porte dalle applicazioni broadcast (o multicast) IPv4 a IPv6 e quelle che creano nuove applicazioni multicast IPv6.
Per convertire le applicazioni esistenti, sono disponibili due opzioni per passare al multicast IPv6: l'uso delle opzioni socket e l'uso di IOCTLs.
- L'uso delle opzioni socket è un approccio basato su modifiche, che consente agli sviluppatori di modificare le proprietà del socket in base alle esigenze, ad esempio bloccando o sbloccando un mittente, aggiungendo una nuova origine e così via. Questo approccio è più intuitivo e l'approccio consigliato. Per altre informazioni sull'approccio basato sulle modifiche alla programmazione multicast, vedere MLD e IGMP using Windows Sockets.For more information on the change-based approach to multicast programming, see MLD and IGMP Using Windows Sockets.
- L'uso di IOCTLs è un approccio basato sullo stato finale, perché consente agli sviluppatori di fornire uno stato socket completamente configurato, inclusi gli elenchi di inclusione ed esclusione, con una sola chiamata. Per altre informazioni sull'approccio basato sullo stato finale, vedere Programmazione multicast basata sullo stato finale.
Per coloro che creano nuove applicazioni multicast IPv6, la procedura consigliata consiste nell'usare le opzioni socket anziché usare IOCTLs.
Esiste un altro approccio alla creazione di applicazioni multicast con IPv6 e comporta l'uso della funzione WSAJoinLeaf . Anche se l'uso della funzione WSAJoinLeaf non è la procedura consigliata, esistono situazioni che possono dettarne l'uso. Ad esempio, uno svantaggio dell'uso delle opzioni socket in Windows Server 2003 e versioni precedenti è che sono specifiche della versione IP. In queste versioni precedenti di Windows, le diverse opzioni socket devono essere per IPv6 e IPv4. In Windows Vista e versioni successive sono supportate nuove opzioni socket che possono essere usate sia con IPv4 che con IPv6. La funzione WSAJoinLeaf , al contrario, è indipendente dalla versione IP e dal protocollo, pertanto può essere un approccio utile per la creazione di un'applicazione che deve funzionare con più versioni IP in Windows Server 2003 e versioni precedenti. L'uso della funzione WSAJoinLeaf può essere più appropriato in determinate situazioni in cui è necessario l'agnosticismo del protocollo e della versione IP.