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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

  • ping 192.168.1.255
  • остановить пинг через 5 секунд
  • наблюдать за ответами устройств: arp -a

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

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

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

Ответ 3

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

Ответ 4

Вы также можете получить информацию от непосредственно подключенных сетевых устройств, таких как сетевые коммутаторы с 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 (протокол обнаружения уровня канала).

Вы можете получить модель, IP-адрес управления, идентификатор VLAN, Идентификатор порта, версию прошивки и т.д.

Ответ 5

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