OSI7層構造モデルOSI7層構造モデルこの章についていままで泥縄式にIPプロトコルについて述べてきましたが、そろそろ苦しくなってきたので、ここいらで少し体系的に学んでいただこうと、この章を作りました。難しい用語が出てきますが、これは通信プロトコル一般を学習するのに今や避けて通れないものになっていますので、我慢してください。Interconnection(開放型システム間相互接続)のことです。いっても、よく分からないですね(^_^);要するに、通信を行うにあたって、こういった方法を取るといいことがありますよ、という提案です。提案なので、守らなければならないという制約もありません。後の私の説明がつらいです。実際、通信を扱った教科書の最初によく出てきます。OSI7層構造モデルは、以下のような階層構造を取ります。Layer)伝送路の物理特性(ハードウェア依存)なぜ構造化するのか?ある複雑なシステムを構築するのに、各処理を部品化(サブルーチン化)してしまえば、全体の構築がしやすくなるのはお分かりだと思います。これと同様に、上記の各層では、自らが受け持つ機能と隣接する層とのインターフェースだけを規定しています。下層のこと(回線は何にするのか、転送プロトコルは何にするのか)を考慮する必要がなくなります。他の層のことはその部品を買ってくるなり人からもらうなり(実はほとんどフリーだったりする)ですみます。理想的なシステムとは?理想的なシステムでは、以下のような流れを取ります。自分が行いたい業務(ファイルを送る、メールを受け取るなど)に対応したアプリケーション層をコールします。アプリケーション層は、アプリケーションが要求する作業に対応した手順(まずはサーバの存在を確認する、など)に従って、プレゼンテーション層をコールします。プレゼンテーション層は、通信相手が他の国の場合は日本語を英語に翻訳して、セッション層をコールします。セッション層は、トランスポート層をコールして、その電文を送受信します。相手のサーバにログインし、IDとパスワードを入力して、サーバに接続します。相手側のサーバは、そのIDとパスワードが正しいものであるかをチェックします。トランスポート層は、相手側のサーバとの通信を保証してやります。エラーがあったらリトライします。実際の通信はネットワーク層をコールすることにより行いますので、サーバとの間にルータがあるとかないとかは意識しません。ネットワーク層は、相手のサーバが遠いところにある場合は、そこへの経路を知っているルータに対して配送を依頼します。各ルータのネットワーク層でも、次のルータへの中継を行います。ここは今までの講義でさんざんやったところですね。データリンク層は、次の中継機器(または最終目的の計算機)に対して1つの電文(ビット列)を送ろうとします。物理メディア(ケーブルなど)が異なれば、各メディア用にフォーマットなどの変換を行い、対応する物理層にデータを渡します。物理層は、自分が管轄するメディアの特性にしたがってビット列を送受信します。実際にデータが乗るところは、金属のケーブルだったりガラスやプラスチックの管(光ファイバー)だったり空気(電波)だったりといろいろです。各プロトコル層は、すぐ隣のノードの同じ層とお話をしながら通信を成り立たせようとします。各プロトコルがここまで独立していれば、プログラマは楽ができそうですね。現実的には日本語→英語の自動翻訳に限っても実用化されているわけではありません。これら理想論を現実的にするために、TCP/IPではもうすこし簡略化した階層を持ちます。いづれにせよ、このように階層化されたプロトコルの実装(実際のプログラム)のことを、プロトコル・スタックと呼びます。