Alf, честно говоря, я не понял ваше объяснение того, как может помочь знание MAC адреса достучаться до встроенного web сервера.
Зная MAC можно сформировать кадр Ethernet. Но для того, чтобы данные дошли до web сервера надо, чтобы они прошли сквозь IP и TCP. Именно на данном участке необходимо знание IP адреса устройства.
В общем случае - совершенно верно.
Реализация IP для оконечного узла (хоста), вообще говоря, (выделение мое - Alf) отбрасывает пакеты с IP адресом точки назначения, отличным от IP адресов на получающем интерфейсе.
Несколько моделей принт-серверов (как встраиваемых в принтер, так и исполненных в виде "мыльницы") и пакетных коммутаторов, которые мне доводилось конфигурировать либо через web-интерфейс, либо через специальную консоль, входящую в поставку софта принтера, таким свойством не обладали и пакеты не отбрасывали. Полагаю, что производители оборудования намеренно дали такую слабину в реализации протокола, чтобы оставить лазейку для переконфигурирования интерфейса при необходимости, поскольку если из принтера еще можно посредством неких манипуляций стребовать распечатку параметров, то коммутатор при всем желании ничего о своих установках рассказать не сможет.
Поэтому для того, чтобы донести данные до TCP надо угадать IP адрес на интерфейсе.
Полагаю, что для этого потребуется больше везения, чем для того, чтобы сорвать банк в рулетку.
В случае с принтером мы взяли заводские установки а затем поменяли на адрес в нашей подсетке.
Тоже выход, конечно. Но: 1) нужно заполучить заводские установки, не для всех устройств это может получиться; 2) не во всех ОС смена IP-адреса происходит гладко, я описанные упражнения проделывал на Win NT 4.0, которую для этого пришлось бы перегрузить. Набрать командную строку ARP побыстрее будет.
Можно попробовать взять в качестве адреса точки назначения групповой (multicast) или широковещательный адрес (broadcast), но
-- надо ещё угадать, какой групповой адрес слушает устройство (здесь может помочь IGMP, но устройство опять-таки может его не поддерживать)
-- tcp сокет может не принимать сообщения, направленные по групповым адресам.
Не доводилось встречать устройств, у которых firmware включало бы поддержку IGMP. Да и целесообразность такого включения мне неочевидна.
Так что в моём понимании знание IP адреса необходимо для настройки устройства. Возможно, я неправ, тогда поправте, пожалуйста.
Для установки TCP-соединения с обычным хостом - безусловно. Для настройки
устройства практика показывает, что есть многочисленные исключения. Либо это специально оставленная лазейка для конфигурирования устройств, либо просто разработчики firmware решили облегчить себе жизнь, упростив обработку пакетов.
Кстати, приведенный рецепт придуман не мной. Я прочитал его в мануале то ли к принтерам семейства HP5000, то ли к какому-то из гигабитных коммутаторов 3COM. На всякий случай отложил этот прием в памяти.