Как я могу узнать, есть ли другие устройства в моей локальной подсети? - PullRequest
1 голос
/ 25 сентября 2008

Я пытаюсь подтвердить, что пользователь отключил мое встроенное устройство от сети, прежде чем выполнять какое-либо обслуживание. Я рассматриваю "ping" всех IP-адресов в моей подсети, но это звучит грубо. Есть ли способ широковещательной передачи / ARP, который мог бы работать лучше?

Ответы [ 7 ]

2 голосов
/ 25 сентября 2008

Вы можете попробовать широковещательный пинг (это из linux):

ping -b 255.255.255.255

Другой вариант - загрузить Nmap и выполнить пинг-сканирование.

1 голос
/ 25 сентября 2008

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

0 голосов
/ 26 сентября 2008

Есть ли вероятность того, что ваше устройство поддерживает UPnP или Bonjour? Помимо протоколов низкого уровня, вы также должны взглянуть на эти протоколы, которые поддерживают некоторую функциональность plug-and-Play. Например, устройство UPnP отправляет сообщение в ЛВС перед тем, как выключить его (хотя это не поможет, если его просто удалить, отсоединив его от сети ...).

0 голосов
/ 26 сентября 2008

Неполучение ответов на эхо-запросы ICMP или запросы ARP не является 100% гарантией отсутствия сетевого подключения. Например, в сети могут быть устройства, которые отключены брандмауэром.

РЕДАКТИРОВАТЬ: Может быть, вы можете получить доступ к некоторой информации более низкого уровня на встроенном устройстве, чтобы проверить, имеет ли сетевой интерфейс свою связь без фактической отправки каких-либо данных.

0 голосов
/ 25 сентября 2008

вы также можете запустить tcpdump -n , чтобы посмотреть, что активно в сети.

0 голосов
/ 25 сентября 2008

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

0 голосов
/ 25 сентября 2008

Если вы не можете получить надежную информацию о состоянии канала с вашего устройства Ethernet (которое большинство чипсетов должны поддерживать в настоящее время, кстати ...), отправка запроса ARP для каждого IP-адреса в вашей локальной подсети - достойная замена. Затраты минимальны, и как только вы получите один ответ, вы можете быть уверены, что все еще подключены к сети.

Единственная возможная проблема, которую я вижу здесь, заключается в том, что если ваше устройство находится в подсети / 8, то может пройти много времени для прохождения всех 4294967296 возможных IP-адресов. Поэтому вам может потребоваться некоторая оптимизация, например, отправка только запросов ARP для вашего шлюза по умолчанию, а также всех IP-адресов, которые в настоящее время находятся в вашей таблице ARP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...