🌐

OSI参照モデルの有害性

2022/06/15に公開

10分で解説動画
https://www.youtube.com/watch?v=9TAUTikQX7s

はじめに

ネットワークの勉強をしましょう

OSI参照モデル

OSI参照モデルに関して、昔ちょっと悩んでいた時があったが、ちょっとした事で迷いが無くなったので
悩みポイント等を説明する

image.png

まず、よくOSI参照モデルの説明でTCP/IPやプロトコルとの対比図があり、実際に一般的な書籍でも
OSIの4層のトランスポート層はTCP/IPのトランスポート層で TCPやUDPプロトコルの事である
といった記載がされる

OSIのトランスポート層はエラー訂正や再送信、データの並び替え等を行うとあるが、UDPにはそれらの機能はない
OSIのセッション層では、エンド間の接続、接続の回復、接続の終了が規定されているが、TCPではハンドシェイクで接続と終了を行う
UDPはトランスポート層を満たしていない、TCPはセッション層の一部を実装しているのではないか??

また、プレゼンテーション層はデータの変換(文字コード変換、暗号化、圧縮)を行うが
例えばHTTPでは文字コードの変換をアプリケーション層で行っているし、暗号化はトランスポート層で行われる事もある

また、先ほどの図は一例にすぎず、区分けが異なるものも多く存在する

などなど、色々考えるとわからなくなってくる(特にアプリケーション層とプレゼンテーション層、セッション層とトランスポート層)
ところが次の一言で悩みが全てとけた

TCP/IPは OSI参照モデルに則って作られていない

そのため、実務的には、TCP/IPの4層モデルを基準に考える方が良い。
ただし、OSIのモデルは今でも概念としては使われており、L2スイッチ、L3スイッチ、L4スイッチ、L7スイッチと名前だけ残っている
実際には
L2 = TCP/IPのネットワークインタフェース層
L3 = TCP/IPのインターネット層
L4 = TCP/IPのトランスポート層
L7 = TCP/IPのアプリケーション層

と思えば良い
ただし、情報処理のテストではOSI参照モデルは出てくるので、試験対策には覚える必要がある

以下は、TCP/IPモデルで説明する

ネットワークインタフェース層

OSI参照モデルの、物理層(L1)、データリンク層(L2)に だいたい相当する
イーサネット、PPP、Wifi、ARP等が該当
物理的な規格を表す
トークンリング、フレームリレー、FDDI等も存在する

物理層(L1)の機器としては、リピーター、リピーターハブ(通称バカハブ)がある
リピーターは、電気入力を修復してそのまま同じデータを全員に伝える
データを受けたPCは自分宛てのパケット以外は捨てる

データリンク層(L2)の機器としては、スイッチ、スイッチングハブ(L2スイッチ)がある
リピーターと異なり、MACアドレスを見て、宛先だけにデータを送る

隣接するPC同士でしか通信が出来ない(ネットワークを超えられない)
MACアドレスで識別し
Ethrnet IIフレームフォーマットで送信される
image.png

インターネット層

OSI参照モデルのネットワーク層(L3)に だいたい該当する
IP(v4,v6)、ICMP、IPSec等が該当する
ネットワークを超えパケットを送信する事ができる

インターネット層の機器としては、ルーター、L3スイッチ等が存在する

IPアドレスで互いのPC(ネットワークカード)を識別する(アプリまでは識別しない)
IPパケットフォーマットで送信される

EtherIIフレームワークのデータ部分にパックされる

image.png

トランスポート層

OSI参照モデルのトランスポート層とデータリンク層の一部が だいたい該当する
TCP、UDP等が該当する
OSIとかなり概念が異なる部分となっている

ポート番号で識別され、エンドポイント(アプリケーション)まで識別する

TCPは、セッションの開始、終了やエラー訂正、再送信、パケットの順番の制御等を行うため
OSIのトランスポート層とセッション層の一部(接続の回復等は含まない)を満たしている
つまり、TCPはお互いに接続を行い、データが正しく送受信される事を保証する
その為、UDPに比べると速度が遅い

UDPは接続を行わず、エラー訂正、再送信、パケットの順番も保証されないので
OSIでいうとトランスポート層もセッション層も満たしていない
速度が必要で、データの保証がさほど必要でない用途に使う
また、マルチキャストやブロードキャストが可能である
用途としては、音声や映像のストリーミング、IP電話など

image.png

TCPヘッダ(Wikipediaより)
image.png

UDPヘッダ(Wikipediaより)
image.png

アプリケーション層

OSIのプレゼンテーション層、アプリケーション層、(セッション層)にだいたい該当する
Webサーバ、メールソフト等のアプリケーション全般が該当する
また、TCP/IPのアプリケーション層では、通信プロトコル(HTTP、SMTP、FTP・・・)も含まれる

OSI参照モデルに対する批判

上記でみるように、OSI参照モデルは現実せかいに即していない
そのため、TCP/IPと対比させて考えると私のように長年混乱をする事になる
だが、各種情報処理試験では、あえてTCP/IPと対比させて問題が出たりするので厄介だ

階層化の有害性

Layering Considered Harmful というのがRFC3439でも言われている
https://datatracker.ietf.org/doc/html/rfc3439

私と同じように、基本理念の異なるTCP/IPに関して、OSI参照モデルと対比させる事に怒ったエンジニアが
上記のRFCを書いた
実質インターネットの覇権をとったTCP/IP vs 自分たちを標準と言い張るOSI との対立だ!

上記のプロトコルを見てわかるとおり
EtherIIフレームの中にIPパケットのヘッダが入り、その後TCPのヘッダが入り、その中にアプリケーション層のプロトコルとデータが実装される
このように階層が増えれば増えるほど、速度も遅く、データも効率が悪くなり、複雑化してしまう

そして私も、この有害性により、長年の間TCP/IPとOSI参照モデルとの対比に関して悩んでいた

結論

OSI参照モデルとTCP/IPは基本理念が異なり、対比させるべきではない
OSIはテスト勉強には必要だが実務では考えない方が良い。かわりにTCP/IPの4階層を使う
ただしL2、L3、L4、L7という言葉だけ残っているのでそれぞれTCP/IPのレイヤーとして覚える
L2=ネットワークインタフェース層、L3=インターネット層、L4=トランスポート層、L7=アプリケーション層

Discussion