Открыть сервис

Frame Check Sequence

Frame Check Sequence (FCS, последовательность проверки кадра) — это контрольная сумма, добавляемая в конец кадра в компьютерных сетях и протоколах передачи данных, предназначенная для обнаружения ошибок, возникших при передаче данных по каналу связи. FCS вычисляется на основе содержимого кадра (обычно заголовка и полезной нагрузки) с использованием циклического избыточного кода (CRC) и позволяет принимающей стороне проверить целостность полученных данных. Отсутствие или несовпадение FCS сигнализирует о наличии ошибок, что приводит к отбрасыванию кадра или запросу повторной передачи.

История и происхождение

Идея использования контрольных сумм для защиты целостности данных в телекоммуникациях возникла задолго до появления компьютерных сетей. В 1961 году У. Уэсли Питерсон опубликовал работу, в которой формализовал использование циклических кодов для обнаружения ошибок. Однако практическое применение FCS в сетях началось с разработки протоколов канального уровня, таких как HDLC (High-Level Data Link Control) в 1970-х годах и Ethernet в 1980-х годах. В Ethernet FCS была включена в стандарт IEEE 802.3 как обязательный элемент кадра. С тех пор FCS остаётся стандартным механизмом контроля целостности в большинстве проводных и беспроводных сетей, включая Wi-Fi (IEEE 802.11), Token Ring, FDDI и многие другие.

Принцип работы

FCS представляет собой поле фиксированной длины (обычно 4 байта в Ethernet), которое размещается в конце кадра. Вычисление FCS выполняется передатчиком на основе всех полей кадра, за исключением самого FCS (иногда — и преамбулы). Алгоритм вычисления — полиномиальный циклический избыточный код (CRC). Наиболее распространённый полином — CRC-32 (IEEE 802.3), который использует полином 0x04C11DB7. Приёмник, получив кадр, заново вычисляет FCS по тем же правилам и сравнивает с переданным значением. Если значения совпадают, кадр считается корректным; если нет — фиксируется ошибка передачи.

Алгоритм вычисления CRC-32

  1. Регистр CRC инициализируется значением 0xFFFFFFFF.
  2. Каждый байт кадра (от начала до конца, исключая FCS) обрабатывается побитно или побайтно с использованием полинома.
  3. После обработки всех байтов выполняется операция XOR с 0xFFFFFFFF для получения финального значения.
  4. Полученное 32-битное число записывается в поле FCS (обычно в порядке от старшего к младшему байту).

Этот алгоритм гарантирует обнаружение всех однобитных, двубитных ошибок, всех ошибок нечётной кратности, а также любых пакетов ошибок длиной до 32 бит.

Размещение в кадре

FCS располагается в конце кадра, после поля данных (полезной нагрузки). В Ethernet-кадре (стандарт IEEE 802.3) структура выглядит следующим образом:

В беспроводных сетях Wi-Fi (IEEE 802.11) FCS также занимает 4 байта и завершает кадр. В протоколах более высокого уровня, таких как TCP/IP, FCS не используется — их целостность обеспечивается контрольными суммами на транспортном уровне (например, TCP checksum).

Виды и варианты FCS

Хотя CRC-32 является доминирующим вариантом, существуют и другие реализации FCS, отличающиеся длиной и используемым полиномом:

В некоторых протоколах, таких как Frame Relay или PPP, FCS может быть необязательным или иметь переменную длину.

Применение

FCS является критическим компонентом в любых сетевых технологиях, где требуется достоверная передача данных. Основные области применения:

Ограничения и критика

Несмотря на широкое распространение, FCS не является абсолютной защитой от ошибок:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →