| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > UDP checksumm |
| Автор: hawk3500 22.12.2011, 10:03 | ||
| Здравствуйте. Я формирую UDP пакет, и хочу подсчитать чексумму для него. Сниффер говорит что расчитанная мной чексумма не верна. Подскажите пожалуйста что я делаю не так. Заранее благодарен. С уважением, hawk3500.
|
| Автор: boostcoder 22.12.2011, 10:09 |
| во первых, необходимо знать, какой из http://en.wikipedia.org/wiki/Crc16 алгоритмов используется UDP стеком (снифером?) для подсчета crc. ибо их несколько. как узнать - не знаю. не задавался этим вопросом. |
| Автор: hawk3500 22.12.2011, 10:36 |
| Контрольная сумма в UDP пакете рассчитывается не по алгоритму crc16. Там сообщение дополняется нулями для выравнивания по границе слова. И рассчет производится путем последовательного суммирования слов сообщения с поразрядным дополнением, вычисленным на прошлой итерации и вычисления поразрядного дополнения к этой сумме. Добавлено через 53 секунды RFC-1071 |
| Автор: newbee 22.12.2011, 10:56 |
| Голова не варит и исходники не переваривает, но сверься с RFC на предмет: 1. алгоритма CRC 2. какие части пакета эта CRC должна считать. Ну и сравни с исходником. Помнится, поле CRC в заголовке UDP никто никогда не проверяет... |
| Автор: hawk3500 22.12.2011, 11:07 |
| проверял.Да можно выставить значение контрольной суммы в ноль и программа его пропустит,но если надо всё таки следить за инфой то она нужна.Мне по крайней мере нужна. И не CRC, а контрольная сумма! |
| Автор: hawk3500 22.12.2011, 13:40 | ||
| Спасибо всем кто отозвался на призыв о помощи. Сделал.
|
| Автор: Олег2005 23.12.2011, 16:45 |
| Псевдозаголовок подключали? Что то в коде я его не разглядел |
| Автор: SVN74 24.12.2011, 13:22 | ||
"Adler32" по моему будет лучше....
|