IoTを構築する上で必要不可欠となる通信。
前回の記事では、IoTを実現するために、Wi-Fi、LPWA、セルラーといった、様々な通信規格を適切に選択することが重要であることを解説しました。
前回の記事はこちら:【初心者向け】IoT通信の仕組みを徹底解剖!基本の仕組みから、用途別比較や7つの重要指標などを分かりやすく解説
これらの通信規格は、「データがどうやって運ばれるか」という道路や運搬手段のようなものです。
しかし、単に道路や運搬手段があるだけでは、荷物(データ)が目的地に正しく届き、中身が理解されるわけではありません。
そこで登場するのが「プロトコル」です。プロトコルは、データがどのように梱包され、どのような手順で送られ、どう解釈されるかという「データ連携のためのルール」を定めたものです。
この「ルール」がなければ、たとえ同じ通信規格を使っていても、デバイス同士やシステム間で意味のある情報のやり取りはできません。
例えば、工場で温度センサーが「25度」というデータをゲートウェイに送ったとします。
この「25度」というデータが、仮にEthernetという通信規格を使って送られたとしても、それが「何月何日の何時何分に」「どの場所の」「何の設備の」「どのセンサー」の「摂氏(℃)なのか華氏(℉)なのか」といった情報が明確でなければ、受信側のシステムは正しく解釈できません。
また、「送受信の具体的な手順」もプロトコルによって定められます。
例えば、「データを送る前に、相手がデータを受け取る準備ができているか確認する」「データが大きすぎる場合は、いくつかの小さな塊に分けて送る」「データが途中で破損したら、もう一度送ってもらう」といった手順も、プロトコルのルールとして存在します。

プロトコルは、こうしたデータの意味付けや、送受信の具体的な手順を規定し、IoTシステム全体がスムーズに連携するための基盤となります。
本稿では、IoTで特に重要となる様々なプロトコルを、「通信方式」や「通信規格」との関係性に触れながら、その役割と特徴を分かりやすく解説していきます。
7つの階層で説明する「OSI参照モデル」
まずは、プロトコルを理解する上で、ネットワーク通信の国際的な標準モデルである「OSI参照モデル」を説明します。
OSI参照モデルは、国際標準化機構(ISO)が中心となり、複雑なネットワーク通信の機能を整理し、標準化するために作られたものです。
これは、特定の技術や製品に依存せず、あらゆるネットワーク通信の設計や機能を考える上での「共通の枠組み」として提唱されており、以下の7つの階層で定義されています。
①物理層
ケーブル、電波など、物理的な通信媒体を通じてデータを送受信する際の電気的、物理的な特性を定義する層で、データは0と1の信号であるビットとして扱われます。
IoTシステムにおいては、IoTデバイスとゲートウェイ間の通信規格が、この層の特性を規定します。
例えば、有線通信規格であるEthernetのIEEE 802.3シリーズは、主にLANケーブルや銅線といったUTPケーブルや、光ファイバーケーブルを使用することが規格として定められています。
また、Wi-Fiなどの無線通信規格であれば、電波を使用することが規定されており、電波の周波数帯や変調方式なども規定されています。
②データリンク層
データリンク層では、物理層での伝送路上のデータ転送を管理します。
隣接するパソコンやサーバーといったノード間でのデータ転送において、確実に届くように信頼性を確保したり、エラーを検出したり、データの量を調整したりといった役割を担っています。
例えば、カメラとゲートウェイがEthernetで接続されている場合、データリンク層ではEthernetの「MAC」プロトコルが機能します。
カメラは、撮影した画像データ(デジタル化されたビット列)を、このMACプロトコルに従って「フレーム」という単位に梱包します。
このフレームには、送信元(カメラ)と宛先(ゲートウェイ)のMACアドレスが含まれています。MACアドレスは、ネットワーク上で機器を一意に識別するための物理アドレスです。
EthernetのMACプロトコルは、例えば、複数の機器が同時にデータを送ろうとした場合に衝突を防ぐための「CSMA/CD」といったルールを定めています。これにより、カメラが送信した画像データが、物理的なLANケーブル上でゲートウェイに確実に届くよう管理されます。
また、フレームが破損していないかチェックするためのエラー検出機能もこの層で提供されます。
③ネットワーク層
ネットワーク層は、異なるネットワーク間でのデータ転送を担います。
データをパケットとして扱い、IPアドレスなどに基づいて最適な経路を決定し、宛先まで届けます。
ゲートウェイからクラウドへの広域ネットワーク通信で、中心的な役割を果たします。
例えば、工場内のネットワークに接続されたゲートウェイが、製品検査カメラの画像データや生産数カウンターのデータを収集し、外部のインターネットを経由してクラウドシステムに送信するとします。
この際、工場内のネットワークと外部のインターネットは、全く異なるネットワークです。
ここで中心的に機能するのが、ネットワーク層の代表的なプロトコルである「IP」です。
ゲートウェイは、アプリケーション層やトランスポート層から受け取ったデータをIPプロトコルに従って「IPパケット」にカプセル化します。
このIPパケットには、送信元であるゲートウェイのIPアドレスと、宛先であるクラウドシステムが稼働するサーバーのIPアドレスが付与されます。
IPプロトコルは、このIPアドレスに基づいて、インターネット上に存在する多数のルーターと呼ばれる中継機器を介して、データパケットが最終的なクラウドシステムに到達するための最適な経路を決定します。
ルーターはIPアドレスを見て、次にどのルーターにパケットを転送すれば宛先に近づくかを判断し、次々とパケットをバケツリレーのように転送していきます。
例えば、カメラから送られた画像データは、ゲートウェイでIPパケット化され、工場内のルーターを経由して、インターネットサービスプロバイダのルーター群、そしてクラウドサービスのデータセンター内のルーターを経て、最終的に目的のクラウドサーバーに到達します。
このIPプロトコルが存在するからこそ、工場という特定のネットワーク内にあるゲートウェイが、地球上のどこかにあるクラウドデータセンターのサーバーと、区別なくデータをやり取りできるのです。
その他にも、IPを補完するプロトコルである、エラーや制御メッセージのやり取りを担う「ICMP」や、IPアドレスとMACアドレスの相互変換を担う「ARP」、ルーター間でネットワーク経路情報の交換や最適な経路情報の構築を担う「ルーティングプロトコル」などが、ネットワーク層のプロトコルとして挙げられます。
④トランスポート層
トランスポート層では、データを送り届けるアプリケーション間の通信を確立し、信頼性の高いデータ転送を行います。
ネットワーク層が「データを宛先まで届ける」という「道案内」の役割を担うのに対し、トランスポート層は「目的地に到着したデータが、どのアプリケーションに確実に、正しい順序で届けられるか」を管理するイメージです。
データの信頼性やリアルタイム性の確保が重要になる場合、この層の適切なプロトコル選択が重要になります。
信頼性の高いデータ転送を行いたい場合、「TCP」が代表的なプロトコルです。
TCPは、確実なデータ通信を実現するため、通信開始前の確認作業であるコネクション確立や、データが到着したかどうかの確認応答、データ送信に失敗した場合の再送制御、そして正しい順序制御といった重要な機能を持っています。
例えば、製品検査カメラの画像データがクラウドに送られる際、途中でネットワークの混雑により一部のデータが遅延したり、一時的に失われたりしても、TCPがそれらを検知し、再送要求や順序の調整を行うことで、最終的に完全な画像としてクラウドシステムが受け取れるようにします。
トランスポート層のその他のプロトコルとしては、「UDP」というものがあります。
UDPは、TCPのようなコネクション確立や確認応答、再送制御を行わないため、オーバーヘッドが少なく高速にデータを送信することができます。
しかし、データが相手に確実に届く保証はなく、データの順序も保証されないため、データの信頼性を上位層のアプリケーションで担保する必要があります。
⑤セッション層
セッション層は、トランスポート層とプレゼンテーション層の間に位置し、アプリケーションプロセス間で通信セッションを確立・管理・終了するための準備と実行を行う層です。
具体的には、アプリケーション同士が通信を始める際に、お互いの準備ができたことを確認し、通信路を開いたり、通信中にその接続が途切れないように、常に監視し、必要に応じて再接続を試みたりします。これは、長時間データを送り続ける場合などに重要になります。
また、通信が終わったときに、使っていた接続をきちんと閉じる役割も担います。接続を終わらせないと、リソースが無駄に使われたり、セキュリティ上の問題が発生したりする可能性があるからです。
さらに、アプリケーション間の手順やルールといったやり取り(対話)の制御に加え、送信タイミングの調整をするため、対話の流れやタイミングに関する順番の管理も行います。いつデータを送るのかを決めたり、もし途中で通信が中断したときに、どこから再開するかを決めたりするといったことです。
例えば、動画をダウンロードしている途中で一時停止し、後で再開する際に、セッション層がその続きからダウンロードできるように制御します。
セッション層のプロトコル例としては、遠隔のコンピュータ上のプログラムを呼び出して実行させる機能を持つ「RPC」 の一部や、IP電話やビデオ会議などでマルチメディアセッションの接続の確立や変更、終了を制御する「SIP」などが挙げられます。
⑥プレゼンテーション層
プレゼンテーション層は、後述するアプリケーション層で扱われるデータを、互いに理解できる形式に変換したり、符号化したりする層です。また、圧縮やセキュリティ確保のための暗号化もこの層で行われます。
例えば、IoTデバイスやアプリケーション間でデータを交換する際のJSONやXMLなどのデータ形式がこの層にあたります。これらは、異なるシステムが同じデータを正しく解釈できるようにするための「共通言語」のような役割を果たします。
あるシステムが「日本語」でデータを生成し、別のシステムが「英語」でしか理解できない場合、プレゼンテーション層がそのデータを「英語」に翻訳して渡します。JSONやXMLは、その「共通の翻訳形式」にあたります。
また、TLS/SSLといったセキュリティプロトコルなども関連しています。これらはデータの暗号化を行うことで、セッション層が確立した接続上で、安全にデータがやり取りできるように準備します。
なお、プレゼンテーション層やセッション層が担う機能は、アプリケーション層に統合されているか、アプリケーションが利用するライブラリやミドルウェア、あるいはオペレーティングシステムの機能として提供されているケースも多くあります。
⑦アプリケーション層
アプリケーション層は最上位の階層で、ユーザーが直接利用するアプリケーションやサービスが、どのようにデータをやり取りするかを定義する層です。データの内容や形式、やり取りのルールを規定します。
IoTでは、センサーから収集したデータを解釈したり、クラウドにアップロードしたりする具体的なプロトコルがこの層に該当します。
例えば、IoTデバイスやクラウドサービスで実際に利用されるMQTT、HTTP、CoAPなどのプロトコルが該当し、データの意味付けや、アプリケーション連携を行います。
このようにOSI参照モデルは、7つの独立した階層に分割することで、各層の役割を明確にしました。
これにより、開発者は特定の層の機能に集中して開発を進めることができ、問題が発生した場合も、どの層に原因があるのかを特定しやすくなります。
また、モジュール化されたシステム開発のように、一部の変更が全体に大きな影響を与えにくい構造になっています。
なお、OSI参照モデルは、あくまで「参照モデル」であり、概念的なフレームワークです。
実際のインターネットで広く使われているプロトコル群は、必ずしもこの7層に厳密に分離されているわけではありません。
私たちが普段使っているインターネットの基盤となっているのは、「TCP/IPモデル」と呼ばれる別の階層モデルです。TCP/IPモデルは、より実用的な観点から機能を4つまたは5つの層にまとめています。
スマート工場における各層のプロトコル
通信技術が、いくつかの層に分かれ、プロトコルによって様々なルールが定義づけられているのがお分かりいただけたと思います。
さらにプロトコルの役割を理解するために、ここでは、スマート工場の生産ラインにおける「製品品質監視システム」を仮想の事例として、OSI参照モデルの各階層でどのようなプロトコルが機能するかを見ていきましょう。
このスマート工場のシステムでは、画像データや製品を数えるセンサーを活用して、製品の品質を管理すると定義します。
具体的には、生産された製品の画像をリアルタイムで撮影するカメラを設置し、不良品を検知します。
また、 生産ラインを流れる製品の数をカウントする生産数カウンターを設置します。
そして、これらのデバイスのデータをゲートウェイで集約し、クラウドへ送信します。クラウドシステムでは、収集された画像データや生産数を分析し、生産計画の最適化や異常通知を行います。
物理層
この事例における物理層は、製品検査カメラと生産数カウンターが取得したデータをゲートウェイに送る箇所にあたります。
活用される通信規格としては、製品検査カメラからゲートウェイに送る際には、高速な画像データを確実に送るため、工場内に敷設された有線規格であるEthernetケーブルや、高速Wi-Fi規格であるIEEE 802.11ac/axが利用されるでしょう。
これらの規格が、ビット(0と1の電気信号や電波)を物理的にやり取りするためのルールを定めています。
生産数カウンターからゲートウェイに送る際は、低頻度で少量データを送るため、低消費電力で通信ができる近距離無線通信技術Bluetooth Low Energy(BLE)や、電源供給が容易であればEthernetが考えられます。
BLEの場合は、2.4GHz帯の電波をどのように送受信するかといった物理的なルールが規定されています。
データリンク層
製品検査カメラからゲートウェイまでの通信規格に「Ethernetケーブル」を使用した場合、EthernetのMACプロトコルが機能し、カメラとゲートウェイ間のデータの送受信順序やエラーチェックを行います。
Wi-Fiを使用した場合は、IEEE 802.11のMACプロトコルが同様の役割を担います。
これにより、カメラが送信したフレームが、途中で欠損することなくゲートウェイに届くよう管理されます。
生産数カウンターからゲートウェイまでの通信規格にBLEを使用した場合、BluetoothのMACプロトコルが、カウンターからゲートウェイへのフレーム転送を制御します。
これにより、カウントデータが正しくゲートウェイに渡されます。
ネットワーク層
画像データやカウントデータを受け取ったゲートウェイは、インターネット経由でクラウドに送信します。
ここで中心的に機能するのがIPです。各データには送信元であるゲートウェイと宛先であるクラウドのIPアドレスが付与され、IPプロトコルがそのアドレスを基に、インターネット上のルーターを経由してデータをクラウドまで届けます。
カメラの画像データも生産数カウンターのデータも、この層でIPパケットとしてカプセル化され、パケットの宛先IPアドレスを確認するルーターに最適な経路を選ばれながら、クラウドへ転送されます。
トランスポート層
ネットワーク層で製品検査カメラの画像データや生産数カウンターのデータがクラウドに届けられましたが、IPプロトコル自体はデータの確実な到達を保証しません。
そこで活躍するのが、TCP(Transmission Control Protocol)です。
TCPは、データがきちんと相手に届いたかを確認し、届かなければ再送を要求することで、高い信頼性を保証するプロトコルです。
クラウド側のアプリケーションが、ゲートウェイからのすべてのデータをを抜け漏れなく、正しい順序で受け取れるように、TCPが通信を管理しています。
今回の事例における製品検査カメラの画像データや生産数カウンターのデータは、不良品を検知するために非常に重要です。画像データが途中で欠けたり、順番が入れ替わったりすると、正確な品質検査ができなくなってしまいます。
そのため、TCPを活用するのが適切でしょう。
一方、不良品が発生したことを迅速に通知したい場合、多少データが失われたとしてもUDPを選択することも考えられます。
セッション層
トランスポート層でTCPを活用した場合、工場で収集したデータをクラウドに送る際、マシン間の通信に特化したメッセージングプロトコルであるMQTT(Message Queuing Telemetry Transport)を利用するケースが多いでしょう。
その場合、セッション層では、IoTデバイス側であるゲートウェイと、クラウド側のMQTTサーバーであるMQTTブローカーとの論理的な接続を確立し、維持する役割を担います。
具体的には、ゲートウェイがMQTTブローカーに「接続要求」を送り、ブローカーがそれを受け入れてセッションが「確立」されます。
この際に、ユーザー名とパスワードによるログインなどの、ゲートウェイの「認証」も行われ、正当なデバイスからの接続であることを確認します。
セッションが確立された後は、接続が切れていないかを定期的に確認するために、小さな生存確認信号である「キープアライブ」メッセージを相互に送受信します。
これにより、ネットワークが一時的に不安定になってもセッションを維持しようと試み、長期的なデータ送信のための安定した基盤を作ります。
もし、何らかの理由でセッションが切れた場合は、ゲートウェイが自動的に再接続を試みるなど、セッション層のプロトコルがこれらの回復処理も担当することがあります。
プレゼンテーション層
製品検査カメラの画像データは、クラウド側で分析しやすいようにJPEG形式に変換されたり、生産数カウンターのデータは、数値とタイムスタンプを含むJSON形式に整形されたりします。これらのデータ形式のルールが、この層のプロトコルによって定義されます。
また、特に重要な製品検査画像や生産数データが盗聴・改ざんされないよう、ゲートウェイからクラウドへの通信経路全体でTLS(Transport Layer Security)による暗号化もこの層で行われます。
これにより、データは安全な「鍵のかかった箱」に入れられて運ばれるイメージです。
アプリケーション層
上述したように、生産数カウンターのデータは、少量データで継続的な送信が必要なため、プロトコルヘッダが非常に小さいMQTTが有力なプロトコルです。
ゲートウェイは、生産数カウンターからデータを受け取ると、MQTTプロトコルに従って、情報が何のデータかを示すラベルである「トピック」にそのデータを発行します。
クラウド側のアプリケーションは、このトピックを購読することで、リアルタイムにデータを受け取ります。購読とは、特定の情報を受け取るための意思表示や登録のことです。
一方、大容量の画像データや、Webブラウザベースの監視システムと連携する場合は、HTTPやHTTPSが利用されることもあります。
HTTPおよびHTTPSはウェブサイトの閲覧でお馴染みですが、IoTにおいても、ゲートウェイが画像をクラウドのWebサーバーに送るといった形で使われます。
このように、スマート工場の「製品品質監視システム」という一つのIoTシステムの中でも、データの種類や用途、通信の段階に応じて、各階層で異なるプロトコルが連携して機能しています。
IoT導入時にどの通信規格を活用するか検討する際、各階層やプロトコルを意識することができれば、IoTシステムの設計や運用をより効果的に行えるようになるでしょう。
無料メルマガ会員に登録しませんか?

現在、デジタルをビジネスに取り込むことで生まれる価値について研究中。IoTに関する様々な情報を取材し、皆様にお届けいたします。