Udostępnij przez


MLD i IGMP przy użyciu gniazd systemu Windows

Gniazda systemu Windows umożliwiają korzystanie z Multicast Listener Discovery (MLD) w protokole IPv6 oraz z protokołu zarządzania grupami internetowymi (IGMP) w protokole IPv4 dla aplikacji multiemisji za pomocą opcji gniazd i poleceń IOCTL. Na tej stronie opisano opcje gniazd umożliwiające programowanie multiemisji i opisano sposób ich użycia. Aby uzyskać definicje każdej opcji gniazda, zapoznaj się ze stroną Socket Options.

Aby uzyskać informacje na temat używania IOCTL do programowania multicastu, zobacz Final-State-Based Programowania Multicastu w tej sekcji.

W systemie Windows Vista i nowszych dostępny jest zestaw opcji gniazd sieciowych dla programowania wielokrotnego wysyłania, który obsługuje adresy IPv6 i IPv4. Te opcje gniazda są niezależne od adresu IP i mogą być używane zarówno w protokołach IPv6, jak i IPv4. W przypadku IPv6 te opcje gniazd używają MLDv2. W przypadku protokołu IPv4 te opcje gniazd używają protokołu IGMPv3. Te opcje niezależne od IP to preferowane opcje gniazd dla programowania multicast w systemie Windows Vista i nowszych wersjach. Windows Sockets używa następujących opcji gniazda:

Opcja gniazda 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 struktura GROUP_SOURCE_REQ
MCAST_ODBLOKUJ_ŹRÓDŁO struktura GROUP_SOURCE_REQ

 

Dostępny jest zestaw opcji gniazd dla programowania multicast, który obsługuje tylko adresy IPv6. Te opcje gniazd używają MLDv1 lub MLDv2. Stosowana wersja MLD jest zależna od wersji systemu Windows. Usługa MLDv2 jest obsługiwana w systemie Windows Vista i nowszych wersjach. Windows Sockets używa następujących opcji gniazda:

Opcja gniazda Typ argumentu
Dodanie zapisów IPV6 struktura ipv6_mreq
IPV6_DROP_MEMBERSHIP ipv6_mreq struktura

 

Dostępny jest zestaw opcji gniazd do programowania multicastowego, które obsługują wyłącznie adresy IPv4. Te opcje gniazd używają protokołu IGMPv3 lub IGMPv2. Używana wersja protokołu IGMP jest zależna od wersji systemu Windows. Protokół IGMPv3 jest obsługiwany w systemie Windows Vista i nowszych wersjach. Windows Sockets używa następujących opcji gniazda:

Opcja gniazda Typ argumentu
IP_ADD_MEMBERSHIP struktura ip_mreq
IP_ADD_SOURCE_MEMBERSHIP struktura ip_mreq_source
ŹRÓDŁO BLOKADY IP struktura ip_mreq_source
IP_DROP_MEMBERSHIP struktura ip_mreq
IP_DROP_SOURCE_MEMBERSHIP struktura ip_mreq_source
Źródło Odblokowania IP struktura ip_mreq_source

 

Gdy protokół IGMPv3 jest dostępny, IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP i IP_UNBLOCK_SOURCE opcje są obsługiwane wydajniej, ponieważ router może obsługiwać filtrowanie. Jeśli jest dostępny tylko protokół IGMPv2, host musi obsługiwać filtrowanie.

Istnieją dwie kategorie, do których większość aplikacji prawdopodobnie należy: z dowolnego źródła i z kontrolowanego źródła.

  • aplikacje dowolnych źródeł akceptują domyślnie wszystkie źródła, co umożliwia wyłączenie poszczególnych źródeł zgodnie z potrzebami. Przykładem aplikacji typu dowolne źródło jest wywołanie konferencji wideo, które umożliwia wszystkim adresatom uczestnictwo.
  • Aplikacje kontrolowanych źródeł ograniczają źródła do danej listy, takich jak internetowa stacja radiowa lub transmisja wyjątkowego wydarzenia. Proces korzystania z opcji gniazd jest nieco inny dla każdego z nich.

W systemie Windows Vista i nowszych następujące kroki dotyczą aplikacji dowolnych źródeł:

  • Użyj MCAST_JOIN_GROUP, aby dołączyć do grupy.
  • Użyj MCAST_BLOCK_SOURCE, aby wyłączyć dane źródło, jeśli jest to wymagane.
  • Użyj MCAST_UNBLOCK_SOURCE, aby ponownie zezwolić na zablokowane źródło, jeśli jest to wymagane.
  • Użyj MCAST_LEAVE_GROUP, aby opuścić grupę.

W systemie Windows Vista i nowszych następujące kroki dotyczą aplikacji kontrolowanych źródeł:

  • Użyj MCAST_JOIN_SOURCE_GROUP, aby dołączyć do każdej pary grup/źródła.
  • Użyj MCAST_LEAVE_SOURCE_GROUP, aby pozostawić każdą grupę/źródło lub użyć MCAST_LEAVE_GROUP do pozostawienia wszystkich źródeł, jeśli ten sam adres grupy jest używany przez wszystkie źródła.

Poniższe kroki dotyczą aplikacji dowolnych źródeł:

  • Użyj IP_ADD_MEMBERSHIP, aby dołączyć do grupy (IPV6_ADD_MEMBERSHIP dla protokołu IPv6).
  • Użyj IP_BLOCK_SOURCE, aby wyłączyć dane źródło, jeśli jest to wymagane.
  • Użyj IP_UNBLOCK_SOURCE, aby ponownie zezwolić na zablokowane źródło, jeśli jest to wymagane.
  • Użyj IP_DROP_MEMBERSHIP, aby opuścić grupę (IPV6_DROP_MEMBERSHIP dla protokołu IPv6).

Poniższe kroki dotyczą aplikacji kontrolowanych źródeł:

  • Użyj IP_ADD_SOURCE_MEMBERSHIP, aby dołączyć do każdej pary grup/źródła.
  • Użyj IP_DROP_SOURCE_MEMBERSHIP, aby pozostawić każdą grupę/źródło lub użyć IP_DROP_MEMBERSHIP do pozostawienia wszystkich źródeł, jeśli ten sam adres grupy jest używany przez wszystkie źródła.

Kolejność ustawiania tych opcji gniazd ma skojarzone reguły. Aby uzyskać informacje na temat opcji gniazda multiemisji i rozwiązywania problemów, zobacz Zachowanie opcji gniazda multiemisji.