加速あなたのWebRtcとMqttの理解:用語解説ノート共有

前書き
  • Androidの仕事の要件で出会ったため、
    MqttとwebRtcを接続する必要があり、
    いくつかの用語の意味を大まかに理解しましたが、
    この部分は主にバックエンドが担当しています。
    ここではAndroidエンジニアとして大まかに理解し、
    記録しておき、将来出会ったときに素早く思い出せるようにします。
MQTT ノート
  • QoS (Quality of Service) : メッセージ送信サービスの品質には3つのモードがあります
    • At most once : 最大1回、パケットが失われやすく、データの受信を気にしない環境に適しています。次回のパブリッシュがすぐにプッシュされるため

    • At least once : 少なくとも1回、パケットが必ず届くことを保証しますが、重複したパケットを受信する可能性があります

    • Exactly once : 正確に1回、パケットが1回だけ届くことを保証しますが、重複パケットやパケットの紛失が発生した場合、エラーハンドリングが必要で、リソース消費が多くなります

    • MQTT Header : 固定2バイトで、消費が少ない

    • MQTT Session:MQTTクライアントがサーバーに接続するとき、’Clean Session’フラグでその状態を制御できます
      a. ‘Clean Session’ is 0 : 永続的なセッションに属し、クライアントが切断されても、セッションはタイムアウトするまで保持されます
      b. ‘Clean Session’ is 1 : 一時的なセッションに属し、クライアントが切断されるとセッションは破壊されます

    • MQTT CONNECT Keep Alive : MQTT接続時に、Keep Alive時間を表すバイトを持ち、何も送受信がない場合、PINGREQを送って状態を維持し、サーバーはPINGRESPで応答します。
      Keep Aliveタイムアウト時には接続を閉じます(通常の状態ではKeep Aliveタイムアウト*1.5がタイムアウト時間で、主にサーバー設定によります)。
    • LWT (last will and testament) : 一種の遺言の概念で、MQTTクライアントが異常な状態で切断された場合、例えば切断時にdisconnectを呼び出さなかった場合、サーバーはwillメッセージをプッシュします。
    • MQTT retained message : RETAINフラグを使ってretained messageを設定でき、retained messageはブローカーに保存され、このトピックをサブスクライブしている人に送信されます。また、1つのトピックには1つのretained messageしか存在できません。
WebRtc関連
  • 以下の用語を理解する:
    • Signaling : デバイス間でメタデータや情報を交換するために使用されるもので、一般的にはSDPが使われます。WebRTC1.0ではSignalingの柔軟性を保つため、特に定義を強制していません (参考記事)

    • SDP (Session Description Protocol) : Signalingサーバーが通信時に持つデータ規範で、特定の文字が特定の情報を表すように定められています。例えば、vはプロトコルバージョン、sはセッション名、pは電話番号など

    • STUN (Session Traversal Utilities for NAT) : NATをサポートするネットワークプロトコルの一種で、STUNを通じて利用可能なデータを取得できます (参考記事)

    例えば:公有IPの取得(実際のIP、NAT下のプライベートIPではない)、ポート

    • TURN (Traversal Using Relay NAT) : NATをサポートするネットワークプロトコル、その特徴:
      a. データ転送はサーバーを介して行われ、サーバーのリソースを消費する
      b. すべての呼び出しが環境全体で実行できることを保証する
      c. 通信過程でエラーが発生した場合、フォールバックを提供できる

    • ICE (Interactive Connectivity Establishment) : STUN & TURNの通信標準を規定するもの 特徴:サーバー間の通信の最適な距離を見つけようとする

You might also enjoy