Header checksumについて検索しました。昨日までは必要か不要かをコンセプトにパケット構造近辺を含めて検索エンジンで探していたのですが、送るのを前提で、どのように計算するのか?を起点に調べると、
を見るとデータを16ビットごとに分割し1の補数和を計算し、結果の1の補数がチェックサムとなるようだ。RFC1071,RFC1141,RFC1624あたりが関連している雰囲気。
昨日と重複するが整理すると、Windows2000でTCPの通信をする際に送っているパケット(構造)の、IPパケット部のチェックサムとTCPパケット部のチェックサムがおかしいかも?ということ。とあるトラブルの切り分けで、Etherealを使ってパケットをキャプチャし調べていたとき、ふと、Etherealの解析部(?)を見ると IPのヘッダのチェックサムが 0x0000 (incorrect, should be 0x***) となっていて計算されていない。さらに TCPヘッダのチェックサムには数値が入っているものの、incorrect, should be 0x*** てな具合で結果がおかしい雰囲気。気になりますよね?(^^; まだ追試してませんがIPSecの設定をしたらcorrectってなってるのでIPSecが関係しているのか?といった意味不明な状態に陥っていたのです(^^;
可能性を考えると、
(1)Etherealの計算が間違ってしないか? (可能性薄)
(2)IPヘッダのチェックサムは計算すべきか?
(3)Windows2000の仕様か?
(4)IPSecが関係しているのか?
(5)私の環境がおかしいか?(^^;
ってな具合があげられそうだ。それを受けて計算方法を探したわけだ。面倒そうだけどチェックできそうなので、暇をみつけてやるしかなかろう。で、問題は(2)なのだが、ここを見ると気になる記述があって、RFCを眺めなければならないのか?と思ったりしている夜でした。
暇をみつけて言葉だと伝わりにくいので、Etherealのデータを提示したりしないとなぁ。
関係ないが、IP Network Skillなるメールマガジンを発見。
考えふけっていたら、その他の更新をする時間が… 明日の昼か夜だなぁ。