【図解と具体例で分かり易く】OSI参照モデルの役割、IPセットモデル(TCP/IP)との比較

OSI参照モデルとIPセットモデルとは

各種NWプロトコルはレイヤーと呼ばれるもので分類されています。このレイヤーは主にOSI参照モデルIPセットモデルが使われています。

現在主流であるTCP/IPは、IPセットモデルに基づいていますが、"レイヤー"という言葉は、慣習的にOSI参照モデルに 基づいたレイヤーを示します。このように、実用的なのはIPセットモデルだったりするのですが、会話で出てくるレイヤーはOSI参照モデルのものを指すことが多いです。

例えば、レイヤー2スイッチ、レイヤー3スイッチ、レイヤー4スイッチ、レイヤー7スイッチは、OSI参照モデルのレイヤーを示しますし、物理的に接続されていないことに起因する障害を"レイヤー1障害"と呼んだりします。

つまり、会話ではOSI参照モデルが頻繁に使われ、実装としてはIPセットモデルが頻繁に使われる、という不思議な状態なのです。

OSI参照モデルとIPセットモデルの歴史と役割

OSI(Open systems interconnection)参照モデルとは、国際標準規格(ISO)とCCITTが作成した階層モデルです。レイヤー(層)間が互いに独立することにより、レイヤー毎の個別の発展を促す役割を持っています。

例えば現在のレイヤー3の主たるプロトコルは『IPv4』ですが、このIPv4 がレイヤー2のEthernet や レイヤー4のTCP/UDPと依存関係があるのであれば、IPv6への移行は極めて困難になります。IPv6への移行に伴い、レイヤー2やレイヤー4 のあらゆるプロトコルを IPv6 へ適合させなければならないからです。

レイヤーを分けることで、Ethernet は特にレイヤー3を意識することなく(つまりIPv4であろうがIPv6であろうが関係なく)通信できますし、TCP/UDPについても同様、レイヤー3を意識することなく通信できるのです。

このように始まったOSI参照モデルですが、IPが台頭・発展し始めたとき、OSI参照モデルに則るのが難しかったのです。平たく言うと、技術発展の主体となるアプリケーション開発者が「レイヤー5から7って分ける意味ある?めんどいだけじゃん」と言い出し、レイヤー5~7は1分野のプレイヤー(=アプリケーション開発者)が担当することが多かったのです。結果、OSI参照モデルには適合しないアプリケーションばかり出来上がり、OSI参照モデルは名ばかりのものになりました。

OSI参照モデルとIPセットモデルの比較

OSI参照モデルとIPセットモデルの比較を下表に示します。

スポンサーリンク

OSI参照モデルの具体例 FTPs

極めて稀な例ですが、OSI参照モデルのすべての階層に対応しているプロトコルがあります。それは FTPs(FTP over TLS)です。これは元々OSI参照モデルに則ろうとして作ったわけではなく、TLSの登場でうまくこのモデルにハマった、というのが実情でしょう。

スポンサーリンク

OSI参照モデルの各レイヤーの詳細

各レイヤーの役割は以下の通りです。

1. 物理層

ケーブルの種類やコネクタの形状等の物理的な要件、伝送媒体(電気や光)での bit転送を行なう上でのノイズの基準値等を定義します。

具体的な実装は、UTP(Unshield Twist Pair)ケーブルの Category5e/6/6a や、光ケーブルのシングルモード/マルチモード、同軸ケーブル、STP(Shield Twist Pair)ケーブル等の種類があります。

2. データリンク層

直接、もしくはレイヤー2機器(L2スイッチ等)を挟んで接続された機器間での通信方法を定義します。具体的なビット列をどのようにするかなどの規定をしています。このレイヤーでの通信先は通信したい機器とは限らず、 ルータやL3スイッチ等のデータ転送機器の場合もあります。

実装としてはEthernetが一番有名ですが、他にPPPやPPPoE、ATM、フレームリレー等があります。

ネットワーク層は宛先まで変化してはならないですが、データリンク層はその間、いくつ変わっても問題ありません。むしろ、ケーブル等の物理的な変化を吸収するのがデータリンク層の役割です。

データリンク層は、物理層が何かによって、使えるものが限られますが、例えば光のマルチモードのOM3という種類は100Mbpsから100Gbpsまで幅広く対応しています。

3. ネットワーク層

通信したい機器(IPであれば宛先IPアドレス)への通信経路を決定します。 (ルーティングによる経路選択など)

実装はIPがデファクトスタンダードです。

スポンサーリンク

4. トランスポート層

通信元の機器と通信したい機器の間での通信ステータスを管理します。(エラー訂正、再送制御など)

実装はTCP/UDPがデファクトスタンダードです。TCPを使うかUDPを使うかは、アプリケーション層のプロトコルによって選択しますが、NTPやsyslog等、RFCでは『UDPで使うべき』とされているものであっても、TCPで設定できるソフトウェアも多々あります。(syslogやntp等)

5. セッション層

通信元の機器上と通信したい機器上の両通信プログラム間での通信手順を定義します。(通信方式、接続/切断の手順や異常時の回復手順など)

具体的な実装としては前述の通り、TLS(旧SSL)が挙げられます。

6. プレゼンテーション層

データのフォーマット変換を実施します。 (文字コードの変換等)

有名な実装はやはり前述の通り、FTPのアスキーモードです。Windowsで作成したhtmlファイルなどは[文字コードShift-JIS]と[改行コードCR+LF]になりますが、これをLinuxにFTPでアスキーモードでアップロードすると、[文字コードUTF8-JP]と[改行コードLF]に自動で変換してくれます。

この変換をしたくない場合はバイナリモードを使います。

例えば有名なFTPクライアントソフト『FFFTP』では以下のように設定ができます。

「オプション」の「環境設定」をクリックし、「転送1」をクリックすると、転送モードとして「常にアスキーモード」「常にバイナリモード」「ファイル名で切替え」の3つが選択できます。デフォルトでは「ファイル名で切替え」が選ばれています。

7. アプリケーション層

アプリケーション間で実際に行いたいことを実現するための通信手続き等を定義します。例えばwebサーバにあるhtmlファイル等をダウンロードしたいときはGETコマンドを使うのはこの層の仕事です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする