Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 è questa: 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 link-local per l'indirizzo di tutti i nodi (FF02::1) equivale alla trasmissione agli indirizzi broadcast IPv4 usando l'opzione socket SO_BROADCAST. Questo indirizzo viene talvolta chiamato gruppo multicast di tutti i nodi. 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 nell'indirizzo del gruppo multicast all-nodes non vengono ricevuti per impostazione predefinita (le trasmissioni IPv4 vengono ricevute per impostazione predefinita). I programmatori delle applicazioni devono usare l'opzione socket IPV6_ADD_MEMBERSHIP per abilitare la ricezione multicast da qualsiasi origine, incluso l'indirizzo di gruppo multicast per 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. La scoperta del listener multicast (MLD) su IPv6 e la versione 3 del protocollo di gestione del gruppo Internet (IGMPv3) su 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 utilizzano il multicast: quelli che effettuano il porting da applicazioni broadcast (o multicast) IPv4 a IPv6 e quelli che creano nuove applicazioni multicast IPv6.
Per la conversione di 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 blocco o sblocco di un mittente, aggiunta di una nuova origine e così via). Questo approccio è più intuitivo e l'approccio consigliato. Per ulteriori informazioni sull'approccio alla programmazione multicast basato su modifiche, vedi MLD e IGMP utilizzando Windows Sockets.
- L'uso di IOCTLs è un approccio basato sullo stato finale, perché consente agli sviluppatori di fornire uno stato socket completamente configurato, inclusi elenchi di inclusione ed esclusione, con una sola chiamata. Per ulteriori informazioni sull'approccio basato sullo stato finale, vedere Final-State-Based Multicast Programming.
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 ciò comporta l'uso della funzioneWSAJoinLeaf. Sebbene l'uso della funzione WSAJoinLeaf non sia la procedura consigliata, esistono situazioni che ne determinano 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 e 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ù appropriata in determinate situazioni in cui è necessario l'agnosticismo del protocollo e della versione IP.