Назад | Перейти на главную страницу

Несколько IP-адресов на одной сетевой карте, принимающей UDP из разных подсетей

Извините, если я использую неправильный язык для всего этого, я разработчик программного обеспечения, а не администратор сервера / сети!

У меня есть машина Windows с одной сетевой картой с несколькими настроенными IP-адресами. Например, адрес сетевой карты: 172.1.48.3. Он имеет три IP-адреса, настроенных в Свойства -> Свойства IP 4 -> Дополнительно, все в разных подсетях. 172.1.48.3, 172.1.88.3 и 172.1.104.3. (Маска подсети 255.255.255.0 по всем этим).

У меня есть программа, прослушивающая три сокета UDP с каждым из этих IP-адресов.

В каждую подсеть транслируются три вещи в сети: 172.1.48.255, 172.1.88.255 и 172.1.104.255.

Я вижу в wirehark, что UDP приходит с этих адресов, поэтому 172.1.48.255 -> 172.1.48.3, 172.1.88.255 -> 172.1.88.3 и т.д. Однако я вижу «перекрестное загрязнение» между сокетами. Сокет UDP, связанный с 172.1.48.3 получает сообщения UDP от 172.1.48.3, 172.1.88.3 и 172.1.104.3.

Либо я не понимаю UDP должным образом, либо что-то с сетью. Я думаю, что это некоторая проблема с наличием этих трех отдельных IP-адресов на одной сетевой карте, потому что она отлично работает, если у каждого IP есть собственная машина (и, следовательно, сетевая карта).

Кто-нибудь знает, почему 172.1.48.3 сокет будет получать сообщения, транслируемые в другую подсеть 172.1.104.255?

Потому что широковещательный трафик по своей природе ... транслируется. Если вы посмотрите на часть Ethernet-кадра UDP-трафика в Wireshark, вы увидите, что MAC-адрес назначения (уровень 2) - FF-FF-FF-FF-FF-FF, который включает все хосты, подключенные к одной и той же физической сети. сегмент. Все хосты, подключенные к одному и тому же физическому сегменту сети, получат этот трафик, посмотрят на адрес уровня 3 и определят, должны ли они принимать и обрабатывать трафик или нет. Хосты не в той же сети назначения уровня 3 будут принимать трафик, а затем отбрасывать его ... но они его принимают.

Кто-нибудь знает, почему сокет будет получать широковещательные сообщения?

Потому что ... так работают трансляции (Layer2). Каждая физическая сетевая карта в одном L2 широковещательный домен получит такие же широковещательные пакеты.

Если вы хотите разделить их, вы должны разделить их физически или логически.