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.