Как PPP, так и Ethernet имеют механизмы для кадрирования, то есть для разбиения потока битов на кадры таким образом, что, если приемник теряет отслеживание того, что к чему, он может уловить в начале следующего кадра , Они расположены прямо в нижней части стека протоколов; все остальные детали протокола построены на идее фреймов. В частности, преамбула, LCP и FCS находятся на более высоком уровне и не используются для управления кадрированием.
PPP, по последовательным каналам, таким как dialup, создается с использованием HDLC-подобного кадрирования . Значение байта 0x7e, называемое последовательностью флага, указывает начало кадра. Кадр продолжается до следующего байта флага. Любое вхождение байта флага в содержимом кадра исключается. Экранирование выполняется записью 0x7d, известного как управляющий управляющий байт, за которым следует байт, который должен быть экранирован xor'd с 0x20. Последовательность флага экранируется до 0x5e; Сам управляющий escape также должен быть экранирован до 0x5d. Другие значения также могут быть экранированы, если их присутствие нарушит модем. В результате, если получатель теряет синхронизацию, он может просто читать и отбрасывать байты, пока не увидит 0x7e, и в этот момент он снова узнает, что находится в начале кадра. Содержимое кадра затем структурируется, содержит несколько странных небольших полей, которые на самом деле не важны, но сохраняются из более раннего протокола IBM, наряду с пакетом PPP (называемым блоком данных протокола, PDU), а также проверкой кадра. последовательность (FCS).
Ethernet использует логически схожий подход, имея символы, которые распознаются как маркеры начала и конца кадра, а не данные, но вместо того, чтобы иметь зарезервированные байты плюс механизм экранирования, он использует схему кодирования, которая способна выражать специальные управляющие символы которые отличаются от байтов данных - немного похоже на использование знаков препинания для разбиения последовательности букв. Детали используемой системы зависят от скорости.
Стандартная (10 Мбит / с) сеть Ethernet кодируется с использованием вещи, называемой Манчестерское кодирование , в которой каждый передаваемый бит представляется в виде двух последовательных уровней в строке таким образом, что всегда переход между уровнями в каждом бите, который помогает приемнику оставаться синхронизированным. Границы фрейма обозначаются нарушением правила кодирования, что приводит к тому, что бит остается без перехода (я читал это в книге несколько лет назад, но не могу найти цитату в Интернете - я могу ошибаться по этому поводу). По сути, эта система расширяет двоичный код до трех символов - 0, 1 и нарушение.
Быстрый (100 Мбит / с) Ethernet использует другую схему кодирования, основанную на коде 5b / 4b , где группы из четырех битов данных (nybbles) представлены как группы из пяти битов в проводе и передается напрямую, без манчестерской схемы. Расширение до пяти битов позволяет выбрать 16 используемых шаблонов, чтобы выполнить требование частых переходов между уровнями, опять же, чтобы помочь приемнику оставаться синхронизированным. Тем не менее, еще есть место для выбора некоторых дополнительных символов, которые могут быть переданы, но не соответствуют значению данных, фактически расширяя набор nybbles до двадцати четырех символов - nybbles от 0 до F и символы, называемые Q, I , J, K, T, R, S и H. Ethernet использует пару JK, чтобы отметить начало кадра, и TR, чтобы отметить конец кадра.
Gigabit ethernet аналогичен быстродействующим Ethernet, но с другой схемой кодирования - версии для оптоволокна используют код 8b / 10b вместо кода 5b / 4b, а версия для витой пары использует некоторые очень сложное расположение двоичного кода, которое я не очень понимаю. Оба подхода дают один и тот же результат, то есть способность передавать либо байты данных, либо один из небольшого набора дополнительных специальных символов, и эти специальные символы используются для кадрирования.
Вдобавок к этой базовой структуре кадрирования существует фиксированная преамбула, за которой следует разделитель кадров, и некоторые поля управления различной бессмысленности (привет, LLC / SNAP!). Допустимость этих полей может использоваться для проверки кадра, но они не могут использоваться для определения кадров самостоятельно.