プロトコルとは

れまで、度たび登場してきた「プロトコル」という用語について、ルールや規格と同じような意味だと簡単に説明してきましたが、インターネットではとても重要な仕組みになります。

あらためて、本項でしっかり学習していきましょう。

プロトコル(protocol)は医療用語などにも使われていますが、コンピュータの世界では、

ネットワーク上で通信を行う際の手順や規格

を意味します。

といってもイメージしにくいので、外交を例にしましょう。

国際会議の場で様々な国同士が議論する場合、どの国も自国の言語を使っていたのでは、互いに意思疎通ができません。そこで「英語」という共通語を使用することで円滑に議論が進行します。

それと同じで、インターネットのように多数のコンピュータやデバイスが接続されたネットワークでは、異なるコンピュータ同士が通信し合うための共通の「言葉」が必要になるのです。

それがプロトコルです。

そのため、プロトコルがなければ通信することができません。また、プロトコルは「英語」のようにひとつを決めればいいというわけではなく、さまざまなプロトコルが存在し、それぞれの組み合せで通信しています。

昔、コンピュータの世界には「英語」のような共通語がありませんでした。

各メーカーがそれぞれ独自のプロトコル(プロトコルを含めた通信の仕組み)で通信していたために、異なるメーカーの機器同士では通信がうまくできなかったのです。

そこで、世界的にプロトコルの標準化が進められ、

OSI参照モデル

と呼ばれるISO(国際標準化機構)などによって定められたプロトコルの設計モデルが策定されました。

異なる機種間でも通信ができるように標準的な通信モデルを策定し、メーカーには、このモデルに従ってプロトコルを構成してもらうようにしたのです。(ISOを反対にしてOSIと覚えれば覚えやすいと思います)

OSI参照モデルでは、プロトコルの役割に応じて、7つの階層に分割して通信の手順をモデル化しています。

詳しくは後述しますので、まずは階層を分ける意味について知っておきましょう。

よく使われる例として、私たちが普段使っている「電話」に例えてみます。

電話では、お互い「人間の言葉」で伝達するだけで、電話機が音声を電気信号に変換してやりとりしていることなど意識する必要がありません。同様に、電話機の方からしても人間が何語で何をしゃべろうと関係なく、電気的な処理を行っているだけです。

つまり、異なる階層において、その階層のルールに従って自分の役割を果たすことで通信が成り立つのです。

AさんとBさんが電話で会話しているとすると、「Aさんの声」を「Aの電話機」に電気信号として渡し、電話機から「Aの電話局」に信号を渡し、そして「Bの電話局」→「Bの電話機」→「Bさん」という流れになります。

電話における音声情報の流れのイメージ図

実際はこのように情報が流れていますが、それぞれの階層で通信し合っているようにみえるということなのです。何気ないことのようですが、大きなメリットがあります。

他の階層を意識しないで担当(その階層)の仕事に専念すればよい

からです。

ネットワーク環境では、あるプロトコルが全てを兼ねた仕事をするわけではなく、分野ごとに階層化され、それぞれの仕事に専念することで通信が成り立っているのです。

OSI参照モデルは、ネットワーク上を流れる物理的な電気信号から、アプリケーションソフト(ユーザー)が直接扱うデータまでの流れを7階層に分けています。

OSI参照モデル
階層 名称 特徴
第7層 アプリケーション層 アプリケーションソフト間での通信を規定(SMTPHTTPFTPなど)
第6層 プレゼンテーション層 データ形式に関する規定(文字コードや画像形式など)
第5層 セッション層 通信の開始/終了に関する規定(コンピュータ間のコネクションや切断など)
第4層 トランスポート層 通信の品質を確保するための通信手順を規定(エラー時の再送や到着確認など)
第3層 ネットワーク層 異なるネットワーク間の通信を規定(パケットのルーティングなど)
第2層 データリンク層 同じネットワーク内の通信を規定(フレームの送受信の規定など)
第1層 物理層 接続のための物理的な規定(ケーブルやインターフェース、伝送速度など)

第1層から上位層になるにしたがって、機械的な階層から人間的な階層になって行きます。重要なのは、下位の階層が上位の階層の基盤になっているということです。

私たちが普段使用している「メールソフト」や、インターネットを閲覧するための「ブラウザ」などのアプリケーションソフトは、このモデルにしたがって通信しています。

データを送信する時は、第7層 → 6 → 5 → 4 → 3 → 2 → 第1層とデータが渡されていき、データを受信する時には、逆に第1層から順に第7層まで、データが渡されていきます。

メールソフトは、一見するとメールソフト同士が直接やり取りをしているように見えますが、実際は、第7層 → 第1層の手順でメールのデータを送り出し、第1層 → 第7層の手順で受信しています。

この階層化によって、さらに多くのメリットがあります。

通信環境の変化や不具合等で通信システムに修正が必要になった場合でも柔軟に対応することができるようになります。

該当する階層だけを修正すればよい

からです。

また、通信に障害があった場合など、下位層から順に原因を調べていけば、どこに原因があるのか突き止めやすくなるというメリットもあります。

ただし、OSI参照モデルは「仕様」ではなく、あくまで「指針」であるため、すべてのプロトコルや機器等がOSI参照モデルに準拠しているとは限りません。

実際、一部のプロトコルや規格に関しては、OSI参照モデルのどの層に属するかについて異なる見解があったりします。(詳しくは次項で学習します)

余談ですが、私はOSI参照モデルを、上から頭文字だけとって「アプセットね、デブ」と覚えました。意味不明ですが語呂がよく不思議と頭から離れません。

では、OSI参照モデルのそれぞれの階層についてみていきましょう。

物理層(第1層)

その名のとおり、ケーブルやインターフェース(詳しくは、インターフェースとは を参照してください)の物理的な形状や、伝送速度などを規定した層になります。

最も機械的な層で、実際にデータが流れるケーブルの規格やコネクタの形状などを規定しています。代表的な機器には、回線を単純に中継する「リピータ」や、複数の回線を集約し中継する「リピータハブ(HUB)」と呼ばれる装置があります。

リピータHUBは、高性能のスイッチングHUBとは異なり、接続された機器すべてにデータを送信します。送信不要な機器にも一斉にデータを送信する単純な装置になります。

データの流れでみると、0と1のビット列を電気信号や無線などに変換し、伝送するための手順が定義されています。

すなわち、ビット列の信号をケーブルなどの通信媒体に実際に乗せる役割を担っており、単純に上位層から下りてきたビット列を物理的に通信可能な信号に変換して流します。

逆にデータを受け取る場合は、受け取った信号を0と1のビット列に戻して、上位層に渡します。

データリンク層(第2層)

同じネットワーク内の通信を規定した層になります。

具体的にはLANのネットワークのことで、有線LANの規格であるイーサネットは、代表的なデータリンク層のプロトコルになります。(詳しくは、LANWANとは を参照してください)

同じネットワークという言い方をしているのは、異なるLANとの接続は規定していないということです。ひとつのLANの中だけの通信方法を規定し、異なるLANへの接続には関与しません。

少しややこしいですが、まずLANを構築していく過程から理解すればわかりやすいでしょう。

例えば、5台のパソコンをLANで接続する場合、LANWANとは で学習のとおり、集線装置であるHUBを中心にスター型に5台が接続される形式となります。この場合、HUBによって集線され、5台繋がった状態でひとつのLANになっています。

では、さらに台数が増えてきた場合はどうでしょうか。HUBにはポート数(差し込み口)に限界があるので、数十台にもなると接続できずにあふれてしまいます。

そうなった場合には、また別のHUBでグループを形成し、そのグループ同士を接続することになります。すると、異なるグループでも接続することによってひとつのLANとなります。こうしてLANの台数をどんどん増やしていくことが可能になります。

何が問題になるのかというと、LANの中にもこうしたグループが存在するということです。

このLANの中のグループのことを、

セグメント

と言います。

セグメントは、使い方によって解釈が異なる微妙な用語なのですが、この場合、ひとつのHUBがまとめているグループがセグメントになります。異なるセグメント同士を接続することによって、全体としてひとつのLANとなり、広い意味で同じセグメントとなります。

データリンク層では、同じネットワークでデータが届く範囲を規定しています。つまり、同じになったセグメント同士は第2層の通信が可能になります。

逆に言うと、同じLANでも論理的にセグメントを分離している場合は通信できなくなります。(VLANという仮想的にLANを分離する技術など)そのため難解になってくるのですが、第2層の通信が届く範囲を同じネットワーク(セグメント)だと考えてください。

第2層の通信は、

MACアドレス

を使って通信します。

MAC(マック)アドレスとは、NIC(ニック)と呼ばれるネットワークカード(ネットワーアダプタやLANカードとも言う)やHUBなどのネットワーク機器に割り当てられたその機器固有の識別番号のことです。

NICというのは、下図のようにパソコンに組み込まれたネットワーク接続用の部品のことです。このパソコンの場合は、有線(イーサネット用)のネットワークアダプタと無線(Wi-Fi用)のネットワークアダプタの2つが備わっています。

「アダプターの設定の変更」画面のイメージ

MAC(マック)アドレスは、機器の製造段階で書きこまれ、48桁の2進数を16進数に置き換えて「00-1E-5B-74-1C-13」などと表されます。(16進数について詳しくは、2進数と10進数と16進数 を参照してください)

MACアドレスの左半分がメーカー番号、右半分をそのメーカー内の識別番号にすることで、世界で1つだけ(ユニークと言う)のアドレスになります。

IPアドレスというユーザーがNICに割り当てるアドレスもありますが、これはネットワーク上の識別番号であり、自由に変更することができます。一方、MACアドレスは機器固有の不変の番号になります。(IPアドレスについては後述します)

イーサネットなどの第2層のプロトコルでは、同じセグメント内にあるパソコンAからパソコンBへ通信する場合、BのIPアドレスによって通信するのではなく、BのMACアドレスによって通信します。

なぜIPアドレスを使わないのかというと、やや難解な仕組みを理解する必要がありますが、ざっくり言うと、MACアドレスは番地まで特定できる住所であるのに対し、IPアドレスは地域までしか限定できない住所だからです。

同じネットワーク内では、どこにどの機器が接続されているかという情報を第2層の機器が把握(登録)しています。この情報がMACアドレスなのです。

データの流れでみると、インターネットなどの「異なるネットワーク」から伝送されてきたデータが、同じネットワーク内までやってくると、MACアドレスによって機器が特定されて伝送されてくることになります。

このように第2層の機器は、MACアドレスをみて選択的にデータを送り出しています。第1層のリピータHUBは、接続されているすべての機器にデータを送っていましたが、第2層の機器は、接続された機器のMACアドレスを学習して(登録して)、必要なポートにだけデータを送信します。

これらの機器は「ブリッジ」や「スイッチングHUB」と呼ばれています。どちらも、セグメント同士を中継する機器になりますが、同時にMACアドレスによるデータの選択的な転送を行っています。

ブリッジとスイッチングHUBの違いは、簡単に言えば、ブリッジにHUBの機能を備えた機器がスイッチングHUBになります。単純にポート数が多く、現在ではほぼスイッチングHUBが使われています。

スイッチングHUBの機能によって、ネットワーク全体に無駄なデータが流れないため、トラフィック(ネットワークを流れるデータ量のこと)を軽減する効果もあります。(中継している別のセグメントにデータを流さないなど)

スイッチングHUBは、第2層の「Layer2」から「L2スイッチ」とも呼ばれます。同様に第2層の通信を「L2通信」と呼んだりします。

L2通信の概念図

L2通信では、データ(0と1のビット列)を「フレーム」という単位で扱います。データをフレームにまとめて物理層に渡すわけですが、中身は上位層から受け取ったデータにMACアドレス情報を付加してまとめた(カプセル化と言う)イメージです。

後述しますが、上位のネットワーク層では、前項で学習した「パケット」単位でデータを扱います。おおまかに言うと、ネットワーク層から受け取ったパケットにMACアドレス情報を足したものがフレームになります。

ネットワーク層(第3層)

異なるネットワーク間の通信を規定した層になります。

異なるネットワークとは、異なるLANと同義で、第2層の通信が届かない範囲にあるネットワークになります。論理的に分離されたセグメントのLANや、遠隔地にあるLANなどは異なるネットワークになります。

また、インターネットへの接続も異なるネットワークへの接続であり、インターネット接続も含まれます。

インターネットはこれまでの学習のとおり、LANLANを繋いだ異なるネットワークの集合体であり、インターネットの通信を規定した第3層は、最も身近で重要な層であると言っても過言ではありません。

したがって、ネットワーク層の大きな役割は、

異なるネットワークの宛先に正しくデータを送り届けること

になります。

すなわち、前項で解説した「ルーティング」になります。ルータがネットワーク同士を接続していると学習しましたが、ルータが第3層で異なるネットワークを中継する機器になります。

ネットワーク層での通信は、

IPアドレス

が使われます。

IP(アイピー)アドレスは、NICにユーザーが任意で付与することができるアドレスで、ネットワーク上の識別番号になります。(NICにはMACアドレスとIPアドレスの2つのアドレスが設定されることになります)

MACアドレスとの役割の違いは前述のとおりで、IPアドレスによって異なるネットワークという地域へデータが伝送されて行き、その地域に入ったらMACアドレスによって特定の住所に届けられます。

同じネットワークから異なるネットワークへデータを伝送する場合、その中継地点にあるルータが、送られてきたデータのIPアドレスをみてルーティングを行います。

IPアドレスは、バージョンによる違いはありますが、32桁の2進数を8桁ごとに10進数に置き換えて「192.168.1.1」などと表されます。

そもそも、異なるネットワークというのは、このIPアドレスの体系が異なるLANのことになります。詳しくは次項以降で学習していきますが、IPアドレスには原則的な付与ルールがあり、通常は番号体系の同じ機器同士でしか通信することができません。

そのため、L2スイッチで中継できるセグメントは、同じIPアドレス体系のネットワークということになります。

L2通信はMACアドレスで通信するのでIPアドレスは関係ないのではという疑問が当然出てきますが、MACアドレスとIPアドレスを対応させる必要があるため、詳しくは割愛しますが、通常、IPアドレス体系が異なるLANをL2スイッチで中継することはできません。

整理するために、またLANを構築していく過程から考えてみましょう。

例えば、部門やフロアごとにHUBで接続されたセグメントが形成され、こうしたセグメントをL2スイッチで接続していくことで同じセグメントのLANを広げていきます。

つまり、L2スイッチだけでLANを大きくすることが可能です。しかし、多くの企業などではそのようなLANは構築しません。なぜなら、すべてが同じネットワーク(同じセグメント)になると、障害発生時に影響がすべてに及ぶリスクがあるからです。

そのため、ネットワークの利用目的などによってセグメントを分ける構成が一般的になっています。例えば、営業部のLAN(A)と、総務部のLAN(B)に分けるようなイメージです。

L2通信は同じセグメントまでしかデータは届かないので、例えば総務部のシステム(B)に障害があった場合でも、営業部のシステム(A)には影響しない(可能性が大きい)というわけです。

仮に、AとBが同じIPアドレス体系だった場合、L2スイッチで中継するとすべて同じセグメントになって繋がってしまいます。

そのため、異なる体系のIPアドレスを割り当てる必要があります。そうすることでセグメントが異なるLANとなり、ルータで中継することで、選択的に通信を行うことが出来ます。

ルータは、設定によってネットワーク間で通信できる機器を限定したり、遮断したりすることができるからです。こうした設定によってセキュリティを確保することが一般的になっています。

またルータ以外にも、ルーティング機能を持ったスイッチングHUBで接続することもあります。こうしたHUBは「L3スイッチ」と呼ばれ、L2スイッチと区別しています。

L3通信の概念図

基本的にルータは外部のネットワークと接続する場合に使われ、L3スイッチは内部で分離したLANのセグメントを中継する用途で使われます。そのため、上図のような社内のセグメントを中継する場合はL3スイッチが利用されます。(ここではあくまでルータに焦点を当てています)

また、詳しくは次項で学習しますが、IPアドレスも世界で一つだけのユニークな番号になります。「IP」というのは「インターネット プロトコル(Internet Protocol)」のことで、インターネットの最も基本的なルールを規定した第3層のプロトコルになります。

トランスポート層(第4層)

ネットワーク層で実現した異なるネットワークとの通信の品質を保証するための層になります。

地味に思われるかもしれませんが、非常に重要な仕事を担っています。こちらも次項で学習しますが、トランスポート層の代表的なプロトコルには、「TCP」や「UDP」などがあります。

その仕事の内容も次項で学習しますので、本項では、そもそも通信の品質を保証しなければならないのはなぜか、ということを知っておきましょう。

宅配便であれば確かに届けたと言う伝票が残ります。しかしデータの場合は、荷物と同じではありません。

なぜなら、パケットという小さい単位のデータを大量に送り付け、送信先で組み立てるような仕組みだからです。膨大なパケットのひとつが欠けても正しく送信できていないことになります。

つまり、インターネットではこうしたパケット欠損などのトラブルが起きるということなのです。

その理由は、

インターネットがベストエフォート型のサービス

だからです。

ベストエフォートとは、簡単に言うと「善を尽くすが結果に責任は負わない」サービスのことです。インターネットは世界中に広がる巨大なネットワークであり、そもそも品質を保証することなどできないのです。

そのため、宅配便とは異なり、データの伝送経路の途中で何かがあって、データが欠けるようなことがあっても責任をとってくれるサービスではありません。

また、現在ではほとんどのLANがインターネットと同じIPプロトコルによって構築されているので、LANにおいても同様の仕組みとなっています。こうした環境の中で、通信の品質を保証するための取り組みがトランスポート層の主な仕事になります。

わかりやすい例をあげてみます。

パケットを破棄する

品質とは真逆のことのようですが、パケットが破棄されなかったらどうなるでしょうか?

ベストエフォートの環境だけに、パケットがルーティングを続けていくうち、何かの原因で目的地に到着せずに同じ経路を周回してしまうことがあるのです。

これを「ループ」と言います。もしループしたままのパケットが消えなかったら、ネットワーク上にパケットが永遠に残り続けることになるのです。そうしたパケットによって回線のスピードも遅くなり、積もり積もってインターネットがパンクしてしまうかもしれません。

そのため、パケットは一定回数のルーティングを経ると自動的に消去されるようになっています。トランスポート層の仕組みは、インターネットというネットワーク基盤を守っているのです。

さて、この第4層までで通信の基礎が整い、異なるネットワークでの通信が可能になります。第4層までをしっかり理解しておけば、以降の学習はとてもスムーズに進みます。

第1層から第4層までを「下位層」、第5層以上は「上位層」と呼びます。上位層では、下位層で確立された通信によるデータの「中身」を規定しています。

ただ実際には、上位層の全てを1つのプロトコルで定めている場合が多いので、簡単な解説に留めておきます。

第5層「セッション層」は、その名のとおりセッション(通信の開始から終了まで)を規定し、アプリケーションソフト間での通信ができるようにします。

第6層「プレゼンテーション層」は、セッションでやり取りされるデータの表現方法やコードなどを規定する層で、例えば、異なる文字コード体系におけるセッションなど、それらの相互変換を行なったりします。

最上位である第7層「アプリケーション層」は、ユーザーが直接操作する具体的なサービスを規定しています。例えば、メール送信(SMTP)やウェブページの閲覧(HTTP)、ファイル転送(FTP)などのプロトコルを規定しています。

最後に、Webブラウザでウェブページを閲覧する場合を例に、これらの7層のデータの流れを確認しておきましょう。

WWWとは で学習のとおり、ウェブページが表示される仕組みは、WWWサーバにウェブページの表示要求を出し、WWWサーバからページのデータを送信してもらい、そのデータをブラウザに読み込んで表示します。

ブラウザにURIを入力してアクセスするだけのことですが、こうした行為でもデータはそれぞれの階層を流れていきます。

第7層:URIHTTPプロトコルを指定「http://www.~」

第6層:表示する文字コードの決定

第5層:ブラウザのセッションの確立

第4層:確実な通信環境の確保

第3層:異なるネットワークへの通信

第2層:同じネットワーク内の通信

第1層:ネットワークへ電気信号にしてデータを流す

といった流れになります。

実際に流れるデータは、下図のようになります。

OSI参照モデルのデータの流れ概念図

このように、各層で処理がされると、その処理した情報はヘッダとして付加されていきます。この処理をカプセル化と言いますが、下位層に進むにつれてヘッダが増えていきます。

逆に、受信したときは上位層に進むにつれてヘッダを外していきます。

また、階層によってデータの呼び方も変わってきます。重要なのは「パケット」ですが、階層によって呼び方が変わることを知っておいてください。

すべて覚えておく必要はありませんが、これらの用語は今後も出てくる用語になります。ネットワークを理解する上では重要な知識になるので、興味のある方はぜひ覚えてみてください。

これで、なんとなくネットワーク通信のイメージができたでしょうか?

少し専門的で難解になってしまいましたが、本項で理解しておく必要はありません。それぞれ順を追って詳しく学習して行きますので、ここでは漠然とイメージできていれば問題ありません。

更新履歴

2008年7月25日
ページを公開。
2009年5月6日
ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
2018年1月26日
ページをSSL化によりHTTPSに対応。
2022年7月6日
内容修正。

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

文献
図解入門 インターネットのしくみ
異なるNWへの通信は本当にL2スイッチで出来ないのか
https://qiita.com/seigorou/items/5e80ed5e42b0873a70dc
MACアドレスとIPアドレスの役割の違い~なぜ両方必要か?~
https://milestone-of-se.nesuke.com/nw-basic/grasp-nw/ethernet-ip-address/
単一L2スイッチの配下にVLANを使わずに複数のIPサブネットを収容する
https://rc30-popo.hatenablog.com/entry/2020/04/19/164910