Интересный вопрос, захотелось самому поковыряться)
Если кратко, то стандарт PPPoE отличается от стандарта PPP в части полей Address и Control. А остальные поля привнесла одна известная американская контора Microsoft. Подробнее ниже.
Открываем
RFC 1661, там описано, как должен инкапсулироваться
PPP. Видим, что поле
Protocol Information может быть размером 8-16 бит. В частности, в
PPPoE и есть только 8 бит, в чистом
PPP - 16.
Классический
PPP должен поддерживать те же самые заголовки, что и более ранний
HDLC, для этого протокола необходимы поля
Address и
Control. Эти же поля успешно перекочевали в PPP, хотя формально они в нем
не нужны.
Копаем дальше. В реализации протокола
PPP определен механизм синхронизации
LCP, у него есть опция
Address-and-Control-Field-Compression. Так вот в
RFC 2516 (PPPoE, не такое уж оно и большое) явно говорится, эту опцию не использовать, и вполне логично выплюнуть поля
Address и
Control. Как используется эта опция в PPP можно почитать
здесь.
Итак, разобрались с
Address и
Control, займемся флагом
0x7e. Явно в стандарте PPP вы нигде не найдете такое поле, зато оно имеется в
описании стандарта для win-систем. Это ни что иное, как простая переделка протокола под себя конторой MS)
Ну и напоследок несколько картиночек простых ICMP-echo пакетов.
Вот вам пример дампа
PPP.
Как видите, в нем нет полей flags, FCS. Зато есть Control и Address.
А вот вам картинка с дампом
PPPoE.
В нем тоже нет этих полей, как нет и
Control и Address.
PPPoE в таком виде не нужна совместимость с
HDLC, зато нужно больше параметров синхронизации. Эти параметры идут в заголовке
PPP-Over-Ethernet-Session.
Ну и напоследок картинка с дампом
PPTP.
Address и Control присутствуют, хотя также не обязательны, зато в начале есть заголовок
GRE.
Итог - не надо читать вики просто так без оглядки, верить всему что там написано.
P. S. дампы можете сами посмотреть на
packetlife, просматривать их можно сразу в браузере через
cloudshark