Прием Multicast: имеет ли значение TTL?

При присоединении к группе многоадресной рассылки, какой эффект имеет IP_MULTICAST_TTL при получении дейтаграмм?

Multicast в Python имеет один из ответов с TTL как 32 на принимающей стороне (и IP_MULTICAST_LOOP как 1), но мне трудно понять, почему.

Я читал многоадресное программирование, и я не понимаю, почему для приемника необходимы TTL и LOOP.

Когда вы получили многоадресную рассылку, я подумал, что вы просто скажете ядру присоединиться к группе многоадресной рассылки, и она затем свяжет порт, на который отправляются данные.

Как получатель, вы также отправляете данные при получении многоадресной рассылки? Поэтому IP_MULTICAST_TTL и IP_MULTICAST_LOOP устанавливаются при получении? Можете ли вы повлиять на сеть, просто присоединившись к многоадресной группе?

Спасибо

1 ответ

Решение

Это не помешает вам получать многоадресные сообщения как таковые, но может повлиять на охват IGMP-сообщения, которое отправляется при присоединении к группе mcast (которое отправляется в результате вызова setsockopt с флагом IP_ADD_MEMBERSHIP).

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

Опция LOOP не актуальна, если вы ничего не отправляете.

Другие вопросы по тегам