プロトコルについて

Network

プロトコルとは何か

プロトコルとはインターネットのお約束事を指す言葉です。最も有名なお約束はInternet Protcolである「IP」であり、現代のインターネットの基板であるTCP/IPとして使用されています。

インターネットでは特にこれを使いなさい、という法律はありません。なぜならインターネットとは開けた世界だからです。

ですが、ものづくりには基本的に決まり(規定)が存在します。電波では電波法、家電の場合は電気用品安全法、建築なら建築基準法に沿って設計が行われます。

インターネットの世界ではそのような取り決めが厳しく規制されていません。つまり、自由にシステムデザインができるわけですが、重大な欠点(デメリット)も存在します。

もし仮に、世界中のエンジニアが好き勝手アプリケーション(ここではソフトウェアをイメージしてください)を設計したらどうなるでしょう? おそらく互いに通信ができずに、実質意味のないスタンドアローンなアプリケーションが出来上がることでしょう。お互いが知らない言語で会話するような状態を想像してみるとわかり易いかもしれません。

このような有象無象の事態を避けるために、インターネットではプロトコルを使用します。全てのプロトコルは通信仕様が定義され、それが開示されることによって共通化を実現しています。つまり、これが設計のお約束というわけです。

暗黙の了解としてのデファクトスタンダード

その中でも特に使用頻度が高いもの、この通信と言ったらこのプロトコルでしょ、というようなエンジニアの共通認識であるプロトコルを、デファクトスタンダードと言います。その最たる例が、先の述べたTCP/IPとなります。

また、動画や電話の場合はUDP、WEB通信ではHTTPなどがデファクトスタンダードとなります。決して規定されてはいないため、これらの通信には別のプロトコルを使うこともできますが、インターネットの世界ではこの場合はこのプロトコルが当たり前、みたいな暗黙の了解があります。

そのため、暗黙の了解であるデファクトスタンダードとなっているプロトコルを考慮して、世界中のアプリケーションは設計されています。(ちなみに、移り変わりの無い通信業界では、以前まで使っていたプロトコルが時代遅れになってしまうことが良くあります)

プロトコルを覚えよう

ここまで述べてきたとおり、ネットワークには約束事(プロトコル)という明確な共通認識があるため、その仕様を把握していなければなりません。

プロトコルは基準や範囲を決める、というレベルを超えて動作仕様(そのプロトコルがどのような振る舞いをするか)を明確に定義されています。つまりこういうことです。

・ポジティブに捉える:知ってしまえば設計が可能
・ネガティブに捉える:知らなければ何もできない

ネットワークを学ぶことはプロトコルを覚えることと同義になります。そのプロトコルが同様に動くのか、それを見極めることがネットワーク習得の近道となるでしょう。

プロトコルは誰が決めるのか

インターネット技術は、IETF(Internet Engineering Task Force)という団体が標準化を管理・進行を務めています。
※詳しく知りたい方のために(https://www.ietf.org/about/introduction

IETFは、インターネット技術の標準化と運用に関する技術事項をまとめた情報を、RFC(Request for Comments)と呼ばれる文書形式で公開します。

現在では、RFCで公開されたデータがプロトコルの仕様を明確に定義するようになっているため、RFCの公開が対象のプロトコルを決めていると捉えても問題ないでしょう。

RFCには他にもインターネット技術を標準化するために様々な活動を考慮しています。詳しく知りたい方はJPNICの説明を読むことをお勧めします。https://www.nic.ad.jp/ja/newsletter/No24/090.html

まとめ

プロトコルによって現代のネットワークの世界は形成されています。
昔はここまで交通整理がされていなかったため、色々と大変だったそうです。

現代のネットワークには、一種の交通整理として、プロトコルを統一的に使用するネットワーク・モデルが存在します。

そして代表的なネットワーク・モデルをOSI参照モデルと呼びます。これにより、それぞれのプロトコルが連携し合うきれいな仕組みに作り替えられました。

OSI参照モデルに関しては次の記事で紹介します。