はじめに
IPv6はIPv4の直面しているIPアドレスの枯渇という問題を解決するために
アドレスを拡張したものです。それだけではなく、
IPv4にはない機能である近隣探索(Plug & Playみたい)や、
不必要なヘッダの削除などがあります。
まだまだ一般的に利用されているとはいい難いのですが、
個人的に組み込みなどで使うとおもしろそうだなと思い、
それに先立ってとりあえずコードの実装のテストをFreeBSDでやることにしました。
具体的には、/dev/tap0をopenし、read/writeすることで、
FreeBSDのkernelと通信します。
/dev/tap0に対して、FreeBSDと僕のコードは次のような関係です。
+---------------+ +---------------------+
| FreeBSD | |jtcpip |
| /dev/tap0 | ----- | /dev/tap0 |
|MAC:OSが決める | |MAC:jtcpip上で決める |
+---------------+ +---------------------+
jtcpip中で/dev/tap0を開くことで、
イーサパケットをダンプすることができますので、これを基に解析していきます。
また、開きっぱなしにする必要があるので、JAVAのランダムアクセスを利用しています。