TCP/IPスタック【TCP/IP stack】
概要
TCP/IP階層モデル
「スタック」(stack)とは「積み重ね」を意味する用語で、TCP/IPの通信モデルが複数の階層(レイヤー)を積み重ねた構造を持つことに由来する。一般に、リンク層、インターネット層、トランスポート層、アプリケーション層という4つの層で構成される。それぞれの層が独立した役割を担い、上位層は下位層の機能を利用しながら通信処理を進める。
各層の役割を簡単に整理すると、リンク層はケーブルや無線といった物理的な伝送媒体を通じたデータの送受信を担う。インターネット層は中核となる「IP」(Internet Protocol)の層で、IPアドレスを用いたパケットの経路制御が行われる。トランスポート層ではTCPやUDPによって機器間のデータ転送を管理し、アプリケーション層ではHTTPやDNS、SMTPといった個別のアプリケーションやサービスに固有のプロトコルが動作する。
データを送信する際、アプリケーションが生成したデータは上位層から下位層へと順に渡され、各層で制御情報(ヘッダ)が付加されていく。この処理を「カプセル化」と呼ぶ。受信側では逆に下位層から上位層へとヘッダが取り除かれ、最終的にアプリケーションへデータが届く。
TCP/IPスタックの役割
TCP/IPスタックはこうした各層のプロトコルの仕組みを実装したソフトウェア部品を一つにまとめたもので、WindowsやmacOS、Linuxなど主要なOSには基本的なプロトコル群が標準実装されている。開発者はソケットAPIを通じてその機能を利用することで、個別に通信処理の実装を行わなくてもアプリケーションを開発できる。
なお、一般的なTCP/IPスタックとして提供されるのはトランスポート層のプロトコルまでで、アプリケーション固有のプロトコルについてはアプリケーション側に実装される。例えば、電子メールの送受信に必要なSMTPやPOP3、IMAP4などはTCP/IPスタックとしては提供されず、メールサーバやメールクライアントは自前で実装する必要がある。ただし、システム側で利用するDHCPやDNS、NTP、および、様々な用途やアプリケーションで必要となるやHTTP(HTTPSを含む)については標準の実装をOS側が提供することが多い。
