2011-02-11 3 views
2

Согласно http://kerneltrap.org/mailarchive/linux-netdev/2007/9/23/272755, Linux не генерирует полные контрольные суммы для пакетов, предназначенных для интерфейса loopback. Я хотел бы заставить UDP контрольные суммы. Как я могу это сделать?Как я могу принудительно выполнить полный контроль над данными UDP?

+0

Зачем вам нужно проверять пакет, привязанный к локальной машине? Вы боитесь, что он будет поврежден между ОЗУ и ... другой оперативной памятью? – Borealid

+0

Нет;). Я перехватываю пакет на локальной машине, выполняя некоторую обработку, а затем отправляю ее. – Mike

ответ

0

Контрольная сумма не является обязательным для UDP, вы можете также установить его в 0.

Если вам это нужно по какой-то причине, почему бы вам не создать контрольную сумму самостоятельно? Например .:

http://www.netfor2.com/udpsum.htm

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

+0

Я бы хотел сделать контрольные суммы с помощью обычных UDP-сокетов. – Mike

0

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

Смежные вопросы