対象とするOS macOS Linux BSD 対象はUnix系OSですが、Windowsでも基本部分は変わらないと思います。なお、C言語の勉強が目的ではないのでC言語についての解説はしません。 パケットキャプチャツールのつくり方 パケット受信処理方法の違い macOSとBSDは/dev/bpfというデバイスファイルを開いて読むことでパケットを受信することができます。それに対してLinuxはsocket(2)を使います。 パケットの受信は低レベルな処理なので、どうしてもOSによって差異が生じてしまいます。そこでOSの差異を吸収する仕組みとして生み出されたものがlibpcapです。 libpcapは元々tcpdmpのために作られたライブラリです。 libpcapを使う事によりOSに関係なく統一したコードを書くことができるようになります。今回はこのlibpcapを使ってLinuxとmacOS、