一般に,プロトコルはプログラムあるいはネットワークのインターフェースで決められる. 例えば,2つのプログラムが通信する場合,それぞれの送信/受信データに約束事が決めら れる.二つのプログラムのインターフェースは,それぞれのデータが担う.
プロトコルをしっかり決めると,入り口と出口を規約通りに作ればよい.中身は設計者の 自由にできる.また,他のプログラムのことに関心を払う必要もない.
2つのプログラムが協働して情報の伝達を行うことは,人間同士の会話による情報伝達と 似ている.人間同士での会話では,双方が理解できる同じ言語を使って情報伝達を行うの と同様に,コンピューターのプログラム--サーバーとクライアント--も同じ言語で話さ なくてはならない.
その言語の仕様みたいなものが,アプリケーションプロトコルである.インターネットで サービスを行うサーバープログラムでは,このプロトコルがきちんと決められている.例 えば,WEBの文書はW3Cと言う組織が決めている.クライアント,およびサーバーのプログ ラムを開発する場合,このプロトコルを守らなくてはならない.守らないプログラムは, どんなに良くてもだれも使わないだろう.
これら,さまざまな方法で通信可能な場合,それぞれに合わせて,コンピューター間の接 続方法を決めていては,手間;コストがかかる.たとえば,5種類のケーブル,3種類の通 信機器,8種類のソフトウェアーがあると,合計 種類の接続の組み 合わせがある.これでは大変である.また,新しい技術が開発される都度,新たに仕組み を考えなくてはならない.
ネットワークの機能をモジュール化することにより,これらの問題が解決できる.それぞ れの階層--ここの例ではケーブル,通信機器,ソフトウェアー--で入り口と出口の規格 を決める.要するに,入り口と出口のみを決め,それを守ればどのような機器,ソフトウェ アーも使えるようにするのである.コンピューターの通信では,通信の入出力は通信のプ ロトコルとして決められている.
ネットワークの機能のモジュール化では,OSI参照モデルがよく引き合いに出される.そ れを表1に示す.ネットワーク必要なものがモジュール化されて いることが分かる.上位と下位の層(モジュール)では,データの受けた渡し方法をきちん と決める.
このOSI参照モデルは,各種の試験によく出題される.「物でねーと, せっかくのプレゼントもありがたくない」と覚えるとか [].
層(レイヤ) | 役割 | |
第7層 | アプリケーション層 | プログラムのAPI.アプリケーション間のデータのや りとりを行う. |
第6層 | プレゼンテーション層 | データ翻訳/変換.プロセスで扱うデータの型や符 号を,共通のものに変換あるいは逆変換する. |
第5層 | セッション層 | 通信プログラム同士がデータの送受信を行なうための仮想 的な経路(コネクション)の確立や解放を行なう. |
第4層 | トランスポート層 | 相手まで確実に効率よくデータを届けるためのデータ 圧縮や誤り訂正,再送制御などを行なう. |
第3層 | ネットワーク層 | 相手までデータを届けるための通信経路の選択や,通信 経路内のアドレスの管理を行なう. |
第2層 | データ層 | 通信相手との物理的な通信路を確保し,通信路を流れるデータ のエラー検出などを行なう. |
第1層 | 物理層 | データを通信回線に送出するための電気的な変換や機械的な作業 を受け持つ.ピンの形状やケーブルの特性,LANカードなども第1層で定められる. |
1975年までの暗号は全て,この共通鍵暗号方式であった.ドイツの有名なエニグマもこの 共通鍵方式であった.ただ,複雑かつ頻繁に鍵を変えていたので,なかなか暗号解読がで きなかったが,第二次大戦末期には解読していたようである.
暗号化と復号で異なる鍵を使う方法が公開鍵暗号(public key encryption system)である. メッセージを受け取りたい方は,公開鍵を公開する.この鍵は誰でも使うことができる. メッセージ(平文)を送る側は,この公開鍵で暗号化して,暗号化されたメッセージを送る. この暗号化されたメッセージは公開鍵では復号することができない.唯一,復号ができるの は受信者が持っている秘密鍵だけである.
このようなことが技術的に可能なのか?--という疑問が湧くだろう.大きな数の因数分解 が困難であることを利用したRSA暗号がこの公開鍵方式となっている.詳細は,省略.興 味のある者は調べよ.
デジタル署名では,通信の途中でデータの改ざんが分かる.デジタル署名は,次のように する.