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