Software Design 2012年6月号の『「生」ネットワークプログラミング』が妙にツボにハマって面白かったのですが、さすがにあのページ数でPF_PACKETを語ると、ついていけない読者も多くて残念かも。 ということで、参考までに概要図を書いてみました。 C言語のソケットプログラミングをなんとなく勉強した方は多いと思います。ソケットは、カーネル内部のネットワークレイヤーとユーザ空間を結びつけるインターフェース(API)なわけですが、カーネル内部では、通常、上図(右側)の流れで受信パケットが処理されていきます。 物理NICが受け取ったパケットは、デバイスドライバがL2プロトコルの処理をして、さらにL3プロトコルの種類(IPv4/IPv6などの違い)の判別まで行います。 判別した結果に基づいて、適切なL3プロトコルのハンドラーが呼び出されて、L3プロトコルの処理をして、さらにL4プロト
![PF_PACKETの仕組み - めもめも](https://cdn-ak-scissors.b.st-hatena.com/image/square/15915ba87dc7ef22d8a6173bb04162875af00768/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fe%2Fenakai00%2F20120522%2F20120522100926.png)