Поделиться через


MLD и IGMP с помощью сокетов Windows

Windows Sockets включает Обнаружение слушателей многоадресной рассылки (MLD) на IPv6 и Протокол управления группами Интернета (IGMP) на IPv4 для многоадресных приложений с использованием параметров сокетов и IOCTLs. На этой странице описаны параметры сокета, используемые в программировании многоадресной рассылки, а также объясняется, как они применяются. Сведения об определениях параметров сокета см. на странице Параметры Сокета.

Сведения об использовании IOCTLs для многоадресного программирования см. в разделе Final-State-Based Многоадресное программирование далее в этом разделе.

В Windows Vista и более поздних версиях доступен набор вариантов сокета для многоадресного программирования, поддерживающих IPv6 и IPv4-адреса. Эти параметры сокета не зависят от IP-адресов и могут использоваться как для IPv6, так и для IPv4. В IPv6 эти параметры сокета используют MLDv2. В IPv4 эти параметры сокета используют IGMPv3. Эти IP-независимые параметры являются предпочтительными параметрами сокетов для многоадресного программирования в Windows Vista и более поздних версиях. Сокеты Windows используют следующие параметры сокета:

Параметр сокета Тип аргумента
БЛОКИРОВКА_ИСТОЧНИКА_MCAST структура GROUP_SOURCE_REQ
MCAST_JOIN_GROUP Структура GROUP_REQ
Присоединение к источнику группы MULTICAST структура GROUP_SOURCE_REQ
MCAST_LEAVE_GROUP Структура GROUP_REQ
MCAST_LEAVE_SOURCE_GROUP структура GROUP_SOURCE_REQ
MCAST_UNBLOCK_SOURCE структура GROUP_SOURCE_REQ

 

Набор параметров сокета доступен для многоадресного программирования, поддерживающего только адреса IPv6. Эти опции сокета используют MLDv1 или MLDv2. Используемая версия MLD зависит от версии Windows. MLDv2 поддерживается в Windows Vista и более поздних версиях. Сокеты Windows используют следующие параметры сокета:

Параметр сокета Тип аргумента
IPV6_ADD_MEMBERSHIP структура ipv6_mreq
IPV6_DROP_MEMBERSHIP структура ipv6_mreq

 

Набор параметров сокета доступен для многоадресного программирования, поддерживающего только адреса IPv4. Эти параметры сокета используют IGMPv3 или IGMPv2. Используемая версия IGMP зависит от версии Windows. IGMPv3 поддерживается в Windows Vista и более поздних версиях. Сокеты Windows используют следующие параметры сокета:

Параметр сокета Тип аргумента
IP_ADD_MEMBERSHIP структура ip_mreq
IP_ADD_SOURCE_MEMBERSHIP структура ip_mreq_source
ИСТОЧНИК_БЛОКИРОВКИ_IP структура ip_mreq_source
IP_DROP_MEMBERSHIP структура ip_mreq
IP_OTKAZ_OT_ЧЛЕНСТВА_ИСТОЧНИКА структура ip_mreq_source
ИСТОЧНИК РАЗБЛОКИРОВКИ IP структура ip_mreq_source

 

Когда IGMPv3 доступен, параметры IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP и IP_UNBLOCK_SOURCE обрабатываются более эффективно, так как маршрутизатор может обрабатывать фильтрацию. Если доступно только IGMPv2, хост должен управлять фильтрацией.

Существует две категории, к которым большинство приложений, скорее всего, относится: любой источник и контролируемый источник.

  • Приложения, принимающие любой источник, по умолчанию принимают все источники, что позволяет отключать отдельные источники по мере необходимости. Примером любого исходного приложения является видеоконференция, которая позволяет всем получателям участвовать.
  • Управляемые источники в приложениях ограничивают использование источников заданным списком, например, интернет-радиостанцией или трансляцией заметного события. Процесс использования параметров сокета немного отличается для каждого.

В Windows Vista и более поздних версиях для приложений любого источника применяются следующие действия.

  • Используйте MCAST_JOIN_GROUP для присоединения к группе.
  • При необходимости используйте MCAST_BLOCK_SOURCE, чтобы отключить указанный источник.
  • При необходимости используйте MCAST_UNBLOCK_SOURCE для повторного разрешения заблокированного источника.
  • Используйте MCAST_LEAVE_GROUP для выхода из группы.

В Windows Vista и более поздних версиях следующие действия применяются для управляемых исходных приложений:

  • Используйте MCAST_JOIN_SOURCE_GROUP для присоединения к каждой группе или исходной паре.
  • Используйте MCAST_LEAVE_SOURCE_GROUP, чтобы оставить каждую группу или источник или использовать MCAST_LEAVE_GROUP, чтобы оставить все источники, если один и тот же адрес группы используется всеми источниками.

Следующие действия применяются для любых исходных приложений:

  • Используйте IP_ADD_MEMBERSHIP для присоединения к группе (IPV6_ADD_MEMBERSHIP для IPv6).
  • При необходимости используйте IP_BLOCK_SOURCE, чтобы отключить указанный источник.
  • При необходимости используйте IP_UNBLOCK_SOURCE для повторного разрешения заблокированного источника.
  • Используйте IP_DROP_MEMBERSHIP, чтобы оставить группу (IPV6_DROP_MEMBERSHIP для IPv6).

Следующие действия применяются для управляемых исходных приложений:

  • Используйте IP_ADD_SOURCE_MEMBERSHIP для присоединения к каждой группе или исходной паре.
  • Используйте IP_DROP_SOURCE_MEMBERSHIP, чтобы оставить каждую группу или источник или использовать IP_DROP_MEMBERSHIP, чтобы оставить все источники, если один и тот же адрес группы используется всеми источниками.

Порядок, в котором задаются эти параметры сокета, содержит связанные правила. Для получения информации и сведений об устранении неполадок с параметрами сокета для многоадресной рассылки см. раздел Поведение вариантов сокета для многоадресной рассылки.