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 サービス検出 クライアント アプリケーションが音楽共有サービスを必要とする場合、_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。 著者: 王建凱 部署:中国移動スマートホームオペレーションセンター |
>>: シーフード:故郷が新疆だと初めて気づいた丨偉大な国の技術スタイル
付録: 1. 近視は職業選択に影響を与える可能性がある近視は生活に不便をもたらすだけでなく、その後の...
料理を作るとき、ほとんどの人はたくさんの調味料を使います。必要な塩、油、MSGに加えて、他の調味料も...
実は、枝豆、大豆、黒豆、小豆など、豆類は私たちの日常生活でよく見かけ、食べられています。これらはすべ...
中国には確かに多くの祭りがあり、祭りごとにさまざまなことが起こり、食べる食べ物も異なります。そのため...
起きてすぐに布団を畳むのはダメですか?鼻をほじるのは普通のことですが、何か悪いことがあるのでしょうか...
家電製品のインテリジェント化は、現在の家電業界の大きなトレンドです。消費者の視点から見ると、スマート...
小豆、緑豆、黒豆、大豆などの一般的な豆は、多くの人々にとって生活の中で好まれる食べ物であり、人体に必...
3月と4月にネットワークに接続されていた中国移動の携帯電話の内部データを友人から入手した。中国移動の...
ドラゴンフルーツの選び方とは?これは現実社会でよくある問題です。人々の経済レベルが上がり続けるにつれ...
竹林の奥深くには、発見されるのを待っている新鮮なごちそうです。タケノコはほのかな香りがします。タケノ...
世界最大の水力発電所である三峡ダムプロジェクトは、中国東部の10の省と市に毎日10億キロワット時の電...
人々はいつも、なぜこの人は太るのかと尋ねます。実は、答えはとても簡単です。食べ過ぎです。現代社会では...
昨日は「結婚」に良い日でした。午前中にはGanji.comと58.comが提携したと報じられ、午後に...
豆腐は栄養が豊富で、消化吸収率は95%を超えており、豆腐2個で1日のカルシウム必要量を満たすことがで...
2021年、国家鉄道に関する重要なニュースが続いた。新疆ウイグル自治区のホータン・若羌鉄道区間の線...