LINUX.ORG.RU

Как правильно считать tcp crc контрольку ?

 , ,


0

1
    194.226.80.66.53368 > 194.226.80.3.34083: Flags [.], cksum 0xffff (correct), seq 168, ack 44900536, win 65535, length 0
	0x0000:  4500 0028 f547 4000 4006 1f7e c2e2 5042  E..(.G@.@..~..PB
	0x0010:  c2e2 5003 d078 8523 4649 d7eb 9d69 788f  ..P..x.#FI...ix.
	0x0020:  5010 ffff ffff 0000                      P.......

На линукс tcpdump выдает 0xffff, а на вин ostinato утилита выдает 0x0000. Как правильно или где ошибка ?

Не помню (если вообще знал) как там конкретно в TCP, но вообще-то проверять CRC можно по-разному. По классике при подсчёте при проверке сообщения суммы массива «сообщение + СRC» по тому же алгоритму, что и при отправке — должен получаться 0, но там могут быть нюансы с тем, в каком виде CRC приписывается к сообщению - прямом, инвертированном, с битами в обратном порядке и т. д. В зависимости от этого может получаться не 0, а какая-то другая константа — но, главное, она должна всегда получаться одинаковой.

anonymous
()

Ошибка в «TCP checksum offload»

xpahos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.