Оба поведения верны.
Какие пакеты UDP вы получаете, по какому сокету выходит за рамки определения многоадресной рассылки IPv4.
Ожидание того, что вы получите только трафик, для которого вы присоединились к группе, часто нарушается.Кроме того, все операционные системы реализуют это по-разному.Linux и Windows ведут себя по-разному, а небольшие стеки IP в микроконтроллерах обычно ведут себя еще проще.
Исходный уровень, наихудший случай, который вы можете ожидать, таков: вы будете получать случайные пакеты UDP на своем сокете UDP, даже от групп, к которым вы не присоединились.Но на практике это обычно не так уж плохо.Просто в качестве ориентира, когда думаешь об этом.Причина в том, что ОС может задержать прекращение членства.Локальные маршрутизаторы будут задерживать отбрасывание членства.Локальные маршрутизаторы будут содержать ошибки.
Вам все равно придется иметь дело с получением неожиданных пакетов UDP, поскольку любой в вашей сети может подделывать пакеты UDP и отправлять их в ваш сокет от имени другого лица.Также любой может подделать пакеты IGMP и «присоединить вас» к любым группам многоадресной рассылки.
Это означает: на практике вам всегда нужно выполнять фильтрацию на уровне приложений и молча игнорировать неожиданные пакеты UDP.В большинстве стеков IP существует (нетривиальная) опция для определения адреса назначения полученного пакета UDP.Это наиболее полезно для разделения трафика для нескольких групп многоадресной рассылки.
И так как теперь вы знаете поведение своего стека IP, вы можете, например, сохранить некоторую память и просто использовать один сокет UDP для получения всего трафика UDP.и демультиплексировать его на стороне приложения.Конечно, все зависит от вашего приложения.
Но да, я понимаю, вы разочарованы тем, что многоадресная рассылка IP так недооценена.Я чувствую себя с тобой!: -)