ほぼ自分用のメモ書き扱いです。
画像もなく、わかりにくいと思います。すみません。
背景:wiresharkのパケットキャプチャの勉強中に、苦戦したため。
Wiresharkの設定で、プロトコル→IPv4の設定で、Validate the IPV4 checksum if possibleに、チェックを入れた場合、wiresharkでpcapデータを閲覧すると、エラーの嵐が起こると思います。
そこで、どうしてもip headerチェックサムを取得したい場合は、以下の設定をします。
田(windows)ボタン
↓
コントロールパネル\ハードウェアとサウンド\デバイスとプリンター
↓
自分のPCで右クリックで、プロパティ→タブ:ハードウェアで
→名前:Intel(R)..つまりNIC.. 種類:ネットワークアダプター
のものを選択して、プロパティ
↓
全般タブのドライバー詳細→設定の変更
↓
Intel(R)....のプロパティのウインドウが出てくる
→詳細設定タブ→IPv4Checksum Offloadが出てくるのでDisabled
で完了です。
※WIN7の場合
原因は、本来、送信側のIP header checksumをCPUが計算するはずが、最近のPCだとCPUの代わりにNICが肩代わりしてくれるため、ダミーのチェックサムをキャプチャしてしまうため(これはNICによるIP Header Checksum Offloadの機能)
わかりやすく書くと
L3でCPUがchecksumを計算せずに、ダミーのchecksumを投げる
↓
NICドライバー(ここでwiresharkがキャプチャ)
↓
NICで、チェックサムを計算する
このため、wiresharkは、ダミーのチェックサムをキャプチャしてしまうため、計算結果の整合性がとれず、エラーの嵐になります。
逆に受信側の場合は、上記の流れの逆になるので、とくに問題なし。