web系の技術者にとっては当たり前に使われているプロトコルという単語について、きちんと理解して答えられる方は意外と少ないかもしれません。
似たような概念が存在していたり、広い意味で見ればプロトコルと呼べるものやそうでないものがあったりと、それらすべてを把握していると自信を持って言える人はそう多くないでしょう。
プロトコルってなに?
そもそもプロトコルとは、通信における専門的な単語ではなく、外交の場などでも使われてきました。
複数の国の人間が集まる際に、言語や文化の違う相手に誤解のないようなコミュニケーションを取る必要があり、お互い守るべき最低限の礼儀や慣習などをプロトコルと呼んでいました。
そこから転じて、通信機器間におけるルールや取り決めといった意味で使われるようになりました。
例えばWindowsとMacは異なるOSですが、問題なく通信を行うことが可能です。
これも両者が同じプロトコルをサポートしているから行えるのであり、プロトコルは様々な通信を円滑に行う手助けをしているのです。
プロトコルとAPIの違い
プロトコルと似た概念にAPIがいます。
APIはApplication Programming Interfaceの略で、異なるソフトウェアやサービス間で機能を共有したり外部とのやり取りを行えるようにするものです。
異なるもの同士の通信を可能にするという意味では同じに見えますが、APIは両者を接続させることができる機能として、プロトコルは両者を接続させるためのルールとして用いられいます。
そのため、APIは企業の持つソフトウェアやサービスの一部を公開しているのに対し、プロトコルはオープン化された規格である傾向にあります。
プロトコルには7つの層がある!
プロトコルには様々な形のモデルが存在しており、ネットワークにおけるプロトコルとしてはTCP/IPモデルが事実上のスタンダードとなっていますが、本来の標準として設計されていたOSI参照モデルに基づいて解説していきます。
OSI参照モデルは、通信におけるプロトコルを7つの階層に分けて定義しています。
1、物理層
物理層はその名の通り、光ケーブルやコネクタといった物理的な通信機器間の通信接続をする際、データを電気信号に変換するための規定がされています。
2、データリンク層
データリンク層は、直接的に接続された機器間の通信のための規定がされており、上層のネットワーク層からの要求に応じて、物理層へ要求を行います。また、どの機器か判別するための物理アドレス(MACアドレス)はここで付与されます。
3、ネットワーク層
ネットワーク層はネットワーク同士の通信のための規定がされており、その機器がどこにあるのかを示す倫理アドレス(IPアドレス)を付与します。
4、トランスポート層
トランスポート層では、機器間の通信の信頼性を確保するための規定を定めています。また、送信先のどの通信アプリケーションに対してのデータなのかをここで判別させています。
5、セッション層
セッション層では、通信プログラム間の通信の確立、維持、終了の規定を定めており、トランスポート層までの層を通ってきたデータを異なるアプリケーションで受け取らないようにしています。
6、プレゼンテーション層
プレゼンテーション層では、文字コードの規定を定めており、受信したデータが文字化けしないようにするものです。他にも暗号化や圧縮などもこの層で行なっています。
7、アプリケーション層
アプリケーション層では、ユーザが使用するアプリケーションごとの固有の規定を定めています。
なお、TCP/IPモデルとOSI参照モデルの違いとして、前者はDARPA(米国国防高等研究計画局)が、後者はISO(国際標準化機構)が作ったもので、基本的な通信間のルールを定めるという目的は共通しています。
また、TCP/IPモデルも階層に分けてプロトコルを定義しており、OSI参照モデルにおける物理層、データリンク層をネットワークインターフェイス層、ネットワーク層をインターネット層、トランスポート層をトランスポート層、セッション層、プレゼンテーション層、アプリケーション層をアプリケーション層として対応させています。
本来はOSI参照モデルの方が先に開発されていましたが、TCP/IPモデルが広く普及したことで、現在はTCP/IPモデルが事実上のスタンダードとなっています。
とはいえ、OSI参照モデルについてもしっかりと用いられているため、まずはこちらを理解しておく必要があります。
まとめ
プロトコルとは、異なる通信機器間などにおける通信を可能にする取り決めを指しています。
相互間の通信を円滑にするための最低限のルールや慣習としての役割を果たしています。
ISO(国際標準化機構)の設計したOSI参照モデルと、DARPA(米国国防高等研究計画局)の設計したTCP/IPモデルの2種類があり、OSI参照モデルでは7つの階層を、TCP/IPモデルでは4つの階層に分けてプロトコルを定義しています。
APIも同じような働きをするものですが、APIは異なるソフトウェアなどをつなぐ機能として、プロトコルはそれらをつなぐためのルールとして、認識されています。