Как контрольная сумма используется для обнаружения ошибок - PullRequest
1 голос
/ 09 сентября 2010

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

Функции уже есть, что мне нужно для реализации функциональности.Чего я не понимаю, так это как узнать, что пакет поврежден.

Например, я собираюсь отправить текстовый файл.Итак, у меня есть функция, которая будет принимать несколько байтов и сохранять их в объекте, к которому я также прикреплю заголовок с контрольной суммой.

Так что, если этот пакет будет поврежден, у меня нет, где сказатьон стал счастливее, так как контрольная сумма также будет изменена, верно?

Так может кто-нибудь сказать мне, как я должен использовать контрольную сумму?

Ответы [ 4 ]

2 голосов
/ 09 сентября 2010

Контрольная сумма могла быть изменена, но шансы на ее изменение в соответствии с контрольной суммой измененного содержимого невелики.

Итак, когда вы читаете пакет, вы вычисляете новую контрольную сумму для содержимогои сравните его с контрольной суммой, хранящейся в упаковке.Если они совпадают, коррупции нет, в противном случае что-то было изменено (либо содержимое, либо контрольная сумма, либо оба).

0 голосов
/ 31 августа 2012

2-е дополнение контрольной суммы передается вместо самой контрольной суммы.Получатель накапливает все байты, включая 2-х контрольные суммы.Если ошибки нет, содержимое аккумулятора должно быть равно нулю после накопления дополнения до 2 байта контрольной суммы.

0 голосов
/ 09 сентября 2010

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

0 голосов
/ 09 сентября 2010

Вы правы в том, что если ваши данные испорчены, ваша контрольная сумма может быть слишком большой - есть надежда, что они не будут испорчены таким образом, который вам не очевиден. Простой бит четности является худшим для такого рода прозрачного искажения - чем больше поле вашей контрольной суммы, тем меньше вероятность того, что ваши данные будут повреждены, и вы не заметите.

...