Найти IP-адрес напрямую подключенного устройства

есть ли способ узнать IP-адрес устройства, которое напрямую подключено к определенному интерфейсу ethernet? Т. е. учитывая один хост, одно проводное соединение ethernet и один второй хост, подключенный к этому проводному соединению, какой уровень или протокол ниже IP может быть использован, чтобы узнать это.

Я также был бы удобен с решением только для Windows, используя некоторую функцию Windows-API или обратный вызов.

(Я знаю, что реальный способ сделать это, вероятно, через DHCP, но речь идет об обнаружении устаревшего устройства.)

5 ответов


чтобы использовать DHCP, вам нужно будет запустить DHCP-сервер на первичном и клиент на вторичном; первичный может затем запросить сервер, чтобы узнать, какой адрес он выдал. Наверное, перебор.

Я не могу помочь вам с Windows напрямую. В Unix команда "arp" сообщит вам, какие IP-адреса, как известно, подключены к локальному сегменту ethernet. Windows будет иметь эту же информацию (так как это основная часть интерфейса IP/Ethernet), но я не знаю, как вы получаете на него.

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


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

некоторые стеки tcpip отвечают на трансляции icmp. Таким образом, вы можете попробовать PING для вашего сетевого широковещательного адреса.

например, у вас есть IP 192.168.1.1 и подсети 255.255.255.0

  1. пинг 192.168.1.255
  2. остановить пинг через 5 секунд
  3. смотреть ответы устройств : arp -а

Примечание : на Шаге 3. вы получаете списки кэшированных записей MAC-to-IP, поэтому в вашей подсети также есть хосты, с которыми вы обмениваетесь данными в последние минуты, даже если они не отвечают на icmp_get.

примечание (2): теперь я на linux. Я не уверен, но это может быть windows не отвечает на icm_get через трансляцию.

Это единственное устройство, подключенное к компьютеру ? Это маршрутизатор или другой простой ПК ?


ваш лучший подход-установить Wireshark, перезагрузить устройство, дождаться потока TCP / UDP, трансляции объявят IP-адрес для обоих портов Ethernet Это особенно полезно, когда подключенное устройство не имеет DHCP-клиента включен, то вы можете пойти оттуда.


вы также можете получить информацию от непосредственно подключенных сетевых устройств, таких как сетевые коммутаторы с LDWin, портативной и бесплатной программой Windows, опубликованной на github:

http://www.sysadmit.com/2016/11/windows-como-saber-la-ip-del-switch-al-que-estoy-conectado.html

LDWin поддерживает следующие методы обнаружения ссылок: CDP (Cisco Discovery Protocol) и LLDP (Link Layer Discovery Protocol).

вы можете получить модель, IP управления, идентификатор VLAN, идентификатор порта, версия микропрограммного обеспечения, etc.


в Windows 7 есть команда arp. arp-a должен показать вам статические и динамические интерфейсы типа, подключенные к вашей системе.