Apple デバイスは互いにどのように挨拶するのでしょうか? - Bonjourプロトコルについての興味深い講演

Apple デバイスは互いにどのように挨拶するのでしょうか? - Bonjourプロトコルについての興味深い講演

Apple製品をすべて使っている学生なら、AirDropによる写真やファイルの転送、AirPlayによるテレビ画面投影、ホットスポットのパスワードの自動共有、Apple WatchによるMacやiPhoneのロック解除、カメラ/スケッチ/マーキングの連続使用など、複数のデバイス間のシームレスな接続を体験したことがあるはずです。その基本原理は、同じiCloudにログインしているデバイス間でWi-FiまたはBluetooth経由でデータを素早く同期することです。

問題は、デバイスがローカル エリア ネットワーク内で通信する場合、デバイスが互いの IP アドレスを知る必要があることです。 AirPlay スクリーン投影を例にとると、最初のステップでは、オーディオ、ビデオ、画像、またはスクリーン コンテンツをテレビに投影する前に、iPhone などの端末デバイスがローカル エリア ネットワーク内のターゲット スクリーン投影デバイス (つまり、テレビ) を見つける必要があります。

ほとんどの場合、デバイスの IP アドレスは、動的に割り当てられた DHCP プロトコルを通じて取得されます。では、デバイスはどのようにして互いを検出するのでしょうか?ここで Bonjour プロトコルが役立ちます。

Bonjour プロトコルとは何ですか?

Bonjour は、Apple によって実装されたゼロ構成ネットワーク プロトコルです。 「ボンジュール」という言葉はフランス語に由来し、「こんにちは」または「おはよう」を意味します。このプロトコルは、ネットワーク構成を簡素化し、人々が挨拶を交わすのと同じように、デバイスがローカル エリア ネットワーク内で簡単に互いを検出し、通信できるように設計されています。

Bonjour を使用すると、ユーザーは IP アドレスやデバイス名を手動で設定する必要がなくなります。デバイスまたはアプリケーションは、必要なサービスやその他のインタラクティブ アプリケーションを自動的に検出し、ユーザーの介入なしに自動接続、通信、およびデータ交換を実現します。

図1 LAN内のデバイスの相互接続

Bonjour プロトコルはどのように機能しますか?

1. Bonjourプロトコルの基礎

Bonjour は主に、mDNS (マルチキャスト DNS) と DNS-SD (DNS サービス検出) という 2 つの標準ネットワーク プロトコルに基づいており、標準 DNS フレームワーク上に構築および拡張されています。

1.1 mDNS プロトコル

mDNS プロトコルは UDP/IP に基づいており、通信にはマルチキャスト アドレス 224.0.0.251 とポート 5353 を使用します。 mDNS プロトコルは、DNS サーバーを構成せずに、マルチキャスト クエリと応答を通じて LAN 内でホスト名解決を実装します。 mDNS プロトコルのデータ パケット形式は、標準の DNS プロトコルと一致しています。標準の DNS クエリ レコード タイプをサポートし、その中のいくつかの概念を拡張します。

これらのうち、リソース レコードは、ローカル エリア ネットワーク内のホスト間でメッセージ コンテンツを交換するために使用され、次の主要なフィールドが含まれます。

NAME: メッセージの内容を示します

TYPE: メッセージの内容の種類を示します

さらに、TYPE タイプに応じて、次の主要な DNS レコード形式を定義できます。

レコード: ホスト名とIPv4の対応

AAAAレコード: ホスト名とIPv6の対応

PTRレコード: サービスタイプとサービスインスタンス名の対応を記録し、通常はサービスインスタンスのクエリと検出に使用されます。

SRVレコード: サービスインスタンスのホスト名とポート情報を記録します

TXT レコード: MAC アドレス、デバイス ID など、「キー = 値」の形式で記録された、サービスに関する追加の説明テキストを提供します。

ANYレコード: クエリでよく使用される任意のタイプ

1.2 DNS-SDプロトコル

mDNS プロトコルは、メッセージの基本構造とメッセージ送信プロセスを定義します。これを基に、DNS-SD プロトコルは、サービス名、サービス インスタンス名、ドメイン名の長さ/シーケンスなどの特定の要素をさらに定義し、PTR、SRV、TXT の 3 つのリソース レコードを使用してサービスを完全に記述し、簡単なサービス検出および記述方法を規定します。

サービス名は通常、アンダースコア「_」とプロトコル名で構成され、ドメイン名の末尾の固定識別子として「local」が使用されます。形式は、<サービス タイプ>.<ドメイン名>.local です (例: _printer._tcp.local、_airplay._tcp.local)。

サービス インスタンスは、<サービス インスタンス>.<サービス タイプ>.<ドメイン名> の形式のインスタンス名で識別されます (例: PrintsAlot._printer._tcp.local)。

MyMac._airplay._tcp.local

Bonjour プロトコルは、上記の 2 つのプロトコルを通じてローカル エリア ネットワーク内でホスト名の解決とサービスの登録および検出を実装し、ゼロ構成ネットワークの基盤を提供します。

2. Bonjourサービス検出プロセス

Bonjour の仕組みを理解するには、前述の mDNS プロトコルと DNS-SD プロトコルがどのように組み合わされて相互作用するかを考えるだけで十分です。

Bonjour プロトコルは、mDNS と DNS-SD の有機的な組み合わせとして考えることができます。具体的には、DNS-SD プロトコルは PTR レコードを通じてサービス インスタンスを指し示し、SRV レコードを通じてインスタンスのホスト名とポートを提供します。この情報を取得した後は、mDNS を介してホスト名を解決して IP アドレスを取得するだけで、サービス名から IP アドレスへのマッピング関係が完了し、エンドツーエンドの接続が実現します。 DNS-SD によって公開および照会されるレコード情報は、mDNS によって定義されたマルチキャスト グループとポート番号に基づいて送信されることに注意してください。

次に、Bonjour サービスの検出プロセス全体がどのように完了するかを具体的な例で説明します。ローカル エリア ネットワーク内の iPad デバイスが音楽共有サービスを公開するとします。これには主に次の 3 つの手順が含まれます。

2.1 サービス公開

まず、デバイスは 192.168.1.23 などの利用可能なリンクローカル IP アドレスをランダムに選択し、LAN に公開します。次に、mDNS レスポンダーを起動し、ホスト名 my-ipad.local を要求します。競合がないことを確認した後、ホスト名を使用します。次に、デバイスは TCP ポート 1010 で音楽共有サービスを開始します。最後に、音楽サービスが公開され、mDNS マルチキャストを通じて DNS レコードが作成されます。

SRV レコード: 内容はサービス インスタンス名「Xiao Li's music service._music._tcp.local」です。ホスト名 my-ipad.local の TCP サービス ポート 1010 を指します。

PTR レコード: 内容はサービス名「_music._tcp.local」です。サービス インスタンス名「Xiao Li's music service._music._tcp.local」を指します。

TXT レコード: MAC アドレス「MAC=D3:AA:E2:30:B0:E1」など、デバイスに関する追加情報を提供します。

ローカル エリア ネットワーク内の他のデバイスがこれらのレコードを受信すると、それらを解析してキャッシュします。


図2 サービス公開プロセスの例

2.2 サービス検出

クライアント アプリケーションが音楽共有サービスを必要とする場合、_music._tcp タイプのサービス クエリ メッセージを作成し、mDNS を介して LAN 全体にクエリ要求をマルチキャストします。クエリ要求を受信すると、サービスを提供できるデバイスは PTR レコードで応答します。この応答レコードには、サービス インスタンス名「Xiao Li's Music Service._music._tcp.local」が含まれています。その後、クライアント アプリケーションは PTR レコードからサービス インスタンス名を抽出し、それをサーバー リストに追加できます。

図3 サービス検出プロセスの例

2.3 サービス解決

サービス解決は、サービス検出が完了した後に実行されます。アプリケーションはサービス インスタンスの名前を選択し、LAN をマルチキャストして対応する SRV レコードを照会します。サービス プロバイダーは応答後、サービス インスタンスの現在のホスト名とポート番号を返します。アプリケーションはホスト名を取得した後、ホスト名に対応する IP アドレスを解決するためにマルチキャスト mDNS クエリ要求を再度送信します。最後に、アプリケーションは取得した IP アドレスとポート番号に基づいてサービス インスタンスとの接続を確立し、解決を完了します。

図4 サービス解決プロセスの例

この時点で、音楽共有サービスの自動登録と検出のプロセス全体が完了しました。プロセス全体は効率的かつ便利であり、人間の介入を必要としません。良好なネットワーク チャネルを確立することで、クライアント デバイスはサーバー上の関連する音楽リソースを参照して再生できるようになります。

長年の開発を経て、Bonjour は Apple やその他のプラットフォームの標準サービスとなり、ゼロ構成ネットワーク向けのオープンで実用的かつ効率的なソリューションを提供しています。 Bonjour は mDNS および DNS-SD プロトコルに基づいているため、既存のネットワーク インフラストラクチャとの互換性が非常に高くなります。個人、企業ネットワーク、IoT デバイスで広く使用されており、ネットワークの構成と管理が大幅に簡素化されます。将来的には、スマートハードウェア事業の継続的な成長に伴い、関連技術はネットワーク相互接続において幅広い応用と発展の見通しを持つことになります。

参考文献

[1] アップル開発者リソース - Bonjour [EB/OL]。 (2023)[2023-07-21]. https://developer.apple.com/bonjour/。

[2] 呉月謙LAN デバイスの検出: Bonjour プロトコル [EB/OL]。 (2016-09-28)[2023-07-21]. https://blog.csdn.net/yueqian_scut/article/details/52694411。

[3] ユウェイフェン。ネットワークプロトコルmDNS20170217[EB/OL]。 (2017-02-17)[2023-07-21]. https://www.cnblogs.com/yuweifeng/p/6409182.html。

著者: 王建凱

部署:中国移動スマートホームオペレーションセンター

<<:  現地の気温が10℃以上下がります!新たな寒波が到来

>>:  シーフード:故郷が新疆だと初めて気づいた丨偉大な国の技術スタイル

推薦する

多くの場所でトラック火災が発生しています。トラックが火災になる前に、これらの兆候に必ず注意してください。

最近、気温が上昇するにつれ、全国各地でトラック火災が多発し、車両や積荷に被害が及び、道路交通にも影響...

AIエンジンを組み込んだAmapの将来の目標は、生きた地図を作成することです

今年8月の雲奇カンファレンスで、アリババの幹部は、AIが今後数年間でアリババの開発の焦点になるだろう...

アジア初コエロフィシス化石発見!小型だが強力な「先駆者捕食者」

編集者注: 地球上の生命の長い歴史の中で、恐竜はかつて地球の覇者でした。 1995年、雲南省楚雄市陸...

ガーリックフィッシュのレシピ

ガーリックフィッシュは魚の調理法の一つで、その本質は他の魚種と同じで、タンパク質が豊富です。体重増加...

苦い菊を美味しくする方法

一般的な食用植物として、その利点を理解する必要があります。タンポポは苦いハーブとしても知られ、体にと...

恒星間移住についての講演: 人類を地球上の 1 つのゆりかごに入れるのが良いのか、それとも複数のバスケットに入れるのが良いのか?

私はよく、人類は卵の集まりのようなもので、そのすべてが現在地球という「バスケット」の中に保管されてお...

豚肉の煮込みの作り方

一般的な食べ物はたくさんありますが、野菜、果物、肉は非常に一般的です。これらの果物はあらゆる面で人体...

タマネギが人間の健康に与える魔法のような効果

玉ねぎは脂肪を分解するケドゥオ博士はクリニックの患者を対象に実験を行い、タマネギには善玉コレステロ...

ベーコンの保存方法

北の冬はいつも雪が降ります。植物も動物も低温と霜の影響に耐えられず、冬眠に入ります。食料と衣服の問題...

ロシアのハッカーがWindowsの脆弱性を悪用してスパイ活動

ダラスに拠点を置く情報セキュリティ会社iSight Partnersが火曜日に発表した報告書によると...

ハトムギ米はがんを予防するユニークな健康食品です

五穀の養生作用は中国の食文化の真髄の一つです。中国の古典医学書『黄帝内経』には「五穀は滋養強壮」とい...

国家郵政局:中国の速達業務量は2022年に1000億個を超える

12月1日午前8時10分、国家郵政局の速達ビッグデータプラットフォームのリアルタイム監視データによる...

第二世代新型コロナウイルスワクチン登場!一世代プレイした後でも、まだ必要ですか?

12月27日、UAE保健予防省はシノファームの第2世代組み換えタンパク質COVID-19ワクチンの...

家族全員で食べられる、胃と腎臓に良いおいしい食べ物10選

脾臓を強化し、胃を養う - ヤムイモとナツメのお粥材料:新鮮なヤムイモ300グラム、蓮の実10個、...

五行野菜スープの作り方

日本では、ますます人気が高まっているスープ料理があります。この料理は栄養価が高く、多くの栄養素が含ま...