Многоадресная рассылка IP

Многоадресная ip-рассылка относится к категории некоротной плоскости данных и некоротной плоскости управления. Все приложения играют роль конечной роли. В настоящее время в большинстве реализаций многоадресной рассылки IP используется набор параметров сокета, предложенных Стивом Deering для Целевой группы разработки интернета (IETF). Таким образом, доступны пять операций:

  • IP_MULTICAST_TTL — задает время жизни, элементы управления область многоадресного сеанса.
  • IP_MULTICAST_IF — определяет интерфейс для многоадресной рассылки.
  • IP_ADD_MEMBERSHI — присоединяется к указанному сеансу многоадресной рассылки.
  • IP_DROP_MEMBERSHIP — удаляется из сеанса многоадресной рассылки.
  • IP_MULTICAST_LOOP — управляет замыкания на себя многоадресного трафика.

Настройка времени жизни для сокета многоадресной рассылки IP напрямую сопоставляется с использованием кода команды SIO_MULTICAST_SCOPE для WSAIoctl.

Метод определения IP-интерфейса, который будет использоваться для многоадресной рассылки, заключается в параметре сокета tcp/IP, как описано в приложении Windows Sockets 2 Protocol-Specific. Остальные три операции хорошо рассматриваются семантикой Сокетов Windows 2, описанной здесь.

Приложение будет открывать сокеты с флагами c_leaf/d_leaf в WSASocket. Он будет использовать WSAJoinLeaf для добавления себя в группу многоадресной рассылки в интерфейсе по умолчанию, предназначенном для многоадресной рассылки. Если флаг в WSAJoinLeaf указывает, что этот сокет является только отправителем, то операция соединения по сути не является операцией и не нужно отправлять сообщения IGMP. В противном случае IGMP-пакет отправляется маршрутизатору, чтобы указать интересы при получении пакетов, отправленных на указанный адрес многоадресной рассылки. Так как приложение создало специальные сокеты c_leaf/d_leaf, используемые только для выполнения многоадресной рассылки, стандартная функция closesocket будет использоваться для выхода из многоадресного сеанса. Код команды SIO_MULTIPOINT_LOOPBACK для WSAIoctl предоставляет универсальный механизм управления для определения того, могут ли данные, отправленные в сокет d_leaf в некоротной многоточечный схеме, также получаться в том же сокете.

Примечание

Версия Winsock параметра IP_MULTICAST_LOOP семантически отличается от версии UNIX IP_MULTICAST_LOOP параметра:

 

  • В Winsock параметр IP_MULTICAST_LOOP применяется только к пути получения.
  • В версии UNIX параметр IP_MULTICAST_LOOP применяется к пути отправки.

Например, приложения ON и OFF (которые проще отслеживать, чем X и Y) присоединяются к одной группе в одном интерфейсе; application ON устанавливает параметр IP_MULTICAST_LOOP вкл., а параметр IP_MULTICAST_LOOP — значение off. Если ON и OFF являются приложениями Winsock, OFF может отправлять сообщения в ON, но ON не может отправляться в OFF. В отличие от этого, если ON и OFF являются приложениями UNIX, ON может отправлять в OFF, но OFF не может отправлять в ON.