Как TCP разгрузка сетевого адаптера приводит к тому, что контрольная сумма TCP становится недействительной?

tcpdump pcap, экспортированный и исследуемый на другой машине с wirehark, показывает много неверных сообщений контрольной суммы TCP. Это известный и документированный феномен при использовании функции разгрузки TCP: https: //wiki.wireshark. org / TCP_Checksum_Verification

Единственное, что неясно, это , почему контрольная сумма неверна?

Контрольные суммы TCP вычисляются для всего сегмента TCP с помощью псевдозаголовка и с использованием значения временной контрольной суммы всех нулей в процессе вычисления контрольной суммы ( http://www.tcpipguide.com/free/t_TCPChecksumCalculationandtheTCPPseudoHeader-2.htm#Figure_218 ). Затем псевдоголовок отбрасывается. Где закрадывается разница?

-1
задан 12 May 2016 в 04:15
2 ответа

Сегмент TCP находится в оперативной памяти компьютера. Он содержит все поля, необходимые для сегмента TCP.

Когда используется разгрузка контрольной суммы TCP, при передаче сегмента происходит следующее:

ОС заполняет каждое поле в сегменте TCP в памяти, ЗА ИСКЛЮЧЕНИЕМ для контрольная сумма. Поле контрольной суммы не вычисляется ОС, оно содержит все данные, которые были ранее в этой ячейке памяти.

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

Когда ОС отправляет сегмент на сетевой адаптер, оборудование сетевого адаптера затем выполняет вычисление контрольной суммы и помещает вычисленную контрольную сумму в конкретное поле сегмента TCP. Эта контрольная сумма никогда не просматривается ОС или инструментом захвата.

Это причина, по которой Wireshark сообщает об этих ошибках.

4
ответ дан 5 December 2019 в 18:57

Потому что контрольная сумма вычисляется сетевой картой, а не операционной системой.

Вики-страница, на которую вы ссылаетесь, объясняет это:

Если вы захватываете на недавнем Ethernet NIC, вы можете увидеть много таких «ошибок контрольной суммы». Это связано с тем, что разгрузка контрольной суммы TCP часто реализуется на этих сетевых адаптерах и, следовательно, для пакетов, передаваемых машиной. Контрольная сумма не будет вычисляться до тех пор, пока пакет не будет отправлен аппаратным обеспечением NIC, спустя много времени после того, как ваш инструмент захвата перехватил пакет из сетевого стека.

7
ответ дан 5 December 2019 в 18:57

Теги

Похожие вопросы