ネットワークプロトコルの特徴と選定

network
  1. 組み込み制御でよく使うネットワークプロトコル
  2. 1. ネットワークの階層と役割
    1. 1-1. ネットワーク階層図
    2. 1-2. 物理層・データリンク層
    3. 1-2. ネットワーク層
    4. 1-3. トランスポート層
    5. 1-4. アプリケーション層
  3. 2. 物理層・データリンク層: 伝送技術
    1. 2-1. Ethernet
    2. 2-2. WiFi
    3. 2-3. ここでの考え方
  4. 3. ネットワーク層: IP
    1. 3-1. 概要
    2. 3-2. 組み込み制御での役割
    3. 3-3. 選定のポイント
  5. 4. トランスポート層: TCP / UDP
    1. 4-1. TCP
        1. 概要
        2. 特徴
      1. 組み込み制御での向き不向き
        1. 向いている場合
        2. 向いていない場合
      2. TCPで大変なこと
      3. TCPの実装例
    2. 4-2. UDP
        1. 概要
        2. 特徴
      1. 組み込み制御での向きどころ
  6. 5. アプリケーション層: HTTP / RTC / MQTT / CoAP
    1. 5-1. HTTP / HTTPS
      1. 概要
      2. 特徴
      3. 組み込み制御での使いどころ
      4. 例: 制御コマンドの送信
    2. 5-2. RTC(Real-Time Communication)
        1. 概要
        2. 特徴
        3. 組み込み制御での使いどころ
    3. 5-3. MQTT
        1. 概要
        2. 特徴
        3. 組み込み制御での使いどころ
    4. 5-4. CoAP
        1. 概要
        2. 特徴
        3. 組み込み制御での使いどころ
        4. よく使われているか?
    5. 5-5. そのほかの有名なアプリケーション層プロトコル
      1. WebSocket
      2. DNS
      3. DHCP
      4. FTP / SFTP
      5. SMTP
      6. IMAP / POP3
      7. SNMP
      8. NTP
  7. 6. プロトコルの選定
    1. 6-1. まずどの階層のプロトコルを選ぶのか?
      1. 設計の最初は「どの層で選択が必要か」を整理する。
      2. まずは「通信要件がどの層に影響するか」を確認する。
    2. 6-2. 階層が決まったら、次に具体的なプロトコルを選ぶ
    3. 6-3. 選定の手順
      1. 1. 要件を整理する
      2. 2. どの層の選択がボトルネックになるかを決める
      3. 3. 具体的なプロトコルを候補化する
      4. 4. 試作・検証する
    4. 6-4. プロトコル選択の考え方
  8. 7. プロトコル選定まとめ
    1. 7-1. 物理層/データリンク層
    2. 7-2. ネットワーク層
    3. 7-3. トランスポート層
    4. 7-4. アプリケーション層
  9. 8. まとめ

組み込み制御でよく使うネットワークプロトコル

組み込み機器やIoTでは、通信を目的別に使い分ける必要があります。

本稿では、「階層ごとにどのプロトコルが使われるのか」を整理し、TCP/HTTP/RTC を中心に組み込み制御で使いやすい選択肢を紹介します。

1. ネットワークの階層と役割

1-1. ネットワーク階層図

1-2. 物理層・データリンク層

  • Ethernet WiFi は、物理的な接続とフレーム転送を扱う下位層の技術です。
  • これらは「どのようにデータを送るか」を定義するもので、上位プロトコルの土台になります。
  • 組み込み制御では、有線/無線の選択が通信の可搬性や安定性に直結します。

1-2. ネットワーク層

  • IP はパケットの宛先指定とルーティングを担当します。
  • IPv4 / IPv6 によってアドレス体系や経路制御が変わります。
  • 組み込み機器では、IPベースの通信が標準的です。

1-3. トランスポート層

  • TCP / UDP は端末間通信の信頼性や速度を扱います。
  • TCP は信頼性重視、UDP は低遅延・軽量通信向けです。

1-4. アプリケーション層

  • HTTP / HTTPSRTCMQTTCoAP などはアプリケーションごとの通信ルールです。
  • 機器制御、データ送信、リモート操作など用途に合わせて選びます。

2. 物理層・データリンク層: 伝送技術

2-1. Ethernet

  • 有線LANの代表技術。
  • 安定性が高く、遅延が少ない。
  • 制御盤や固定設備で多用される。

2-2. WiFi

  • 無線LANの一般的な技術。
  • 配線不要で設置しやすいが、電波干渉や障害物の影響を受ける。
  • 移動する端末や現場環境で便利。

2-3. ここでの考え方

  • Ethernet / WiFi は、上位層の TCPHTTP を運ぶ「土台」です。
  • 物理層とプロトコル層は切り分けて考えると設計が整理できます。

3. ネットワーク層: IP

3-1. 概要

  • IP はパケットの送信元・宛先を扱うプロトコルです。
  • ルーティングとアドレス指定によって、異なるネットワーク間の通信を可能にします。

3-2. 組み込み制御での役割

  • 機器がネットワーク上で一意に識別される。
  • 上位の TCP / UDP を使う前提となる。

3-3. 選定のポイント

  • IPv4 か IPv6 かの選択
  • 固定IPかDHCPか
  • ネットワーク分離やVPNを使う場合の設計

4. トランスポート層: TCP / UDP

4-1. TCP

概要
  • コネクション型のトランスポート層プロトコル。
  • 信頼性の高いデータ転送を提供します。
特徴
  • 受信確認(ACK)と再送
  • 順序制御
  • フロー制御
  • 3ウェイハンドシェイクによる接続確立

組み込み制御での向き不向き

向いている場合
  •   設定変更や管理コマンドの送受信
  •   ファームウェア更新(OTA)
  •   ステータス監視やログ転送
向いていない場合
  •   低遅延が最優先のリアルタイム制御
  •   頻繁に接続/切断を繰り返す場合

TCPで大変なこと

  • セッション管理が必要

  →接続状態の監視、再接続処理、タイムアウト設計

  • 接続確立の遅延

  →3ウェイハンドシェイクに時間がかかる

  • 再送による遅延変動

  →パケット損失時に挙動が不定になる

  • メッセージ境界が無い

  →アプリ側でコマンドやパラメータの区切りを設計する必要がある

TCPの実装例

  • START\nSTOP\nSET PARAM x=10\n のように改行区切り
  • ヘッダーに長さとコマンドIDを持つバイナリプロトコル
  • TCP上にHTTPを載せて POST /control HTTP/1.1 でJSONを送る

4-2. UDP

概要
  • コネクションレス型のトランスポート層プロトコル。
  • 再送や順序制御は行わず、軽量で高速です。
特徴
  • 低遅延
  • オーバーヘッド小
  • パケット欠落を許容する設計が必要

組み込み制御での向きどころ

  • リアルタイムデータ送信
  • ブロードキャスト/マルチキャスト
  • シンプルなセンサー通知

5. アプリケーション層: HTTP / RTC / MQTT / CoAP

5-1. HTTP / HTTPS

概要

  • Web APIの代表プロトコル。
  • HTTPS は暗号化を加えた安全な通信。

特徴

  • リクエスト/レスポンス型
  • JSONやXMLの構造化データを送れる
  • デバッグしやすく、既存Web技術と親和性が高い

組み込み制御での使いどころ

  • 機器の開始・停止・設定変更
  • ステータス取得や監視
  • クラウド連携やダッシュボード表示

例: 制御コマンドの送信

POST /device/control

body:

{
  "command": "start",
    "params": {
      "speed": 3,
      "duration": 120
    }
}

5-2. RTC(Real-Time Communication)

概要
  • 低遅延の双方向通信を目的とした技術。
  • WebRTCのデータチャネルや独自プロトコルで使われる。
特徴
  • 低遅延
  • 双方向性
  • UDPベースでリアルタイム性を重視
組み込み制御での使いどころ
  • 遠隔操作
  • モーションコントロール
  • ライブ映像/音声監視

5-3. MQTT

概要
  • 軽量なパブリッシュ/サブスクライブ型プロトコル。
  • IoT機器でよく使われる。
特徴
  • 低オーバーヘッド
  • トピックベースのメッセージ配信
  • リクエスト/レスポンスよりも通知型に向く
組み込み制御での使いどころ
  • 機器制御コマンドの配信
  • センサー値の定期送信
  • 監視や状態変化通知

5-4. CoAP

概要
  • UDPベースの軽量なRESTプロトコル。
  • 省リソース機器やセンサーの通信に向けて設計されている。
特徴
  • HTTPに近い操作性だが、UDPの軽量性を活かす
  • 低オーバーヘッド
  • リソース制約デバイスや低帯域環境に適する
組み込み制御での使いどころ
  • 制約機器の状態読み取り
  • 低消費電力のセンサー通信
  • シンプルなREST風制御
よく使われているか?
  • 一般的なWebやクラウド連携では HTTP / MQTT の方が普及している。
  • CoAP は特に省リソース・低帯域の組み込み環境で採用されることがあるが、一般的な工業機器や家庭用IoTではまだ主流ではない。
  • そのため、汎用性を重視するならまず HTTP/HTTPS / MQTT を検討し、制約が厳しい場合に CoAP を候補に入れるのが現実的。

5-5. そのほかの有名なアプリケーション層プロトコル

WebSocket

  • HTTP の上で双方向通信を実現するプロトコル。
  • ブラウザと機器のリアルタイム制御やモニタリングに使える。

DNS

  • 名前解決のためのプロトコル。
  • 組み込み機器でもサーバーやクラウドのホスト名を使う場合に重要。

DHCP

  • IPアドレスやネットワーク設定を自動割り当てするプロトコル。
  • 現場での運用性を高めるため、組み込み機器でもよく使われる。

FTP / SFTP

  • ファイル転送用のプロトコル。
  • ログ収集やファームウェア配布で使われることがある。
  • 組み込み制御では SFTP のような暗号化対応版の方が安全。

SMTP

  • 電子メール送信のプロトコル。
  • 監視通知やアラート送信に使われる。
  • 組み込み機器本体の制御では直接使う機会は少ないが、システム監視では重要。

IMAP / POP3

  • 受信したメールを取得するためのプロトコル。
  • 組み込み機器自体がメール受信を行うことは稀だが、監視システムや通知システムとの連携で理解しておくと便利。
  • IMAP はサーバー上のメールを管理してアクセスする方式、POP3 は受信時にローカルに取り込む方式。

SNMP

  • ネットワーク機器の監視・管理に使われるプロトコル。
  • 機器の状態取得やトラップ通知を行うため、運用監視用途でよく使われる。
  • 組み込み制御機器でも、状態監視や障害通知のために SNMP をサポートする場合がある。

NTP

  • ネットワーク時刻同期のプロトコル。
  • 機器のログや制御タイミングをそろえるために重要。
  • 組み込みシステムでも、タイムスタンプやスケジュール制御が必要な場合に使われる。

6. プロトコルの選定

6-1. まずどの階層のプロトコルを選ぶのか?

設計の最初は「どの層で選択が必要か」を整理する。

  •   物理層・データリンク層: Ethernet / WiFi
  •   ネットワーク層: IP
  •   トランスポート層: TCP / UDP
  •   アプリケーション層: HTTP / MQTT / RTC / CoAP

まずは「通信要件がどの層に影響するか」を確認する。

  •   安定性・帯域・可搬性: 物理層
  •   アドレス管理: ネットワーク層
  •   信頼性・遅延: トランスポート層
  •   メッセージ形式・セキュリティ: アプリケーション層

6-2. 階層が決まったら、次に具体的なプロトコルを選ぶ

  • たとえば「低遅延かつ双方向通信が必要」であれば、トランスポート層では UDP、アプリケーション層では RTC を検討する。
  • 「制御命令や設定値を安全に送る」場合は、トランスポート層で TCP、アプリケーション層で HTTP/HTTPS を選ぶ。
  • 「省リソース機器で軽量に通知したい」なら、トランスポート層で UDP、アプリケーション層で MQTTCoAP を考える。

6-3. 選定の手順

1. 要件を整理する

  •    何を制御するのか?開始/停止/設定/監視のどれか?
  •    信頼性、遅延、帯域、電力、セキュリティの優先順位

2. どの層の選択がボトルネックになるかを決める

  •    物理層/データリンク層: 配線や電波環境
  •    ネットワーク層: IPアドレス管理やルーティング
  •    トランスポート層: 再送/遅延/接続管理
  •    アプリケーション層: メッセージ形式やAPI仕様

3. 具体的なプロトコルを候補化する

  •    Ethernet vs WiFi
  •    TCP vs UDP
  •    HTTP vs MQTT vs CoAP vs RTC

4. 試作・検証する

  •    実機やネットワーク環境で遅延や信頼性を確認
  •    実装負荷やライブラリ対応もチェック

6-4. プロトコル選択の考え方

  • アプリケーション層の要求が高ければ、上位層のプロトコル選択を優先する。
  • 物理層やネットワーク層が厳しい環境なら、その層を先に固定してから上位層を決める。
  • 重要なのは「階層ごとの役割を分けて、順番に絞り込むこと」です。

7. プロトコル選定まとめ

7-1. 物理層/データリンク層

  • 安定した環境なら Ethernet
  • 可搬性が重要なら WiFi

7-2. ネットワーク層

  • IPアドレス管理とルーティングを考慮
  • DHCP vs 固定IP

7-3. トランスポート層

  • 信頼性重視なら TCP
  • 低遅延・軽量なら UDP

7-4. アプリケーション層

  • API制御なら HTTP/HTTPS
  • IoT通知なら MQTT
  • 省リソース機器なら CoAP
  • 低遅延双方向なら RTC

8. まとめ

  • ネットワーク構成は階層ごとに分けて考えると整理しやすい。
  • Ethernet / WiFi は伝送基盤、IP は宛先管理、TCP/UDP は転送方式、HTTP/RTC/MQTT/CoAP はアプリケーションの通信ルール。
  • 組み込み制御では、用途に応じて適切な階層のプロトコルを組み合わせて選ぶことが重要です。

今回は組み込みで使いそうなネットワークプロトコルについてまとめてみました。

コメント