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


Многоадресное программирование

Многоадресное программирование доступно через сокеты Windows. Сокеты Windows позволяют выполнять обнаружение многоадресной рассылки (MLD) версии 1 (MLDv1) и 2 (MLDv2) для IPv6 и протоколов управления группами Интернета версии 2 (IGMPv2) и 3 (IGMPv3) с помощью параметров сокета или IOCTLs. В этом разделе описывается реализация Windows, объясняется настройка многоадресного программирования с помощью сокетов Windows и приводятся примеры программирования для иллюстрации его использования.

Вторая версия IGMP, которая далее называется IGMPv2, позволяет узлам присоединяться и покидать группы многоадресной рассылки, определяемые адресом многоадресной рассылки IPv4 в определенном сетевом интерфейсе. Сокеты Windows позволяют приложению присоединяться к определенным сокетам и оставлять такие группы. Однако недостатком IGMPv2 является то, что любой исходный адрес IPv4, присоединенный к группе IGMPv2, может передавать всем участникам, потенциально перегрузив группу и сделав её непригодной для передачи, требующей первичного источника, например, интернет-радиостанции. Проблема с IGMPv2 заключается в его невозможности выборочно указать один исходный адрес IPv4 (или даже несколько источников), и его неспособности блокировать отправителей (например, злонамеренных вещателей или организаторов атак отказа в обслуживании) в данной многоадресной группе. IGMPv3 устраняет эти недостатки.

С помощью сокетов Windows и IGMPv3 приложения могут выбрать определенный исходный адрес многоадресной рассылки IPv4 и пару групп многоадресной рассылки. Кроме того, сокеты Windows позволяют разработчикам выборочно разрешать дополнительные широковещательные каналы в заданной паре источников и групп или разрешать приложениям блокировать определенные широковещательные программы. IGMPv3 поддерживается в Windows Vista и более поздних версиях.

Первая версия MLD на IPv6, называемая MLDv1, очень похожа на IGMPv2 и страдает от таких же ограничений. MLDv1 позволяет узлам присоединяться и покидать группы многоадресной рассылки, определяемые адресом многоадресной рассылки IPv6 в определенном сетевом интерфейсе. Сокеты Windows позволяют приложению присоединяться к определенным сокетам и оставлять такие группы. Однако любой исходный адрес IPv6, присоединенный к группе MLDv1, может передаваться всем членам, потенциально затопляя группу и делая его непригодным для передач, требующих первичного источника. Проблема с MLDv1 заключается в его неспособности выборочно выбирать один исходный адрес IPv6 (или даже несколько источников), а также в его неспособности блокировать отправителей (например, недобросовестных вещателей или злоумышленников, совершающих атаки типа "отказ в обслуживании") для данной многоадресной группы. MLDv2 устраняет эти недостатки.

С помощью сокетов Windows и MLDv2 приложения могут выбирать определенный исходный адрес многоадресной рассылки IPv6 и пару групп многоадресной рассылки. Кроме того, сокеты Windows позволяют разработчикам выборочно разрешать дополнительные широковещательные каналы в заданной паре источников и групп или разрешать приложениям блокировать определенные широковещательные программы. MLDv2 поддерживается в Windows Vista и более поздних версиях.

При разработке многоадресных приложений в Windows программист может принять два подхода. Первый подход основан на изменении; Источники многоадресной рассылки добавляются или удаляются с помощью параметров сокета, даже во время передачи по мере необходимости. Второй подход основан на окончательном состоянии; исходные адреса и все включенные или исключенные адреса указываются с помощью IOCTL. Каждый из подходов является допустимой практикой для работы с многоадресной рассылкой, но разработчикам может показаться, что использование опций сокета и подхода, основанного на изменениях, более интуитивно понятно и гибко.

В этом разделе приведены следующие страницы:

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