OSI7層構造モデル

  1. この章について

    いままで泥縄式にIPプロトコルについて述べてきましたが、 そろそろ苦しくなってきたので、ここいらで少し体系的に学んでいただこうと、 この章を作りました。

    いきなり難しい用語が出てきますが、これは通信プロトコル一般を 学習するのに今や避けて通れないものになっていますので、我慢してください。

  2. OSI7層構造モデル

    OSI7層構造モデルとは、ISO(International Standard Organization −−国際標準化機構)が提唱している、Open System Interconnection (開放型システム間相互接続)のことです。

    といっても、よく分からないですね(^_^);

    要するに、通信を行うにあたって、こういった方法を取るといいことが ありますよ、という提案です。提案なので、守らなければならないという 制約もありません。でも、これをうわべだけでも知っておかないと、 後の私の説明がつらいです。実際、通信を扱った教科書の最初によく出てきます。

    OSI7層構造モデルは、以下のような階層構造を取ります。

    OSI7層構造モデル
    階層番号名称規定している内容
    アプリケーション層
    (Application Layer)
    業務に依存した処理
    プレゼンテーション層
    (Presentation Layer))
    データ表現方法の取り決め(使用する文字コードなど)
    セッション層
    (Session Layer)
    業務を開始/終了するための取り決め
    トランスポート層
    (Transport Layer)
    アプリケーション同士の電文の送受信
    ネットワーク層
    (Network Layer)
    コンピュータ同士の電文の送受信
    データリンク層
    (Data Link Layer)
    隣接したノードに1ビットを転送する
    物理層
    (Physical Layer)
    伝送路の物理特性(ハードウェア依存)

  3. なぜ構造化するのか?

    ある複雑なシステムを構築するのに、各処理を部品化(サブルーチン化) してしまえば、全体の構築がしやすくなるのはお分かりだと思います。 これと同様に、上記の各層では、自らが受け持つ機能と隣接する層との インターフェースだけを規定しています。これにより、たとえばアプリケーション 層を担当する人(=アプリケーション・プログラムを開発する人)は、 下層のこと(回線は何にするのか、転送プロトコルは何にするのか) を考慮する必要がなくなります。また、他の層のことはその部品を 買ってくるなり人からもらうなり(実はほとんどフリーだったりする) ですみます。

  4. 理想的なシステムとは?

    理想的なシステムでは、以下のような流れを取ります。

    1. クライアント・アプリケーションは、まず送るべきデータを作り、 自分が行いたい業務(ファイルを送る、メールを受け取るなど) に対応したアプリケーション層をコールします。

    2. アプリケーション層は、アプリケーションが要求する作業に対応した 手順(まずはサーバの存在を確認する、など)に従って、 プレゼンテーション層をコールします。

    3. プレゼンテーション層は、通信相手が他の国の場合は日本語を 英語に翻訳して、セッション層をコールします。

    4. セッション層は、トランスポート層をコールして、 その電文を送受信します。これにより相手側のサーバとお話をして、 相手のサーバにログインし、IDとパスワードを入力して、 サーバに接続します。相手側のサーバは、そのIDとパスワードが 正しいものであるかをチェックします。

    5. トランスポート層は、相手側のサーバとの通信を保証してやります。 エラーがあったらリトライします。実際の通信はネットワーク層を コールすることにより行いますので、サーバとの間にルータがあるとか ないとかは意識しません。

    6. ネットワーク層は、相手のサーバが遠いところにある場合は、 そこへの経路を知っているルータに対して配送を依頼します。 各ルータのネットワーク層でも、次のルータへの中継を行います。 ここは今までの講義でさんざんやったところですね。

    7. データリンク層は、次の中継機器(または最終目的の計算機) に対して1つの電文(ビット列)を送ろうとします。ここで、 物理メディア(ケーブルなど)が異なれば、各メディア用に フォーマットなどの変換を行い、対応する物理層にデータを渡します。

    8. 物理層は、自分が管轄するメディアの特性にしたがってビット列を 送受信します。実際にデータが乗るところは、金属のケーブルだったり ガラスやプラスチックの管(光ファイバー)だったり空気(電波) だったりといろいろです。

    各プロトコル層は、すぐ隣のノードの同じ層とお話をしながら通信を 成り立たせようとします。各プロトコルがここまで独立していれば、 プログラマは楽ができそうですね。

  5. ところが現実はそう甘くない

    でも、これはあくまで「そうあるべきだ」の理想論であり、 現実的には日本語→英語の自動翻訳に限っても実用化されているわけでは ありません。これら理想論を現実的にするために、TCP/IPではもうすこし 簡略化した階層を持ちます。いづれにせよ、このように階層化された プロトコルの実装(実際のプログラム)のことを、 プロトコル・スタックと呼びます。