1

Я пытаюсь создать схему, которая "перехватывает" кабель Ethernet, прежде чем он войдет в компьютер, позволяя мне посылать « волшебный пакет » через кабель вручную - например, нажатием кнопки.

Насколько я мог понять, чтобы сделать Wake on Lan, вы должны отправить 6 байтов по 255 (FF FF FF FF FF FF в шестнадцатеричном формате), а затем шестнадцать повторений MAC-адреса целевого компьютера - всего 102 байта. (источник: Википедия). Мне просто трудно понять, как отправить этот волшебный пакет вручную, а не через маршрутизатор (если это возможно).

Набросок ниже иллюстрирует то, что я пытаюсь сделать.

Набросок

Кабель Ethernet имеет 8 проводов, интересными для этого, вероятно, нет. 1, 2, 3 и 6 - TX+, RX-, RX+ и RX- (иллюстрация).

Я пытаюсь определить, как работает этот конкретный последовательный протокол и как его использовать на практике на плате разработки, такой как Arduino. Этот веб-сайт говорит, что это может быть "RS423" или "RS422".

Итак, мой вопрос: Можно ли сделать то, что я пытаюсь сделать? И если да, то как мне правильно отправлять волшебный пакет?

1 ответ1

1

Как вы писали, волшебный пакет WoL (фрейм) содержит последовательность в любом месте потока данных.

Обычно пакет WoL отправляется с использованием протокола более высокого уровня, поскольку это проще сделать. Просто отправьте пакет UDP (возможен любой порт, обычно 0, 7 или 9), содержащий последовательность, на широковещательный адрес 255.255.255.255.

Удачи в кодировании потока Ethernet, хотя это не так просто, как RS422/423.

Перед линейным кодированием необходимо создать кадр Ethernet, которому предшествует последовательность преамбулы /SOF, затем заголовок кадра (используйте Ethertype 0x0842), за которым следует магический шаблон. В зависимости от механизма WoL, вам, вероятно, потребуется заполнить кадр до минимального размера (64 без преамбулы /SOF) и вычислить правильную последовательность проверки кадра (FCS).

Затем кадр должен быть закодирован. 10BASE-T использует простой манчестерский код (01 = "1" и 10 = "0"). 100BASE-TX использует строчный код 4b/5b. 1000BASE-T использует гораздо более сложный строковый код, который, вероятно, выходит за рамки вашего проекта. Скорее всего, ссылка WoL - 10BASE-T, так что это выполнимо. Если вы не можете захватить существующую связь WoL, вам также необходимо генерировать регулярные импульсы связи, чтобы дальняя сторона "связывалась".

В общем, вам будет намного легче разбудить аппарат, используя другой метод, если вам не нужно делать это по сетевому кабелю.

Если вы используете узел Ethernet для генерации пакета WoL, вы можете просто подключить его в любом месте вашей сети, к любому порту коммутатора. Простая передача пакета отправит его всем связанным узлам, включая выбранный MAC.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .