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

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

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

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

Спасибо

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

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

nc -l -u -p 1234 

В исходной системе

nc -u -p 1234

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

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

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

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

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

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

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