プロトコルとは

コンピュータ同士でやりとりを行うための取り決めが「プロトコル」です。 ネットワークプロトコル、通信プロトコル、通信手順、通信規約、などの呼び方もあります。 例えば、IPという単語を聞いたことがある方も多いと思いますが、IPはインターネットプロトコル(Internet Protocol)の略です。 TCPはTransmission Control Protocolで、日本語にすると通信を制御する(コントロールする)プロトコルということになります。

プロトコルはよく言語に例えられます。 例えば、日本語と英語では話が通じませんが、両方とも日本語を話したり、両方とも英語を話せば話が通じます。 言い換えると、共通言語があれば話は通じます。 プロトコルとは、機器同士が通じ合えるようにする共通言語です。

ネットワークの世界では、共通の言語があるだけでは不十分です。 誰がどのような順番でどのように通信を行うかといった、取り決め(約束事)も必要です。 例えば、HTTPでは最初にクライアントが「GET /index.html HTTP/1.0\r\n\r\n」と言うとクライアントが「/index.html」にあるコンテンツを送信してくれます。 このように、クライアントがどのようにコンテンツを要求したら良いかを知っていて、サーバがどのように要求されたらどのように応えれば良いかを知っている事がポイントです。

様々な機器が相互接続性を確保するためにプロトコルは非常に重要な役割を果たしています。 プロトコルを規定すると、同じ機器同士でなくても通信が行えるようになります。 インターネットでは、違う会社が作った機器同士が相互に通信を行えますが、これはプロトコルが決まっているからです。

インターネットの基本プロトコルはIETF(Internet Engineering Task Force)で決定されています。 決定されたプロトコルはRFC(Request For Comments)という標準文書にまとめられています。 (「Request For Comments」を直訳すると「意見求む」ですがこれには歴史的な経緯があります。 とりあえずは気にせず標準だと思ってください。)

インターネットではプロトコルは階層化されています。 インターネットで通信を行う時、ユーザは複数のプロトコルを同時に使用している事になります。 例えば、物理的な通信を行うもの、隣の機器までの通信を行うもの、経路を考えながらパケットを転送するもの、データが届いた事を保証するもの、さらにその上、といった感じになります。 具体的にホームページ(wwwページ、もしくはwebページ)を見るときに裏でどのようなプロトコルを使っているかを考えて見ましょう。 このときユーザは家でLANケーブル(イーサネットケーブル)を使ってルータにつながっているとします。 まず、ユーザのPCからルータまでイーサネットプロトコルで通信を行います。 イーサネットプロトコルは、IPプロトコルのデータをルータまで送ります。 ルータからwwwサーバまでIPプロトコルを使ってデータが運ばれ、IPパケットはTCPプロトコルのデータを運びます。 TCPプロトコルによって運ばれるデータはHTTPプロトコルによってwebページのデータを取得します。 このように、インターネットではプロトコルが入れ子構造になって利用されます。 (IPプロトコルやTCPプロトコルという表現は、Internet ProtocolプロトコルやTransmission Control Protocolプロトコルと言っていて冗長ですが、説明のためなので許してください。)

関連情報

インターネットプロトコルの背景になっているOSI参照モデルと階層化の詳細に関してはこちらをご覧ください。

インターネットで使われるプロトコルの入門としては、IP(Internet Protocol)、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)の概要を調べてみることをお勧めいたします。 これらのプロトコルとインターネットの仕組みの概要に関してはこちらをご覧下さい。