контрольная сумма tcp и разгрузка tcp - PullRequest
3 голосов
/ 23 марта 2010

Я использую сырые сокеты, чтобы создать свой собственный сокет.Мне нужно установить tcp_checksum.
Я перепробовал много ссылок, но все они не работают (я использую wireshark для тестирования).
Не могли бы вы мне помочь, пожалуйста.
Кстати, я где-то читалчто если вы установите tcp_checksum = 0.тогда аппаратное обеспечение автоматически рассчитает контрольную сумму для вас.Это правда?я попробовал это, но в wireshark tcp_checksum дает значение 0X000 и говорит tcp offload.я также читал о разгрузке tcp, и не понял, только ли wireshark не может проверить выгруженную контрольную сумму tcp, но есть правильная ??

EDIT: я понял, что если вы установите tcpChecksum в 0, тогда сетевая карта будет устанавливать его, а не операционную систему.Я тестировал с помощью Wireshark и виртуальной машины, поэтому это объясняет, почему контрольная сумма равна 0x000 (поскольку пакет даже не передается на сетевую карту.)
, но мне все еще интересно узнать о расчете tcp_checksum вручную ... любая помощьили ссылки?

1 Ответ

3 голосов
/ 23 марта 2010

Эта статья пытается объяснить, как это делается.

Еще одно место, на которое стоит обратить внимание, это исходные коды ядра Linux, начиная с файла net/ipv4/tcp__ipv4.c

...