Найти 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 должен показать вам интерфейсы статического и динамического типов, подключенные к вашей системе.