MLD e IGMP usando Windows Sockets

Windows Sockets abilita l'individuazione del listener multicast (MLD) in IPv6 e il protocollo IGMP (Internet Group Management Protocol) in IPv4 per le applicazioni multicast tramite l'uso di opzioni socket e IOCTLs. Questa pagina descrive le opzioni del socket che abilitano la programmazione multicast e descrive come vengono usati. Per le definizioni di ogni opzione socket, vedere la pagina Opzioni socket .

Per informazioni sull'uso di IOCTLs per la programmazione multicast, vedere Programmazione multicast basata su stato finale più avanti in questa sezione.

In Windows Vista e versioni successive sono disponibili un set di opzioni socket per la programmazione multicast che supporta gli indirizzi IPv6 e IPv4. Queste opzioni di socket sono agnostiche e possono essere usate sia in IPv6 che in IPv4. In IPv6 queste opzioni socket usano MLDv2. In IPv4 queste opzioni socket usano IGMPv3. Queste opzioni ip agnostiche sono le opzioni di socket preferite per la programmazione multicast in Windows Vista e versioni successive. Windows Sockets usa le opzioni di socket seguenti:

Opzione Socket Tipo di argomento
MCAST_BLOCK_SOURCE struttura GROUP_SOURCE_REQ
MCAST_JOIN_GROUP GROUP_REQ struttura
MCAST_JOIN_SOURCE_GROUP struttura GROUP_SOURCE_REQ
MCAST_LEAVE_GROUP GROUP_REQ struttura
MCAST_LEAVE_SOURCE_GROUP struttura GROUP_SOURCE_REQ
MCAST_UNBLOCK_SOURCE struttura GROUP_SOURCE_REQ

 

Un set di opzioni socket è disponibile per la programmazione multicast che supporta solo indirizzi IPv6. Queste opzioni socket usano MLDv1 o MLDv2. La versione di MLD usata dipende dalla versione di Windows. MLDv2 è supportato in Windows Vista e versioni successive. Windows Sockets usa le opzioni di socket seguenti:

Opzione Socket Tipo di argomento
IPV6_ADD_MEMBERSHIP ipv6_mreq struttura
IPV6_DROP_MEMBERSHIP ipv6_mreq struttura

 

Un set di opzioni socket è disponibile per la programmazione multicast che supporta solo indirizzi IPv4. Queste opzioni socket usano IGMPv3 o IGMPv2. La versione di IGMP usata dipende dalla versione di Windows. IGMPv3 è supportato in Windows Vista e versioni successive. Windows Sockets usa le opzioni di socket seguenti:

Opzione Socket Tipo di argomento
IP_ADD_MEMBERSHIP ip_mreq struttura
IP_ADD_SOURCE_MEMBERSHIP ip_mreq_source struttura
IP_BLOCK_SOURCE ip_mreq_source struttura
IP_DROP_MEMBERSHIP ip_mreq struttura
IP_DROP_SOURCE_MEMBERSHIP ip_mreq_source struttura
IP_UNBLOCK_SOURCE ip_mreq_source struttura

 

Quando è disponibile IGMPv3, le opzioni di IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP e IP_UNBLOCK_SOURCE vengono gestite in modo più efficiente poiché il router può gestire il filtro. Quando è disponibile solo IGMPv2, l'host deve gestire il filtro.

Esistono due categorie in cui la maggior parte delle applicazioni è probabilmente destinata a cadere: qualsiasi origine e origine controllata.

  • Le applicazioni di origine accettano tutte le origini per impostazione predefinita, consentendo la disattivazione di singole origini in base alle esigenze. Un esempio di applicazione qualsiasi origine è una video conferenza telefonica che consente a tutti i destinatari di partecipare.
  • Le applicazioni di origine controllata limitano le origini a un determinato elenco, ad esempio una stazione radio Internet o la trasmissione di un evento notevole. Il processo di uso delle opzioni socket è leggermente diverso per ogni.

In Windows Vista e versioni successive si applicano i passaggi seguenti per le applicazioni di origine:

  • Usare MCAST_JOIN_GROUP per partecipare a un gruppo.
  • Usare MCAST_BLOCK_SOURCE per disattivare un'origine specifica, se necessario.
  • Usare MCAST_UNBLOCK_SOURCE per consentire nuovamente un'origine bloccata, se necessario.
  • Usare MCAST_LEAVE_GROUP per lasciare il gruppo.

In Windows Vista e versioni successive, i passaggi seguenti si applicano alle applicazioni di origine controllata:

  • Usare MCAST_JOIN_SOURCE_GROUP per partecipare a ogni coppia di gruppi/origine.
  • Usare MCAST_LEAVE_SOURCE_GROUP per lasciare ogni gruppo/origine o usare MCAST_LEAVE_GROUP per lasciare tutte le origini, se lo stesso indirizzo di gruppo viene usato da tutte le origini.

I passaggi seguenti si applicano per le applicazioni di origine:

  • Usare IP_ADD_MEMBERSHIP per aggiungere un gruppo (IPV6_ADD_MEMBERSHIP per IPv6).
  • Usare IP_BLOCK_SOURCE per disattivare un'origine specifica, se necessario.
  • Usare IP_UNBLOCK_SOURCE per consentire nuovamente un'origine bloccata, se necessario.
  • Usare IP_DROP_MEMBERSHIP per lasciare il gruppo (IPV6_DROP_MEMBERSHIP per IPv6).

I passaggi seguenti si applicano per le applicazioni di origine controllata:

  • Usare IP_ADD_SOURCE_MEMBERSHIP per aggiungere ogni coppia di gruppi/origine.
  • Usare IP_DROP_SOURCE_MEMBERSHIP per lasciare ogni gruppo/origine o usare IP_DROP_MEMBERSHIP per lasciare tutte le origini, se lo stesso indirizzo di gruppo viene usato da tutte le origini.

L'ordine in cui sono impostate queste opzioni socket ha regole associate. Per informazioni sulla risoluzione dei problemi sulle opzioni del socket multicast, vedere Comportamento dell'opzione Socket multicast.