プロトコルスタックについて

個人的な感想ですが、ネットワークエンジニアでもプロトコルスタックを意識している人は少ないと思います。
恐らくですが、通信経路を流れるパケット自体を見るが、そのパケットを生成している内部の処理は概要の把握程度でもある程度業務出来てしまうからだと思います。


といいつつも私も知りませんでしたが、実はプロトコルスタックもどうやら複数の意味があるようで・・・
一つは通信プロトコルのレイヤーの上下関係を示すもののようです。
例えば、HTTPプロトコルTCP/IPプロトコルの一種であるといったそういうもののようです。
今回取り上げたいのは別で、送受信するパケットを一時的に貯めておく領域のことを指します。

TCPUDPの場合、ネットワークインターフェースからパケットが入ってきて、ソケット(通信を利用するプログラムとTCP/UDPポートを結び付けるもの)を通ってプログラムに通信したデータが届けられます。
もしくは、その逆でプログラムが送信しようとするデータは、ソケットを通ってパケット化され、ネットワークインターフェースから送信されます。
ここでどうやらソケットとネットワークインターフェースの間に、送受信処理待ちのパケットを貯めておく領域があるようで、それがプロトコルスタックとなります。

Windows OSについては、どうやらソケットからプロトコルスタックにパケットが入るところで通信をフックするAPIが提供されているようで、そのAPIを利用したVPN製品も出てきているようです。
VPNの暗号化処理を理解する前提として、プロトコルスタックの概念を理解しないと話が分からないため、ざっくりと説明させていただきました。
ただ、筆者のうろ覚えなので調べるならもう少し掘り下げたほうがいいかもしれません。