OSI参照モデル
通信は、階層構造としてとらえる事も出来ます。
本項では、OSI参照モデルについて説明します。
OSIと参照モデル
OSI(Open Systems Interconnection)は、通信の標準化を目指して作成されたTCP/IPとは全く異なるプロトコルです。
当時は、ベンダー(販売会社)独自のプロトコル(AppleTalk、IPX/SPX、XNS、SNA等)が主流で、ベンダーが異なると通信出来ない事が多くありました。このため、異なるベンダー間でも通信可能なように策定されたのがOSIです。
OSI参照モデルは、OSI策定の前段階として国際標準化機構(ISO)で定義されたもので、通信を7階層に分けて説明しています。
層番号 | 層名 | 説明 |
---|---|---|
7 | アプリケーション層 | プログラムとやりとりしながら、通信機器間で対話する。 |
6 | プレゼンテーション層 | 通信機器間の非互換を解消して、7層での対話を可能にする。 |
5 | セッション層 | 通信開始から終了までのセッション管理。 |
4 | トランスポート層 | エラー検知や再送等。(セグメント、データグラム) |
3 | ネットワーク層 | ルーティング等。(パケット) |
2 | データリング層 | 直結された機器間の通信。(フレーム) |
1 | 物理層 | 電圧やコネクタ等。 |
英語のLayer(レイヤー)が、日本語で層と訳されています。このため、レイヤー1、レイヤー2等と言われる事もあります。
TCP/IPがディファクトスタンダード(事実上の標準)になったため、OSI自体は普及する事はありませんでしたが、プロトコルを理解するために便利なOSI参照モデルは、今でも説明のために良く使われます。
OSI参照モデルにおける通信の仕組み
OSI参照モデルにおける通信の仕組みです。
まず、送信側から通信を送り出す際、アプリケーション層での対話をPDU(Protocol Data Unit)として生成します。例えば、対話が「GET」であれば、文字コードから「47 45 54」となります。これがプレゼンテーション層のSDU(Service Data Unit)となります。このSDUにヘッダー等を付与すると、プレゼンテーション層のPDUになります。
これを更に下層でSDUとして扱うという事を繰り返し、最後にデータリンク層で作成されたたPDUは、物理層で信号となって送信されます。
受信側では、上記と逆を行います。ヘッダー等を解釈すると同時に取り除き、上位層に渡して最終的にアプリケーション層へメッセージ等が届けられます。
TCP/IPとの対比
OSI参照モデルとTCP/IPの対比例です。
層番号 | 層名 | TCP/IP(例) |
---|---|---|
7 | アプリケーション層 | HTTP、SMTP、TELNET |
6 | プレゼンテーション層 | |
5 | セッション層 | TCP |
4 | トランスポート層 | TCP、UDP |
3 | ネットワーク層 | IP |
2 | データリンク層 | イーサネット |
1 | 物理層 | 10BASE-T |
TCP/IPは、OSI参照モデルを元に規定されていないため、完全に対比は出来ません。このため、1つのプロトコルが複数の層に跨っていたり、その層の要求を満たしていなかったりします。
物理層は、信号の取り決めや伝送距離、ケーブル、コネクタ等の規定です。規格としては、有線の10BASE-Tや無線のIEEE802.11a等があります。
ケーブルはツイストペアケーブルや光ケーブル、コネクタはRJ45やSFP等が挙げられます。
尚、物理層に対応した機器として、ハブやリピータがあります。ハブやリピータは、データリンク層以上を扱わず(MACアドレステーブルがない)信号を増幅したり変換してフレームを中継します。
データリンク層は、直接接続された機器間の通信を可能にします。簡単に言えば、フレームの作成が役割です。
データリンク層は、IEEEでは以下2つの副層に分けられています。
- ・LLC(Logical Link Control )層
- プロトコルを判別し、マルチプロトコルを実現する。
- ・MAC(Medium Access Control)層
- MACアドレス等を付与し、実際に送信する形式にする。
IEEE802.2で上位層のLLC、IEEE802.3で下位層のMAC層を規定しています。WireSharkのパケット詳細部で見ると、以下の部分が該当します。
元となるSDUを上記ヘッダーで包んで信号として物理層で送信します。
TCP/IPで使われるイーサネットIIでは、タイプ値がLLCに該当するとも言えます。WireSharkで見ると、以下の部分が該当します。
詳細は、「フレーム形式」をご参照下さい。
尚、データリンク層に対応した機器として、ブリッジやL2スイッチがあります。ブリッジやL2スイッチはネットワーク層以上を扱わず(ルーティングしない)、MACアドレスによりフレームを転送するインターフェースを決定します。
ネットワーク層は、ルーティングによって直接接続されていない機器間の通信を可能にします。TCP/IPで言えば、IPヘッダーでカプセル化してパケットを作成する部分です。
WireSharkで見ると、以下の部分が該当します。
詳細は、「パケット」をご参照下さい。
尚、ネットワーク層に対応した機器として、ルーターやL3スイッチがあります。ルーターやL3スイッチはIPアドレスを見てルーティングを行います。
トランスポート層は、必要なサービス品質に従い、通信の信頼性を制御します。信頼性が必要な通信では、再送制御等も行います。又、データが多い場合は分割する事もあります。TCP/IPで言えば、TCPヘッダーやUDPヘッダーでカプセル化する部分です。
TCPヘッダーでカプセル化されたPDUは、セグメントと呼ばれます。TCPでは、通信の信頼性はシーケンス番号やAck等で確保されています。
WireSharkで見ると、以下の部分が該当します。
UDPは、シーケンス番号やAckがありません。UDPでカプセル化されたPDUは、データグラムと呼ばれます。
WireSharkで見ると、以下の部分が該当します。
詳細は、「TCP・UDP」をご参照下さい。
セッション層は、通信開始、終了、再開等を制御します。
TCPでは、フラグのSYNやFIN等で通信開始、終了等を制御していると言えます。
WireSharkのパケット一覧部で見ると、以下のように表示されます。
詳細は、「TCP・UDP」をご参照下さい。
尚、この当たりからOSI参照モデルとTCP/IPの対比は意味がなくなってきます。
プレゼンテーション層は、機器間の非互換を吸収し、アプリケーション層での対話が正常に行えるようにします。役割の1つを簡単に言うと、翻訳です。
OSIは、異機種間での通信を前提にしているため、例えばEBCDICコードが使われている機器と、ASCIIコードを使っている機器間での通信も可能にする必要がありました。EBCDICコードで「A」は16進数でC1ですが、ASCIIコードでは41です。つまり、EBCDICコードの機器からC1で送信しても、ASCIIコードの機器では「A」と解釈しません。
このため、プレゼンテーション層によって文字コードを指定し、アプリケーション層に渡す際、必要に応じて変換します。又、圧縮形式を指定する事もあります。
HTTPでは、Content-Typeで文字コード、Content-Encodingで圧縮形式が指定出来ます。
一般的にHTTPはアプリケーション層に位置付けられますが、このようなプレゼンテーション層の役割も一部果たしているとも言えます。
尚、Content-Typeで指定するのはMIMEタイプ(Multipurpose Internet Mail Extensions)と呼ばれ、メール等でも利用されています。text/html、image/png、text/css等により、転送されるファイルがどのメディア(HTML、PNG画像、CSS等)であるかを指定出来ます。
アプリケーション層は、プログラムにメッセージやデータ等を渡します。
HTTPをWireSharkで見ると、GET等でWebサーバのデータを要求します。
Webサーバ上で動作しているプログラムは、GETに応答してブラウザ上に表示するためのテキストや画像データ等を送信します。
データが多い場合はセグメントを分割し、受信側で組み立てます。その後、圧縮されていればその形式に従って解凍する事でHTML文書となり、ブラウザで表示可能になります。
補足
RFC1122では、インターネットプロトコルスイートとして以下の4階層に分類しています。
層番号 | 層名 | プロトコル等(例) |
---|---|---|
4 | アプリケーション層 | TELNET、FTP、SMTP |
3 | トランスポート層 | TCP、UDP |
2 | インターネット層 | IP、ICMP、IGMP |
1 | リンク層 | イーサネット |
TCP/IPを階層構造で示す際は、こちらの方が分かり易く、適切と言えます。