プロトコルについて

プロトコルについて調べる機会があったので覚書。

仕事をしていると、FTPTCPと言った言葉が出てくることが多々ある。

これらは様々な技術の名称になるのだが、その中にある「P」が今回のプロトコル(Protocol)になる。

ではプロトコルとは何か。
ぼんやりと、なにかしらの通信を行う際の約束事という事は理解しているのだが、改めて説明をと求められると上手く表現できない。

なにはともあれwikiを確認してみる。
通信プロトコル - Wikipedia

通信を行うためには、通信に参加するもの同士の間で、あらかじめ通信に関する規格を定めなければならない。

理解通りの言葉だが、相変わらずぼんやりしたまま。


何か実例に置き換えないと理解が深まらなさそうなので、実例を考えてみる。

wiki通り手旗信号でも良いのだが、あえて「のろし」で考えてみたい。

のろしは煙を使って合図を出すので、「煙を使う」と言うことが約束事に該当するのだろうか。

色々考えたがいまいちピンとこなかったのでclaudeに聞いてみたところ、個人的に一番しっくりくる回答が貰えた。


以下にのろし通信プロトコルの図がある。


まずは送信側が白煙1回で「通信を開始したい」と言う合図を送る。
これを中継地点を通じて受信側が確認する。

その後、受信側から受け取り準備完了の合図として、赤煙1回を送る。

ここまでが通信開始の約束事。

これを受けて、送信側が実際の内容を送る。
内容は例えば以下のような合図。
 - 短い煙2回:「平和」
 - 長い煙1回:「危険」
 - 短い煙1回+長い煙1回:「援軍要請」

これらの合図も、内容としての約束事。

受信側は最後に緑煙1回を送ることで、送信側に受信側が内容を受け取ったことが伝わる。
これらの一連の約束事がプロトコルという事になる。


wikiに記載されていた4つの構成要素も以下のように説明が出来る。

  • 伝送路の物理条件

 これは間違いなく「煙」が該当するだろう。

  • 伝達

 通信開始の合図がこれに該当するだろう。図には記載されていないが、終了の合図も決めておけば、受信側が不必要にのろしを待つようなことも無くなる。

  • 相手の特定

 これも図には記載されていないが、例えば合図の開始を白煙1回ならA地点、白煙2回ならB地点、青煙1回ならC地点と言った形で決めておくことで、特定が可能になるだろう。

  • 情報表現

 実際の内容がこれに該当するだろう。


これら以外にも、エラー制御(霧で見えない場合:一定時間待って再送など)やタイムアウト処理などを決めておけばかなり正確に内容を伝達することが出来る。


上記のような決め事が今回調べたプロトコルに該当するものになる。
例えばTCP/IPなどでは、3ウェイハンドシェイクといった通信開始の合図があるらしい。

今までぼんやりとした理解だったが、今回調べてみて少し理解が深まったと思う。


※今回、回答を求めたclaudeは生成AIで以下から使用できます。
Claude