Отправка UDP-сообщения на компьютер внутри сети

Отправка UDP-сообщения на компьютер внутри сети

Допустим, у меня есть ip- и mac-адрес компьютера внутри сети, и я хочу отправить ему сообщение UDP. Инициализируя mac- и ip-адреса отправленного сообщения, когда сетевой маршрутизатор получает сообщение, он должен передать его компьютеру с тем же mac-адресом... верно?

Я спрашиваю, потому что программа, которую я пишу, похоже, не справляется с этим ограничением. Она отлично работает, когда находится в той же сети, но в противном случае...ничего.

Спасибо

решение1

Если вы создаете приложение, которое открывает сокет UDP и отправляет трафик на определенную цель, единственное, о чем вам нужно беспокоиться, это IP-адреса. Если ваш слушатель работает на уровне 2, т. е. когда обе системы находятся в одной подсети, то он должен работать точно так же, когда вы переходите на уровень 3, при условии, что ваша сеть правильно настроена. Если это не помогает, попробуйте использовать что-то для проверки, что, как вы знаете, работает. Существует множество диагностических приложений, но, вероятно, самым простым являетсянеткат, установите его и попробуйте это:

В вашей целевой системе:

nc -l -u -p 1234 

В вашей исходной системе

nc -u -p 1234

Измените номер порта на тот, который вы используете для своего приложения, и если вы сможете увидеть все, что вводите в источнике, оно появится в консоли назначения, при условии, что ваша сеть уровня 3 настроена правильно и не блокирует UDP через этот порт.

Если вы встраиваете MAC-адрес в полезную нагрузку, то это одно, но MAC-адреса источника (и назначения), встроенные в кадр Ethernet, будут изменены маршрутизатором, так это работает. Если ваше приложение ожидает, что они останутся одинаковыми на обоих концах разговора, то оно потерпит неудачу, но в целом вам не следует так глубоко копаться в сетевом стеке. Что вы используете для создания этого?

решение2

У вас есть два случая:

1- Если вы отправляете пакет на хост в той же подсети, он будет отправлен ему напрямую с использованием MAC- и IP-адресов машины назначения.

2- Если вы отправляете его на хост в другой подсети, он должен быть отправлен на ваш маршрутизатор. Таким образом, MAC назначения будет одним из маршрутизатора, а IP назначения будет одним из конечного пункта назначения.

Вы узнаете, какой из них относится к вашему случаю, изучив IP-адрес и маску подсети.

решение3

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

Связанный контент