20

DNS-SD を介してサービスが検出されると、そのホストのアドレスはどのように正確に解決されるのでしょうか? また、かなり多くの時間/オーバーヘッドがかかりますか?

また、JmDNS または Bonjour を使用している場合、 と の両方にコールバックがserviceFoundありserviceResolvedます。serviceFound特定のサービスを公開しているデバイスの IP アドレスにのみ関心がある場合、 と の両方を経由するよりも高速で効率的なアドレス取得方法はありserviceResolvedますか?

ありがとう

4

1 に答える 1

39

DNS-SD はマルチキャスト DNS (MDNS) を使用します。これは、DNS パケットを UDP 経由で特定のマルチキャスト アドレスに送信することによって機能します。ネットワーク内のすべての mdns 対応ホストも、このアドレスをリッスンします。UDP を使用するため、オーバーヘッドが非常に低くなります。また、クライアントは、大規模なキャッシングを使用して、ネットワーク上のチャットの量を最小限に抑えるように設計されています。

サービス検出は 2 段階のプロセスです。最初のステップは、特定のサービス (印刷など) を提供するすべてのホストの名前を見つけることです。これはまだ IP アドレスを提供しませんが、代わりに mdns 名 (末尾が.local) を提供します。これは、IP は変更される可能性がありますが、名前は変更されないためです。

サービス検出の 2 番目のステップは、.localmdns を介してホストの名前を解決することです。マルチキャスト経由で誰foo.localfoo.localそのパケットを見て、その IP アドレス、ポート番号、その他の情報をブロードキャスト経由で応答するかを尋ねます。

于 2012-09-03T17:04:21.560 に答える