Windows Vista RC2 → RTM の間の変更点

Windows Vista RTM (英語版) をインストールして検証を開始しました。
直前のビルド (RC2) と RTM との間では、表向きは特に違いは無いように見えますが、どうやらいろいろ解析した結果、TCP/IP スタックにおける ARP の取り扱いがちょっと妙なことになった感じがしました。


RC2 ではそのようなことは無かったはずなのですが、RTM では VistaTCP/IP スタックは ARP パケットのうち Src IP が 0.0.0.0 の ARP リクエストパケットを Gratuitous ARP として扱う (送信・受信とも) ようになっていました。


通常の OS では、ネットワークインターフェイスがある IP アドレスを使用しようと思ったとき、たとえば 192.168.1.1 を使用したい場合は、Src IP = 192.168.1.1, Dest IP = 192.168.1.1 の ARP Request をネットワークにブロードキャストします。これが Gratuitous ARP と呼ばれるパケットです。ネットワーク上にすでに 192.168.1.1 を使用しているホストがいれば、そのホストが ARP Response を返信するので、IP アドレスの重複が判明します。
たとえば Windows XP ではおおよそ 2、3 秒の間に 2 回 Gratuitous ARP を送信し、誰からも反応が無ければ、その IP アドレスの使用を開始します。


ところが、Windows Vista RTM の挙動を観測したところ、どうやら Src IP = 0.0.0.0 の ARP Request パケットを Gratuitous ARP として扱うようになったようです。Windows Vista がある IP アドレスの使用を開始する際に送信する Gratuitous ARP パケットとして Src IP = 0.0.0.0 のものが送信されます。また、受信した Src IP = 0.0.0.0 の ARP Request パケットを Gratuitous ARP パケットとして取り扱うようになったようです。


確かこの挙動は RC2 のときは無かったと思うので、RC2 → RTM の間の謎の変更点かなと思いました。