Web - TCP/IP4階層モデル
概要
インターネットで使われているTCP/IPプロトコルは、OSI参照モデルに沿っていない。
OSI参照モデルが構築される以前から実用的なネットワークとして稼働していたということや、ネットワークの普及期に多くの機種、OS、ネットワーク方式、アプリケーションが登場したことから、
OSI参照モデルのような詳細な階層分けが必要になったとも考えられる。
TCP/IPの実用化はOSI参照モデルよりも古く異なるものであるが、正しく階層化されている。
OSI参照モデルの7階層に対して、TCP/IPモデルは4階層になっており、TCP/IPが設計されたころの通信技術・ハードウェア・ソフトウェアの環境は、
今と比べれば格段に簡素なものであり、アプリケーションの数、データの種類や表現方法などが限られていたため、OSI参照モデルより単純な構成で十分であった。
TCP/IPモデルの各階層は、下表に示すような機能を規定している。
階層 | 階層名 | 説明 |
---|---|---|
4 | アプリケーション層 | アプリケーション間のやり取り |
3 | トランスポート層 | プログラム間の通信、通信の制御 |
2 | インターネット層 | インターネットワークでの通信 |
1 | ネットワークインターフェイス層 | 同一ネットワーク上での通信、ハードウェア仕様など |
TCP/IP 4階層モデル
アプリケーション層
OSI参照モデルのセッション層からアプリケーション層に相当しする。
個々のプログラムの間で、どのような形式や手順でデータをやり取りするかを定める。
文字コードや画像などの形式、暗号化など、データの表現形式などもこの層で扱う。例えば、Webや電子メールなどのアプリケーションプロトコルはこの層に属する。
トランスポート層
OSI参照モデルのトランスポート層に相当する。
通信を行うプログラムの間でのデータ伝送を実現する。必要に応じて、エラーの検出と回復や、双方向の通信路の確立なども行う。
単にデータを伝送するだけのUDP(User Datagram Protocol)、信頼性のある双方向の通信を実現するTCP(Transmission Control Protocol)はこの層のプロトコルである。
インターネット層
OSI参照モデルのネットワーク層に相当する。
複数のネットワークを相互に接続した環境(インターネットワーク)で、機器間のデータ伝送を実現する。
IP(Internet Protocol)はこの層のプロトコルである。
ネットワークインターフェイス層
OSI参照モデルの物理層とデータリンク層に相当する。
実際のネットワークハードウェアが通信を実現するための層で、各種イーサネット、無線LANなどがこの層に属する。
また、モデムや光回線などを使用して特定の相手と接続し、TCP/IPで通信するためのPPP(Point To Point)プロトコル等もこの層のプロトコルである。
OSI参照モデル | TCP/IP 4階層モデル |
---|---|
アプリケーション層 | アプリケーション層 |
プレゼンテーション層 | |
セッション層 | |
トランスポート層 | トランスポート層 |
ネットワーク層 | インターネット層 |
データリンク層 | ネットワークインターフェイス層 |
物理層 |
プロトコルスタックとソフトウェアの階層化
ネットワークに流れるデータは、プロトコルの規約に従って形式化され、適切な手順で伝送される。
このような詳細を定めるプロトコルも、このネットワーク階層に準じて階層化されている。
TCP/IP 4階層モデルでは、アプリケーションの機能を実現するためのアプリケーションプロトコル、プログラム間でデータを伝送するためのUDPとTCP、
インターネットワークで機器間の通信を実現するIPといったプロトコルが使用されている。
そして、これらのプロトコルの下位には、イーサネットや無線LANなど、物理的なネットワークシステムがあり、それに固有のプロトコルがある。
これらのプロトコルに従ってデータ伝送を実現するためには、各プロトコルに従ってデータを扱うソフトウェアが必要になる。
これらのソフトウェアもプロトコルの階層に従って階層化されている。
アプリケーションプロトコルのためのソフトウェアは、個々のネットワークアプリケーションの内部に実装され、
各種のネットワークインターフェイスの制御やプロトコルの実装はドライバソフトウェアが担当する。
そして、その間をつなぐTCP/IPは、全てのアプリケーションとネットワークハードウェアに対して共通のものなので、
オペレーティングシステムの内部に存在している。
IP、TCP、UDPなど、プロトコルごとにソフトウェアはモジュール化されている。
階層 | 担当するソフトウェア | プロトコルの例 |
---|---|---|
アプリケーション層 | アプリケーション | HTTP(Web)、SMTP(メール)等 |
トランスポート層 | オペレーティングシステム | TCP、UDP |
インターネット層 | IP、ルーティング等 | |
ネットワークインターフェイス層 | ドライバ | イーサネット、Wi-Fi、PPP等 |
例えば、モデムを使用してプロバイダに接続した場合やイーサネットと光ファイバサービスを使用して接続した場合でも同じWebブラウザや電子メールソフトが使用できるのは、
ネットワークシステムが上記のように階層化されているおかげである。
このように、必要な機能を分類してプロトコルを定義し、階層関係をつけて各プロトコルとそのためのソフトウェアを配置することを、「プロトコルの階層化」や「プロトコルスタック」という。
機能ごとにモジュールを分割し、複数のモジュールを組み合わせることで、多くの部分を共通的に使用しながら、
物理的なネットワーク方式やアプリケーションごとの機能の違いをうまく吸収することができる。