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


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

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

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

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

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

Приложение откроет сокеты с флагами c_leaf/d_leaf в WSASocket. Он будет использовать WSAJoinLeaf для добавления себя в группу многоадресной рассылки в интерфейсе по умолчанию, предназначенном для многоадресных операций. Если флаг в WSAJoinLeaf указывает, что этот сокет является только отправителем, операция присоединения по сути является no-op, и сообщения 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), присоединяются к одной группе в одном интерфейсе; приложение ON задает параметр IP_MULTICAST_LOOP включено, приложение OFF задает параметр IP_MULTICAST_LOOP отключен. Если ON и OFF являются приложениями Winsock, OFF может отправляться в ON, но ON не может отправляться в OFF. В отличие от этого, если ON и OFF являются приложениями UNIX, ON может отправляться в OFF, но OFF не может отправляться в ON.