TCP/IP と OSI 参照モデル

前へ << tcpdumpでプロトコルを解析してみよう サンプルが perl5 専用なワケ >> 次へ

OSI 参照モデル

ネットワークの本を見ると必ず出てくるのが以下のような表です。 これは「OSI 参照モデル (OSI Reference Model)」と呼ばれるものです。
「OSI 基本参照モデル」(OSI Basic Reference Model) 「OSI 階層モデル」(OSI Layer Model) と呼ばれることもあります。 俗に「OSI 7層モデル」と言うこともあります。

第7層: アプリケーション層
第6層: プレゼンテーション層
第5層: セッション層
第4層: トランスポート層
第3層: ネットワーク層
第2層: データリンク層
第1層: 物理層

これは、国際標準化機構 (ISO) が異なるシステム間接続の標準を定めようと、 OSI (Open Systems Interconnection) というネットワーク構造の設計方針を決めたものです。 その中に出てくるのが上記の OSI 参照モデルです。
ここでいう OSI は、オープンソースの Open Source Initiative とは全く無関係ですのでご注意を。
OSI は政府 (特に欧州)・学者・企業がこぞって支持した規格でしたが、 実際にはあまり普及しませんでした。 理由としては、実装を考慮せずに机上で決められた規格であること、 トップダウンの中央集権的な規格であったこと、 政治的なかけひきで規格策定が進まなかったこと、 安価で入手しやすい実装がなかったこと、 などがあるのかもしれません。

一方、TCP/IP は ARPAnet から発展したプロトコルです。 4.2BSD で一般的に利用できるようになり、RFC によるゆるやかな規格と インターネットの普及に伴い爆発的な発展を遂げました。 ARPAnet は OSI 参照モデルから発展したわけではなく、全くの別物と考えてください。

当ページ管理人は OSI なネットワークに触れたことは一度もありません。 しかし古いネットワークや企業間通信ではまだ使用されているだろうと思っています。 今後は TCP/IP に移行が進むと思っていますが、OSI 事情に詳しくないので、 間違っていたら教えてください。

TCP/IP プログラミングを勉強する上で、 あえて OSI 参照モデルそのものを勉強する必要はありません。 「この処理は OSI 参照モデルの〜に相当する」ということも考えなくていいです。

ただし、

  • 情報処理試験で出題される
  • TCP/IP と OSI 参照モデルを対比させて説明されている場合がある
  • 基本的な素養として「レイヤ3スイッチ」の言葉の意味くらいはわかるようにしておきたい
という理由により軽く触れておきます。

OSI 参照モデルと TCP/IP

OSI 参照モデルと TCP/IP の対応は以下の通りです。

OSI 参照モデル   TCP/IP
第7層: アプリケーション層 第4層: アプリケーション
第6層: プレゼンテーション層
第5層: セッション層
第4層: トランスポート層 第3層: トランスポート
第3層: ネットワーク層 第2層: インターネット
第2層: データリンク層 第1層: ネットワークインタフェース
第1層: 物理層 第0層: ハードウェア

ただし、どの層を対応付けるかは人によって考えが異なります。 また TCP/IP のレイヤは確たる規約があるわけではないので名称は人によって異なる場合があります。 よって、この対応表はあくまで概念的なものと考えてください。

  • TCP/IP の「第0層: ハードウェア」の枠が点線になっているのは、 ハードウェアのレベルは TCP/IP には含まれないと考える人がおり、 当ページ管理人もその意見に賛成しているからです。
  • OSI 参照モデルの「第2層: データリンク層」「第1層: 物理層」が TCP/IP の「第1層: ネットワークインタフェース」に相当するとみなす人もいます。
  • TCP/IP の「第1層: ネットワークインタフェース」は、 「第1層: インタフェース」と表記する人もいます。

上記の図に、具体的な役割と実装例を追記したのが下図です。

OSI 参照モデル TCP/IP
第7層: アプリケーション層
アプリケーション間でのデータのやり取りを担当
第4層: アプリケーション
例: HTTP・FTP・DNS
第6層: プレゼンテーション層
データ変換 (ASCII・EBCDIC などの相互変換) と圧縮を規定する
第5層: セッション層
ログイン・ログアウトなどのセッションの手順を規定する
第4層: トランスポート層
再送・輻輳処理・ピア間の信頼性のあるエンドツーエンドの通信を担当。
第3層: トランスポート
例: TCP・UDP
第3層: ネットワーク層
ネットワークの経路選択・中継作業を担当。
第2層: インターネット
例: IP・ICMP・ARP・RARP
第2層: データリンク層
1つのネットワークに接続された複数のコンピュータ間でのデータを伝送を担当。
第1層: ネットワークインタフェース
例: Ethernet・PPP
第1層: 物理層
回線の上でデータ送受信を担当。 回線に送信する電気的な変換やピンの形状・ケーブル特性などを規定。
第0層: ハードウェア
例: UTP ケーブル・RC-232C

以下、簡単に思うところをあげておきます。

  • OSI 参照モデルの第5層: セッション層〜 第7層: アプリケーション層は、 TCP/IP ではアプリケーション層に相当する。つまり、TCP/IP においては、 個々のアプリケーションの自由度が高い、と考えられる。
  • 圧縮処理は OSI 参照モデルではセッション層が担当するが、 TCP/IP では主にアプリケーション層の担当である。ただし PPP のようにネットワークインタフェース層で圧縮する例もある。

JIS X 5003

OSI 参照モデルについてより詳しいことを知りたければ、 「JIS X 5003 開放型システム間相互接続の基本参照モデル」を参照してください。

日本工業標準調査会 の web で 「JIS 検索」ボタンを押下し、表示されたフォームの 「JIS規格番号検索」で「X5003」と入力することで PDF ファイルを参照できます。

ついでに書いておくと、OSI 参照モデルはあくまで「モデル」でしかありません。 より詳細な標準として X.200 シリーズ、X.25、X.400 シリーズ (Message Handling System: 電子メール)、X.500 (ディレクトリサービス) などが勧告されています。 また、(名前は聞いたことがあるかもしれませんが) X.509 という勧告において 証明書の形式が定められていますが、これは SSL/TLS で扱う証明書と同じフォーマットです。 このように OSI から規約を借りて TCP/IP の世界で実装することもあります。

前へ << tcpdumpでプロトコルを解析してみよう サンプルが perl5 専用なワケ >> 次へ

ご意見・ご指摘は Twitter: @68user までお願いします。