OSI基本参照モデルって何?
基本情報技術者試験を勉強していると、ネットワーク分野の出題範囲として、OSI基本参照モデルという単語が出てくると思います。(OSI参照モデルや、OSIモデルとも呼ばれます)
しかし、参考書の解説を読んでも結局よくわからなかった・・という方も多いと思います。業界未経験の方にとっては尚更。
このページでは、OSI基本参照モデルは何かという話から、通信の時にどのような役割をしているのかという話まで解説していきます。
プロトコルとはなにか?
OSI基本参照モデルの前に、まずはプロトコルについて理解する必要があります。
プロトコルとは、「コンピュータ同士で通信するとき、同じルールを使ってやりとりしましょうね」という決まりごとを指します。
プロトコルを言語に例えて解説してみます。
日本に住む人々は、主に日本語を使って会話をしています。日本語を知っている人は、話すこともできるし、聞いた話を理解することもできます。
しかし、日本語しか知らない人とイタリア語しか知らない人同士では、会話をすることができません。(ボディランゲージや紙に絵を書くことで意思疎通を図れるかもしれませんが、これは人間にしかできません)
コンピュータ同士の通信でも同じで、通信するときのルールを決めておかないと、お互い理解することすらできません。送られてきたデータを処理できないまま終わってしまいます。
このように、コンピュータ同士が通信するときはやり取りするデータの構造をお互いで統一しておかないと正常に処理ができないため、プロトコルを統一しなければならないのです。
プロトコルの階層化
プロトコルは用途によって何種類もあり、一回の通信で複数のプロトコルを組み合わせてデータの送受信を行っています。
- どのような信号でデータを送受信するか?
- 広いインターネットの中から、お互いのコンピュータをどうやって見つけるか?
- データがうまく受信できなかったとき、送り直すか?
などの、通信で懸念すべきことは、全て別々のプロトコルで定義されています。使うプロトコルを統一しなければ、正常に通信を行うことはできません。
でも、一回メールを送るたびに、広い範囲のルールを決めるのは非常に面倒ですよね。
ここで重要なのが、「プロトコルの階層化」という考え方です。プロトコルの役割ごとに階層化しておけば、一部のプロトコルに変更が生じた場合でも、その階層だけ変えるだけで済みます。全てのプロトコルを再定義する必要はありません。
イラストのPC同士がメールではなくチャットをする場合でも、最上階層のルールをチャットツール用に変えてあげれば、他のプロトコルはそのままでも済みそうです。
これらの階層を色々な国・メーカーで統一することで、通信の汎用性を高くしようと「OSI基本参照モデル」が生まれることになりました。
OSI基本参照モデル
OSI基本参照モデルは、スイスにある「国際標準化機構」によって作られました。先程も述べたとおり、「プロトコルを階層に分けてそれを標準化することで、コンピュータ同士の通信がやりやすくなる」という考えに基づいて定義されました。
とはいっても、これらはあくまでプロトコルを設計する時に参考にしてね程度のものであり、全てのプロトコルがこの階層に厳密に従っているわけではありません。
層 | 役割 |
---|---|
アプリケーション層 | アプリケーション固有のデータ構造を定義します。 |
プレゼンテーション層 | 特定のアプリケーションでしか読み込めない固有のデータ構造と、ネットワーク共通のデータ構造を相互に変換します。 |
セッション層 | コネクション(データ通信経路)の確立・切断などのルールを定めます。 |
トランスポート層 | ノード(コンピュータ機器自体のこと、コネクションを除く)同士で確実にデータが届いたかを判断する役割を持ちます。また、どのアプリケーションに対してデータを送信するのかも制御します。 |
ネットワーク層 | 宛先までデータを届けるための経路を作成したり、経路を作るためのアドレス管理方法などを定義します。 |
データリンク層 | 物理的に直接接続された機器同士で、データのフレーム(小分けにしたもの)の識別を行います。 |
物理層 | ビット列を電圧や光に変換します。 |
上階層からの頭文字をとって、「アプセトネデブ」と覚えることが多いです。
設計者が「新しいアプリケーションのプロトコルを作りたいけど・・データフォーマットの変換はプレゼンテーション層でやるものだから、そこは含めなくていっか!」
という具合に、プロトコルが担当する範囲を決める時の参考になりますね。
OSI基本参照モデルの通信例
OSI基本参照モデルのとおりに通信を行った場合、各層でどのような機能をするのか、流れに沿って見ていきましょう。今回の例では、チャットツールでメッセージを送った時を想定しています。あくまで例なので、参考程度に抑えておいてください。
【送信側】
- チャットにメッセージを入力し送信ボタンを押すと、本文・宛先の情報を含む、チャットツールが理解できるフォーマットのデータが作成されます。
- 本文の文字コードをUTF-8に変換します。
- 1つの送信コネクションを用いてデータを送信するということを明記した情報をデータに付けます。
- メッセージが正しく届かない場合、再送するということを明記した情報をデータに付けます。
- ネットワーク上の送信先の住所などの情報(IPアドレス等)をデータに付けます。また、ルータの識別情報もデータに付けます。
- ルーターとコンピュータ間のデータ転送ルールを明記した情報をデータに付けます。
- 1と0で表されているデータを電圧などに変換して、LANケーブルに流します。
この後、データはネットワーク上を流れ、送信先のルーターに届くことになります。
【受信側】
- 【物理層・データリンク層】LANケーブルを介してルータからコンピュータに流れてきた電圧のデータを1と0のデータに変換し、自分に流れてきたデータだと判断したら、データを受け取ります。(ここでは説明を省略しますが、インターネット上でもこの作業が繰り返されて最終的に受信側のルータに届くことになります。)
【ネットワーク層】送信側のルータから受信側のルータにデータを送り届けることを実現させています。 - メッセージが正しく届いたことを確認します。(正しく届かなかった場合は再送を要求します)
- メッセージが正しく届いたことを送信側のコンピュータに伝えます。
- メッセージの本文情報をUTF-8からチャットツールが理解できる形に変換します。
- チャットツールは送られてきたデータを分析し、メモリに格納します。
あとは、チャットツールがメモリのデータを読み込み、画面にメッセージ本文を表示して、一連の流れは終了となります。
コメント
[…] OSI基本参照モデルとは?初心者向けにわかりやすく解説hiyo-code.com2021.01.10 […]