Поиск:

Ответ в темуСоздание новой темы Создание опроса
> коды исправляющие пропадание байта 
:(
    Опции темы
nworm
Дата 19.11.2008, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Привет.

В сообщении могут пропадать отдельные байты.
Например, из 32 байтов пришло только 31.
Ворос, как закодировать сообщение, что бы потом его можно было восстановить?
 smile 
PM MAIL WWW   Вверх
SpaceSpace
Дата 19.11.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



можно продублировать сообщение. например в первом случае потеряется 1ый байт во втором - 5, так ты увидиш картину целиком. получается что трафик увеличивается в 2 раза.


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
nworm
Дата 19.11.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



А а ещё есть какие-нибудь предложения?
PM MAIL WWW   Вверх
Akina
Дата 19.11.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(nworm @  19.11.2008,  02:51 Найти цитируемый пост)
В сообщении могут пропадать отдельные байты.

Каков максимальный процент потерь?
Есть ли позиционная или иная зависимость для пропадающих данных?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ksnk
Дата 19.11.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



nworm, Вот попалось случайно smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
лцф
Дата 19.11.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 14.11.2008
Где: Подмосквич я

Репутация: нет
Всего: нет



Для общего случая такого алгоритма нет. Так как могут пострадать и исходные данные и проверочные. 
PM MAIL   Вверх
nworm
Дата 19.11.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



ksnk, а как с помощью этого восстановить именно пропавшие байты, а не искажённые
Цитата

Каков максимальный процент потерь?
Есть ли позиционная или иная зависимость для пропадающих данных? 

Это сейчас изучается.

Пока мне в принципе интересно как бороться именно с пропажей, а не с искажением байтов.

Это сообщение отредактировал(а) nworm - 19.11.2008, 18:47
PM MAIL WWW   Вверх
ksnk
Дата 19.11.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



nworm, Ну, дык, написано-же... по полученой 8-ми байтовой последовательности считать  биты четности. Сверить биты четности с записанными в 6-м байте (с 0-я считаем). Ежели один байт потерялся - восстанавливаем. Если 2 и более - кричим-ругаемся...
Восстановление - вычесть из суммы байт все правильно принятые...

Вообще-то в Гугле можно и уже готовые реализации нарыть...

Добавлено через 56 секунд
O! sorry... пропавшие нужно гуглить smile...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
SpaceSpace
Дата 19.11.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



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


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
Akina
Дата 19.11.2008, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(nworm @  19.11.2008,  19:44 Найти цитируемый пост)
как бороться именно с пропажей, а не с искажением байтов.

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
nworm
Дата 19.11.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Цитата(Akina @ 19.11.2008,  21:21)
Цитата(nworm @  19.11.2008,  19:44 Найти цитируемый пост)
как бороться именно с пропажей, а не с искажением байтов.

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

А можно подробнее?
Как вычислять вторую контрольную сумму?
PM MAIL WWW   Вверх
Akina
Дата 19.11.2008, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Да как угодно...
Например: имеется массив из 32 байтов. Один любой из них может пропасть, оставшиеся "сдвинутся, закрыв дырку", однако порядок оставшихся байтов не изменится. Для того, чтобы восстановить пропавший байт, достаточно иметь еще один байт, полученный побитным XOR всех байтов. А для того, чтобы восстановить его местоположение... скажем, это может быть стандартный CRC8, и для восстановления точки вставки вычисленного байта потребуется просто посчитать соотв. контрольные суммы для всех возможных его положений и взять совпадающее.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ksnk
Дата 19.11.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Можно из пальца насосать еще алгоритмов. Необязательно двойная контрольная сумма...

Как выделить из входного потока пакет, если есть вероятность потерять байт 
-- помечать начало пакета специальным байтом. Для подмены этого байта в теле пакета используется подмена (каламбур, господа...). К примеру, для маркера начала пакета выбран байт 0, для "второго" маркера - 0xFF, для третьего - 0xAA. Тогда 0 в теле пакета заменяем на 0xFF,0xFF , простой 0xFF в теле пакета заменяем на 0xFF,xAA. Естественно, разумнее выбрать наименее часто встречающиеся в потоке байт цифры.


-- Итого - пакет: мконтрольная сумма, номер пакета, данные пакета... при передаче первым посылаем маркер, затем подвергнутые "подмене" байты пакета. При приеме, все немаркеры прогоняем через обратную "подмену".
-- номера пакетов должны идти последовательно
-- Корректен пакет или нет - проверяется контрольной суммой. К контрольной сумме прикладываем полученные байты, пока не получим 0 - пакет получен полностью. Если получили непредвиденный маркер - пакет потерян. Если за концом пакета следует немаркер - пакет потерян
--За полностью принятым пакетом должен следовать маркер.

За группой из Х пакетов следует пакет восстановления - пакет максимальной в группе длины, после которого нумерация пакетов сбрасывается.
Пакет восстановления является суммой побайтно всех предыдущих пакетов, добитых 0-ми до максимального размера... восстанавливается отниманием всех правильно принятых.




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Akina
Дата 20.11.2008, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



ksnk
Как проверить целостность принятой информации - очевидно, и тут как раз велосипеда изобретать не надо. Простой CRC сделает это с большой точностью, вероятность коллизии очевидно мала. Только не об этом речь. 

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

Цитата(ksnk @  19.11.2008,  23:59 Найти цитируемый пост)
Пакет восстановления является суммой побайтно всех предыдущих пакетов, добитых 0-ми до максимального размера... восстанавливается отниманием всех правильно принятых.

Расскажи-ка ты мне, что будет, если в каждом пакете пропадёт по одному байту?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ksnk
Дата 20.11.2008, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Цитата

Расскажи-ка ты мне, что будет, если в каждом пакете пропадёт по одному байту? 

smile Ну, это просто. Контрольная сумма пакетов не совпадет - пакет отбросится. 2 пакета в группе ушли - группа отбросится - нужно начинать процедуру сброса канала...

Добавлено через 2 минуты и 41 секунду
Контрольный пакет - также защищен контрольной суммой.

Добавлено через 8 минут и 26 секунд
Допустимая плотность ошибок - одна на группу пакетов. Если больше - линия передачи плохая - связиста вызывать надо... smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1110 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.