Служебную информацию,по которой можно судить о достоверности принятых данных, принято называть контрольной суммой или (последовательностью контроля кадра - Frame Check Sequence, FCS).
Методы обнаружения ошибок
Все методы обнаружения ошибок основаны на передаче в составе кадра данных служебной избыточной информации.
Контрольная сумма вычисляется как функция от основной информации, причем необязательно только путем суммирования. Принимающая сторона повторно вычисляет контрольную сумму кадра по известному алгоритму и в случае ее совпадения с контрольной суммой, вычисленной передающей стороной, делает вывод о том, что данные были переданы через сеть корректно.
Существует несколько распространенных алгоритмов вычисления контрольной суммы, отличающихся вычислительной сложностью и способностью обнаруживать ошибки в данных.
Этот метод представляет собой наиболее простой, но в то же время наименее мощный метод контроля данных, так как с его помощью можно обнаружить только одиночные ошибки в проверяемых данных.
Метод заключается в суммировании по модулю 2 всех бит контролируемой информации. Результат суммирования представляет собой один бит данных. При одиночной ошибке контроль по паритету даст правильный ответ, однако двойная ошибка будет неверно принята за корректные данные. Поэтому контроль по паритету применяется к небольшим порциям данных, как правило, к каждому байту, что дает коэффициент избыточности для этого метода 1/8.
Этот метод редко применяется в вычислительных сетях из-за его большой избыточности и невысоких диагностических способностей.
представляет собой модификацию описанного выше метода. Его отличие состоит в том, что исходные данные рассматриваются в виде матрицы, строки которой составляют байты данных. Контрольный разряд подсчитывается отдельно для каждой строки и для каждого столбца матрицы.
Этот метод обнаруживает большую часть двойных ошибок, однако обладает еще большей избыточностью. На практике сейчас также почти не применяется.
Циклический избыточный контроль (Cyclic Redundancy Check, CRC)
Этот метод является в настоящее время наиболее популярным методом контроля в вычислительных сетях (и не только в сетях, например, этот метод широко применяется при записи данных на диски и дискеты).
Метод основан на рассмотрении исходных данных в виде одного многоразрядного двоичного числа. Например, кадр, состоящий из 1024 байт, будет рассматриваться как одно число, состоящее из 8192 бит. В качестве контрольной информации рассматривается остаток от деления этого числа на известный делитель R.
Обычно в качестве делителя выбирается семнадцати- или тридцати трехразрядное число, чтобы остаток от деления имел длину 16 разрядов (2 байт)- CRC16, или 32 разряда (4 байт)- CRC32.
При получении кадра данных снова вычисляется остаток от деления на тот же делитель R, но при этом к данным кадра добавляется и содержащаяся в нем контрольная сумма. Если остаток от деления на R равен нулю, то делается вывод об отсутствии ошибок в полученном кадре, в противном случае кадр считается искаженным.
Этот метод обладает более высокой вычислительной сложностью, но его диагностические возможности гораздо выше, чем у методов контроля по паритету.
Метод CRC обнаруживает все одиночные и двойные ошибки, а также ошибки в нечетном числе бит. Метод обладает также невысокой степенью избыточности. Например, для кадра размером в 1024 байт контрольная информация длиной в 4 байт составляет только 0,4 %.