|
|
  |
Простой вопрос по защите данных с помощью CRC |
|
|
|
Mar 22 2011, 03:42
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
вместо addr,byte1,byte2,byte3,byte4,crc передаётся byte1,byte2,byte3,byte4,crc
при сравнении на приёме вместо addr подставляется свой адрес девайса, который девайс ессно знает.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Mar 22 2011, 08:38
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(GetSmart @ Mar 22 2011, 06:42)  вместо addr,byte1,byte2,byte3,byte4,crc передаётся byte1,byte2,byte3,byte4,crc
при сравнении на приёме вместо addr подставляется свой адрес девайса, который девайс ессно знает. Ваше объяснение ничего не объясняет. Это просто некорректная переформулировка некорректного первоначального описания. Устройство что, на шине одно, если "адрес не передается"? Если действительно так - тогда нет никакой разницы в вероятности пропуска ошибки.
--------------------
Пишите в личку.
|
|
|
|
|
Mar 22 2011, 09:01
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(GetSmart @ Mar 22 2011, 11:41)  Устройств много. А передавать адрес не обязательно, т.к. в алгоритмах девайсов с неправильным адресом CRC все-равно не совпадёт и пакет не будет "принят". Только у девайса с правильным адресом CRC совпадёт. Тогда надо значительно увеличивать кодовое расстояние. Вот с википедии характеристика CRC8: Цитата MaxLen: 15 байт (127 бит) - обнаружение одинарных, двойных, тройных и всех нечетных ошибок CRC7 будет соответственно обнаруживать одинарные, двойные и тройные ошибки ВО ВСЁМ сообщении. То есть, максимально имеем 3 бита на адрес, и при этом любая дополнительная ошибка может перевести сообщение в разряд "правильных" для неправильного адреса. В общем, подход весьма скользкий.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Mar 22 2011, 09:08
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(MrYuran @ Mar 22 2011, 14:01)  CRC7 будет соответственно обнаруживать одинарные, двойные и тройные ошибки ВО ВСЁМ сообщении. То есть, максимально имеем 3 бита на адрес, и при этом любая дополнительная ошибка может перевести сообщение в разряд "правильных" для неправильного адреса. В общем, подход весьма скользкий. Он "скользкий" так же как и сама CRC, когда незнакомый с ней человек с ней знакомится. Там всё просчитывается. Не на супер компутере, а скорее на калькуляторе. Непереданный байт адреса не является ошибкой. Потому как можно взять 8 бит адреса и так работать. Что уже противоречит ограничению в 3 бита.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Mar 22 2011, 09:26
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(GetSmart @ Mar 22 2011, 11:41)  Описание вполне ясное. Все всё поняли, кроме Oldring-а  Устройств много. А передавать адрес не обязательно, т.к. в алгоритмах девайсов с неправильным адресом CRC все-равно не совпадёт и пакет не будет "принят". Только у девайса с правильным адресом CRC совпадёт. Если устройств много, тогда передавать адрес как раз обязательно. Иначе устройства не поймут, к кому пакет адресован. И принимать обязательно. Но при расчете CRC в устройстве эти биты известны заранее. Дело нt в том, понял я или нет, дело в чёткости формулировок, необходимой для анализа. Потому что если адрес передается, то ошибки в нём точно так же приводят к неправильному приёму пакета. А дальше многое зависит от количества устройств на шине и распределения их адресов. В крайнем случае 128 устройств на шине, пакеты к которым посылаются с равной вероятностью, всё сводится просто к оценке вероятности пропуска ошибки в пакете длиной 39 бит. На самом деле, не сильно выше, чем для пакета, длиной 32 бита, особенно, если ошибки приема битов в блоке могут коррелировать. Если же устройств сильно меньше 128, то дополнительным выбором хорошего распределения их адресов можно дополнительно снизить вероятность ошибочного приема адреса.
--------------------
Пишите в личку.
|
|
|
|
|
Mar 22 2011, 09:38
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Oldring @ Mar 22 2011, 14:26)  ...Иначе устройства не поймут, к кому пакет адресован. ...Дело на в том, понял я или нет, дело в чёткости формулировок, необходимой для анализа. Это не верно. Чёткая формулировка - при отсутсвии искажений в канале связи передавать адрес не обязательно. Устройства 100% поймут кому адресован пакет. CRC содержит адрес девайса точно так же как простейшая контрольная сумма например в HEX файле, если из HEX строки убрать первый байт. При наличии ошибок вопрос стоит только в их кол-ве, при котором пакеты будут правильно приниматься. Причём относительно ситуации с присутствием адреса в пакете, то бишь классическим свойствам CRC.
Сообщение отредактировал GetSmart - Mar 22 2011, 09:38
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Mar 22 2011, 09:47
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(GetSmart @ Mar 22 2011, 11:38)  Чёткая формулировка - при отсутсвии искажений в канале связи передавать адрес не обязательно. Устройства 100% поймут кому адресован пакет. При гарантированном отсутствии помех и CRC считать смысла нет. Подал адрес, и всё! В том-то и задача, что топикстартер хочет и от помех перестраховаться, и длину передачи уменьшить. Я так не делал бы. Чем более избыточный код, тем больше ошибок будет обнаружено. Хотя, если проверка сводится к байту CRC, то как раз будет менее достоверной информация для более длинного пакета. Но дело в том, что искажения одного байта адреса менее вероятны, чем искажения по всей длине пакета. Поэтому вероятность ложного принятия чужого пакета будет меньше. Что, если из-за многобитовой ошибки устройство посчитает своим пакет, предназначенный не ему?
|
|
|
|
|
Mar 22 2011, 09:52
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(GetSmart @ Mar 22 2011, 12:08)  Непереданный байт адреса не является ошибкой. Потому как можно взять 8 бит адреса и так работать. Что уже противоречит ограничению в 3 бита. Если адрес передаваемого сообщения отличается от адреса приёмника более чем в 3 битах, CRC не выявит ошибки. Вот это я хотел сказать. Отсюда и ограничение в 3 бита адреса, не считая дополнительных ошибок. Или мы опять друг друга не поняли.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Mar 22 2011, 09:56
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(GetSmart @ Mar 22 2011, 11:51)  Даже ViKo всё понял... почему "даже"? Цитата(GetSmart @ Mar 22 2011, 11:53)  Ровно та же ситуация и с обычной CRC. Вопрос только в относительности надёжности. Не та же ситуация. Я чуть выше подкорректировал свой ответ. Зависит от длины сообщения. Здесь еще важно, что опаснее - передать сообщение не тому адресату, или передать ошибочное сообщение тому, кому нужно. Первое мне видится более тяжелым. Поэтому байт адреса я оставил бы.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|