|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alex Alexandrov 2:5030/1386.105 22 Oct 2001 11:33:40 To : All Subject : Контрольная сумма для IP --------------------------------------------------------------------------------
При вычислении контрольных сумм ( в протоколах TCP/IP ) используется
следующий алгоритм:
- начальная контрольная сумма ( 2 байта ) - 0.
- при добавлении очередного двухбайтового слова - оно суммируется с
текущей контрольной суммой и м.б. выставленным переносом от предыдущего
сложения; полученный перенос запоминается.
- в конце м.б. выставленный при последнем сложении перенос складывается
с контрольной суммой ( сумма увеличивается на 1 ); в т.ч. при этом переноса
уже не возникает. Потом сумма инвертируется, но это уже не важно.
Все это вроде называется "16-битное дополнение до единицы суммы дополнений
до единицы всех 16-битных слов в массиве".
Вопрос: есть массив, для него известна контрольная сумма. Если в этом
массиве увеличить какое-то число на N, то новая контрольная сумма м.б.
получена добавлением N к имеющейся ( не инвертированной в конце, либо
инвертированной еще раз ) контрольной сумме по тому же алгоритму ( с
учетом м.б. возникшего переноса ). А вот если какое-то число в массиве
не увеличилось, а уменьшилось - тоже наверняка можно всю сумму не
пересчитывать, но вот как ?
Alexander
--- GoldED 3.0.1
* Origin: (2:5030/1386.105)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/52893bd408d0.html, оценка из 5, голосов 10
|