Многоадресная рассылка 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 Сокеты 2 Protocol-Specific. Остальные три операции хорошо описаны семантикой Windows Sockets 2.

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

Примечание

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

 

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

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