【情報処理技術者】OSI参照モデルの各階層の役割とデータの流れを理解しよう
現代のネットワークの技術は、異なるデバイス間の通信を円滑に行うため、多くの約束事によって支えられています。その中でもOSI(Open Systems Interconnection)参照モデルは、ネットワーク通信の基礎となる重要な概念です。
本記事では、OSI参照モデルの各階層の役割についても詳しく解説しますが、雰囲気だけでも掴んでいただければと思います。
概要
OSI参照モデルは、ISO(国際標準化機構)によって定義された、ネットワーク通信を7つの層に分割したモデルです。各層はそれぞれ異なる役割を持っていてデータの伝送において特定の機能を果たします。7つの階層に分けて機能を分割することにより、複雑になりがちなネットワークプロトコルを単純化しています。
ただ、実際のインターネットの運用で標準となっているのはTCP/IPと呼ばれるものです。こちらは4つの階層に分け、OSI参照モデルよりもシンプルになっています。
こちらがスタンダードであるのならTCP/IPを学べばいい気もしますが、OSI参照モデルを知ることはTCP/IPをより深く理解するのに役立つので覚えておいて損はないはずです。
OSI参照モデルの各階層は、下位(又は上位)層からデータを受け取り、それを上位(又は下位)層へ渡します。このような、階層と階層の間(”ネットワーク層とトランスポート層の間”など)で行われるデータのやりとりの約束事をインタフェースと呼びます。
それに対して、通信相手の同じ階層とやり取りする時の約束事をプロトコルと呼びます。
OSI参照モデルはあくまでもモデルであり、プロトコルの詳細について定義しているわけではありません。ですがOSI参照モデルを理解していると、あるプロトコルの詳細が分からなくてもOSI参照モデルのどの階層に当たるものなのか、という観点で役割の見当をつけることができます。
OSI参照モデルの通信処理の流れ
まず、OSI参照モデルの全体の流れを把握しましょう。
ここでは具体的に、私たちが日常的に行うWebページの閲覧を例にしてOSI参照モデルがどのようにデータを処理していくのか見ていきます。
私たちの端末側では、Webブラウザから受け取ったデータに対して、各階層ごとに様々な情報を含んだヘッダーを付与して次の階層に渡していきます。それをアプリケーション層から物理層へ順に行っていきます。
サーバー(相手側)では逆にヘッダーの付与されているデータから各階層に対応したヘッダーを外していきます。それを物理層からアプリケーション層の順で行っていきます。
上の説明を簡単なアニメーションで表現したのがこちらです。
データの呼び名は厳密には若干違いますので、なんとなく流れをイメージする事に役立てていただければと思います。
アニメーションでは現実に即した形とするため、TCP/IPモデルのようにセッション層からアプリケーション層までを1つの層としています。
現代の多くのアプリケーション層のプロトコルは、アプリケーション層、プレゼンテーション層、セッション層をまとめて一つのアプリケーションプロトコルとして標準化されています。
ちなみに、ヘッダーを付与していくこと(今回の例では私たちの端末側)をカプセル化、ヘッダーを外していくこと(今回の例ではサーバー側)を非カプセル化と呼びます。
私たちからの要求を受け取ったサーバーは、その要求に応えるデータをアプリケーション層から物理層へ同じようにカプセル化し、私たちへ届けてくれます。
余談ですが、OSI参照モデルの下位層(物理層寄り)は上位層(アプリケーション層寄り)の機能を果たすために必要不可欠ですが、上位層は常に必要というわけではありません。
そのため、例えば第3層までのプロトコルで構成されたデータも存在します。
各階層の役割
なんとなく全体の流れはイメージできたかと思います。
では、各階層でヘッダーが付与されるということですが、そのヘッダーにはどのような情報が含まれているのでしょうか?実は、このヘッダーに付与される情報は、OSI参照モデルの各階層に割り当てられた役割と深い関係があります。
ここでは、各階層の役割に焦点を当てて解説していきます。
7. アプリケーション層(Application Layer)
アプリケーション層は、利用されるアプリケーションの通信に関わる部分を定めています。
Webページの閲覧、メールの送受信、ファイルのアップロードやダウンロードなど、日常的に利用する多くのネットワークサービスを実現するために、それぞれのアプリケーションに特化したプロトコルを提供しています。
私たちユーザーと直接やり取りするアプリケーションやサービスを提供する層で、最も馴染みのある層だと言えるかもしれません。
代表的なプロトコル
- HTTP(Hyper Text Transfer Protocol)
- SMTP(Simple Mail Transfer Protocol)
- SSL/TLS(Secure Socket Layer/Transport Layer Security)
6. プレゼンテーション層(Presentation Layer)
プレゼンテーション層は、データの表現形式を管理しています。
使用しているブラウザやメールソフトなど、アプリケーション層から渡される様々な形式のデータを、ネットワークで共通のデータ形式に変換します。受け手側では、共通の形式からそれぞれのアプリケーションに適した形式へと変換を行います。
このように、共通の表現形式にしてから通信することで異なる端末間での整合性をとる事ができます。
また、データの暗号化などのセキュリティ機能もプレゼンテーション層で行われます。
5. セッション層(Session Layer)
セッション層は、通信する2つの端末間でセッション(対話の一連のやり取り)を管理する役割を持っています。
この階層までは実際にデータを転送する機能はありません。
実際のデータの転送はトランスポート層から下の階層によって、行われます。
セッションの確立
通信を開始するために、まずセッションを確立します。これは、両端のデバイスが通信を開始するための準備ができたことを確認する手順です。
セッションの管理
通信中にセッションを管理し、データの送受信を円滑に進めます。これには、通信の同期やエラーの回復などが含まれます。
セッションの終了
通信が終わると、セッションを終了します。これにより、通信で使用していた資源(メモリなど)が解放されます。
4. トランスポート層(Transport Layer)
トランスポート層は、エンド間(端末から端末)でのデータ通信の信頼性を確保する役割があります。また、端末上で複数のアプリケーションが動作している中で、どのアプリケーション同士で通信しているのかを識別するためにポート番号が使用されます。
この階層から下の階層で実際にデータ転送が行われますが、トランスポート層からデータリンク層までの役割をまとめた図がこちらです。
代表的なプロトコル
- TCP(Transmission Control Protocol)
- UDP(User Datagram Protocol)
3. ネットワーク層(Network Layer)
ネットワーク層は、データを送信元から目的地まで適切な経路で届ける役割を持つ階層です。
この階層はIPアドレスを使用して端末を識別し、ルーティングプロトコルによってデータを最適な経路で異なるネットワークにある端末へ転送します。
データリンク層で接続できている複数のネットワーク同士をつなぎ合わせて遠くの端末まで届けるイメージを持つと良いかもしれません。
トランスポート層がアプリケーションを特定するのに対して、こちらはデータリンク層とともに端末を特定して届ける役割があります。
代表的なプロトコル
- IP(Internet Protocol)
- ICMP(Internet Control Message Protocol)
2. データリンク層(Data Link Layer)
データリンク層は、同じネットワークにいる端末を識別し転送する役割があります。
この階層はMACアドレスを使用し、同じネットワークで直接接続された機器同士を識別してデータのやりとりを行います。また、物理層のみでは対処できないエラーを検出し、デジタルデータの信頼性を保証する役割もあります。
代表的なプロトコル
- Ethernet
- Wi-Fi
1. 物理層(Physical Layer)
物理層は、データを物理的な信号として伝送する役割を担います。
ビット列(0と1)のデータと電圧の高低などの変換を相互に行い、コネクタやケーブルの形状の規定もしています。
おわりに
OSI参照モデルはネットワーク通信の理解を深めるための基礎となるものだと思いますので、是非覚えておきたい概念です。私も理解が曖昧な部分もあり、なかなかすぐに理解できるものではないかもしれませんが、少しずつ覚えていきたいですね。