OSI参照モデルはネットワーク通信を7つの層へと分解します。この層はネットワーク問題の特定に役立ちます。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
開放型システム間相互接続(OSI)モデルは、国際標準化機構(ISO)が作成した概念モデルであり、さまざまな通信システムが標準プロトコルを用いて通信できるようにしています。わかりやすく言えば、OSIが提供するのは異なるコンピューターシステムがお互いに通信できるようにするための基準です。
OSIモデルはコンピューターネットワーキングにおける共通言語と考えることもできるでしょう。通信システムを7つの抽象化した層に分割し、各層が前の層に積み重なるという概念に基づいています。
OSI参照モデルの各層は特定のジョブを処理し、上下の層と通信します。DDoS攻撃は、ネットワーク接続の特定の層を標的とします。アプリケーション層攻撃は第7層、プロトコル層攻撃は第3層と第4層を標的とします。
現代のインターネットは厳密にOSIモデルに従っているわけではありませんが(よりシンプルなインターネット・プロトコルスイートのほうに従っています)、それでもOSIモデルはネットワーク問題のトラブルシューティングにおいて非常に便利です。それがインターネットにノートPCを接続できない個人であろうと、数千のユーザーによってダウンしたWebサイトであろうと、OSIモデルを利用することで問題の分析や原因の特定に役立ちます。問題がモデルの特定の層に狭められるのであれば、多くの不要な作業をやらずにすむのです。
OSIモデルの7つの抽象層は、上から順に次のように定義することができます。
これは、ユーザーからのデータと直接やり取りする唯一の層です。Webブラウザやメールクライアントなどのソフトウェアアプリケーションは、アプリケーション層に依存して通信を開始します。ただし、クライアントソフトウェアアプリケーションはアプリケーション層の一部ではないことを明確にする必要があります。アプリケーション層は、ソフトウェアがユーザーに意味のあるデータを提示するために依存するプロトコルとデータ操作を担当します。
アプリケーション層プロトコルには、HTTPとSMTP(Simple Mail Transfer Protocolは、メール通信を可能にするプロトコルの1つです)が含まれます。
この層は、アプリケーション層で使用できるようにデータを準備することを主に担当します。言い換えると、第6層は、アプリケーションが消費するデータを提示可能にします。プレゼンテーション層は、データの変換、暗号化、および圧縮を担当します。
通信を行う2つの通信デバイスは異なるエンコーディング方法を用いている場合があります。そのため第6層は受信データを受信するデバイスのアプリケーション層が理解できるシンタックスに変換する責任があるのです。
デバイスが暗号化接続を介して通信している場合、第6層は送信者側での暗号化の付与および受信者側での暗号の復号化を担い、アプリケーション層に暗号化されていない読み取り可能なデータを表示できるようにします。
最後に、プレゼンテーション層は、第5層に配信する前にアプリケーション層から受信したデータを圧縮する役割も果たします。これにより、転送されるデータの量を最小限に抑え、通信の速度と効率を向上できます。
これは、2つのデバイス間の通信の開始と終了を担当する層です。通信が開かれてから閉じられるまでの時間は、セッションと呼ばれます。セッション層は、交換されるすべてのデータを転送するのに十分な時間、セッションが開いたままになるようにし、その後すぐにセッションを閉じて、リソースの無駄を防ぎます。
セッション層はまた、データ転送とチェックポイントを同期します。たとえば、100メガバイトのファイルが転送されている場合、セッション層は5メガバイトごとにチェックポイントの設定ができます。52メガバイトが転送された後に切断またはクラッシュが発生した場合、最後のチェックポイントからセッションを再開できます。つまり、転送する必要があるのは、あと50メガバイトのデータだけです。チェックポイントがなければ、転送全体を最初からやり直す必要があります。
第4層は、2つのデバイス間のエンドツーエンド通信を担当します。これには、セッション層からデータを取得し、第3層に送信する前にセグメントと呼ばれる塊に分割することが含まれます。受信デバイスのトランスポート層は、セグメントをセッション層が消費できるデータに再構成します。
また、トランスポート層はフロー制御やエラー制御も担当しています。フロー制御では、高速接続の送信者が低速接続の受信者を圧倒してしまわないように最適な転送速度を判断します。受信データが完全であることを確認したり、そうでない場合は再送信を要求したりすることで、トランスポート層は受信者側でのエラー制御を行っています。
トランスポート層プロトコルには、Transmission Control Protocol(TCP)と、User Datagram Protocol(UDP)があります。
ネットワーク層は2つの異なるネットワーク間のデータ転送を円滑に進めます。通信する2つのデバイスが同じネットワーク上にある場合、ネットワーク層は不要です。ネットワーク層は送信者側のデバイスではトランスポート層から受け取ったセグメントをより小さなパケットと呼ばれる単位に分割し、受信者側のデバイスではこのパケットを再度組み立てます。また、ネットワーク層はデータが目的にに達するまでの最適な物理パスを検出します。これをルーティングと呼びます。
ネットワーク層プロトコルには、IP、 Internet Control Message Protocol(ICMP)、Internet Group Message Protocol(IGMP)、IPsecスイートがあります。
データリンク層はネットワーク層と非常に類似していますが、この層は同じネットワーク上にある2つのデバイス間のデータ転送を円滑に進めます。データリンク層はネットワーク層からパケットを受け取ってさらに小さなフレームと呼ばれるかけらに分割します。ネットワーク層同様、データリンク層もイントラネット通信内のフロー制御やエラー制御を行います(トランスポート層が行うのは内部ネットワーク通信におけるフロー制御やエラー制御のみです)。
この層にはケーブルやスイッチなどデータ転送に関わる物理機器が含まれます。また、データがビットストリーム、つまり1か0の文字列に変換されるのもこの層です。双方のデバイスの物理層は、どちらのデバイスでも1と0の区別が付けられるよう、信号に関する協定に同意しなければなりません。
人間が読み取れる情報が、1つのデバイスから別のデバイスへネットワークを介して送信されるためには、送信デバイスではOSI参照モデルの7つの層を上から下へ、受信デバイスでは下から上へと、データが移動することになります。
例:クーパーさんはパルマーさんにメールを送信したいと考えています。クーパーさんはラップトップのメールアプリケーションでメッセージを作成し、「送信」を押します。彼のメールアプリケーションは、このメールメッセージをアプリケーション層に渡します。アプリケーション層は、プロトコル(SMTP)を選択し、データをプレゼンテーション層に渡します。その後、プレゼンテーション層はデータを圧縮し、セッション層に到達して通信セッションを初期化します。
そのデータは送信者のトランスポート層に到達し、そこでセグメント化されます。その後、これらのセグメントはネットワーク層でパケットに分割され、さらにデータリンク層でフレームに分割されます。データリンク層は、これらのフレームを物理層に配信します。物理層は、データを1と0のビットストリームに変換し、ケーブルなどの物理メディアを介して送信します。
パルマーさんのコンピューターが物理メディア(自分のwifiなど)を介してビットストリームを受信すると、データはデバイスの同じ一連の層を逆方向に流れます。最初に、物理層はビットストリームを1と0からフレームに変換し、データリンク層に渡します。データリンク層は、フレームをネットワーク層のパケットに再構成します。ネットワーク層は、トランスポート層のパケットからセグメントを作成し、セグメントを1つのデータに再構成します。
その後、データは受信者のセッション層に流れ込み、受信者のセッション層はデータをプレゼンテーション層に渡し、通信セッションを終了します。その後、プレゼンテーション層は圧縮を解除し、生データをアプリケーション層に渡します。その後、アプリケーション層は、人間が読み取れるデータをパルマーさんのメールソフトウェアに送ります。メールソフトウェアを使って、パルマーさんはラップトップの画面上でクーパーさんのメールを読むことができます。