Jの衝動書き日記

さらりーまんSEの日記でございます。

補講 Gratuitous arpの実装違い

 前回、ARPパケットの扱いについて書いた。本(詳解TCP/IP Vol.1 プロトコル)によると、Gratuitous arpの送り手とターゲットのMACアドレスIPアドレスは次のように設定するとある(前回載せたサンプルソースもこれでやっている)。

 だが、これだとLinuxARP応答を返してくれない。Linuxが応答するのは以下のGratuitous arpである。

 ちなみにWindowsのGratuitous arpは前者であるそうだ。このため、Linuxで設定済のIPアドレスWindowsに設定するとき、エラーとならないで設定出来てしまうトラブルもあったりしたらしい(WindowsのGratuitous arpLinuxが応答しないため)。

 ARPのRFC(826)を見たら、ターゲットMACアドレスは原則未設定だが、実装の観点で便利であるならBroadcastでもokと書いてある。一方、 Gratuitous arpのRFC(5227)を見たらsender IP addressのすべての値には、0(ゼロ)がセットされていなければならないと書いてある(問い合わせた内容でARPキャッシュが更新される可能性もあるため)。

 なので、実装的にはLinuxの方がRFCに準拠していると言えそうだ(だけど、ターゲットMACアドレスには0(ゼロ)がセットされているべきであるとなるので完全ではないけど)。