Sdílet prostřednictvím


MLD a IGMP pomocí rozhraní Windows Sockets

Rozhraní Windows Sockets umožňuje detekci posluchače pro vícesměrové vysílání (MLD) na IPv6 a protokol Internet Group Management Protocol (IGMP) na IPv4 pro aplikace vícesměrového vysílání prostřednictvím možností soketů a IOCTL příkazů. Tato stránka popisuje možnosti soketů, které umožňují programování vícesměrového vysílání, a popisuje, jak se používají. Definice jednotlivých soketů najdete na stránce Možnosti soketu.

Informace o použití IOCTLs pro programování vícesměrového vysílání najdete v části Final -State-Based Programování vícesměrového vysílání dále v této sekci.

V systému Windows Vista a novějších je k dispozici sada možností soketů pro programování vícesměrového vysílání, které podporují adresy IPv6 a IPv4. Tyto možnosti soketů jsou nezávislé na protokolu IP a lze je použít na IPv6 i IPv4. U protokolu IPv6 tyto možnosti soketu používají MLDv2. U protokolu IPv4 tyto možnosti soketu používají protokol IGMPv3. Tyto možnosti nezávislé na protokolu IP jsou upřednostňované možnosti soketu pro programování vícesměrového vysílání v systému Windows Vista a novější. Windows Sockets používá následující možnosti soketu:

Možnost soketu Typ argumentu
MCAST_BLOCK_SOURCE struktura „GROUP_SOURCE_REQ“
MCAST_JOIN_GROUP struktura GROUP_REQ
MCAST_JOIN_SOURCE_GROUP struktura GROUP_SOURCE_REQ
MCAST_LEAVE_GROUP struktura GROUP_REQ
MCAST_LEAVE_SOURCE_GROUP (opustit skupinu zdroje) struktura GROUP_SOURCE_REQ
MCAST_UNBLOCK_SOURCE struktura GROUP_SOURCE_REQ

 

Sada možností soketů je k dispozici pro programování vícesměrového vysílání, které podporují pouze adresy IPv6. Tyto možnosti soketů používají MLDv1 nebo MLDv2. Použitá verze MLD závisí na verzi Windows. MLDv2 je podporován v systému Windows Vista a novějších verzích. Windows Sockets používá následující možnosti soketu:

Možnost soketu Typ argumentu
IPV6_ADD_MEMBERSHIP struktura ipv6_mreq
Opustit členství v IPV6 struktura ipv6_mreq

 

Sada možností soketů je k dispozici pro programování vícesměrového vysílání, které podporují pouze adresy IPv4. Tyto možnosti soketu používají PROTOKOL IGMPv3 nebo IGMPv2. Použitá verze PROTOKOLU IGMP závisí na verzi Windows. Protokol IGMPv3 je podporován v systému Windows Vista a novějších verzích. Windows Sockets používá následující možnosti soketu:

Možnost soketu Typ argumentu
IP_ADD_MEMBERSHIP struktura ip_mreq
IP_ADD_SOURCE_MEMBERSHIP struktura ip_mreq_source
zdroj blokování IP struktura ip_mreq_source
IP_DROP_MEMBERSHIP struktura ip_mreq
IP_DROP_SOURCE_MEMBERSHIP struktura ip_mreq_source
IP_ODBLOKOVAT_ZDROJ struktura ip_mreq_source

 

Pokud je k dispozici protokol IGMPv3, IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP a možnosti IP_UNBLOCK_SOURCE se zpracovávají efektivněji, protože směrovač dokáže zpracovat filtrování. Pokud je k dispozici pouze PROTOKOL IGMPv2, musí hostitel zpracovat filtrování.

Většina aplikací pravděpodobně spadá do dvou kategorií: libovolný zdroj a řízený zdroj.

  • Aplikace typu „jakýkoli zdroj“ ve výchozím nastavení přijímají všechny zdroje, což umožňuje vypnutí jednotlivých zdrojů podle potřeby. Příkladem libovolné zdrojové aplikace je videokonferenční hovor, který umožňuje všem příjemcům účastnit se.
  • aplikace kontrolovaných zdrojů omezují zdroje na daný seznam, jako je například internetová rádiová stanice nebo vysílání významné události. Postup použití možností soketů se pro každou z nich mírně liší.

V systému Windows Vista a novějších platí následující kroky pro libovolné zdrojové aplikace:

  • Pomocí MCAST_JOIN_GROUP se připojte ke skupině.
  • V případě potřeby vypněte daný zdroj pomocí MCAST_BLOCK_SOURCE.
  • V případě potřeby použijte MCAST_UNBLOCK_SOURCE k opětovnému povolení blokovaného zdroje.
  • Skupinu opustíte pomocí MCAST_LEAVE_GROUP.

V systému Windows Vista a novějších platí následující kroky pro řízené zdrojové aplikace:

  • Pomocí MCAST_JOIN_SOURCE_GROUP se připojte ke každé skupině nebo zdrojové dvojici.
  • Pomocí MCAST_LEAVE_SOURCE_GROUP můžete opustit každou skupinu nebo zdroj nebo použít MCAST_LEAVE_GROUP k opuštění všech zdrojů, pokud všechny zdroje používají stejnou adresu skupiny.

Následující kroky platí pro libovolné zdrojové aplikace:

  • Pomocí IP_ADD_MEMBERSHIP se připojte ke skupině (IPV6_ADD_MEMBERSHIP pro protokol IPv6).
  • V případě potřeby vypněte daný zdroj pomocí IP_BLOCK_SOURCE.
  • V případě potřeby použijte IP_UNBLOCK_SOURCE k opětovnému povolení blokovaného zdroje.
  • Skupinu můžete opustit pomocí IP_DROP_MEMBERSHIP (IPV6_DROP_MEMBERSHIP pro protokol IPv6).

Následující kroky platí pro řízené zdrojové aplikace:

  • Pomocí IP_ADD_SOURCE_MEMBERSHIP se připojte ke každé skupině nebo zdrojové dvojici.
  • Pomocí IP_DROP_SOURCE_MEMBERSHIP můžete opustit každou skupinu nebo zdroj nebo použít IP_DROP_MEMBERSHIP k opuštění všech zdrojů, pokud všechny zdroje používají stejnou adresu skupiny.

Pořadí, ve kterém jsou tyto možnosti soketu nastaveny, má přidružená pravidla. Informace a řešení potíží s možnostmi vícesměrového soketu naleznete v tématu Chování vícesměrového soketu.