2012-08-06 29 views
11

DNS-SD aracılığıyla bir hizmet bulunduğunda, bu ana bilgisayarın adresi tam olarak nasıl çözülür ve önemli ölçüde daha fazla zaman/ek yük alır?mDNS adreslerini tam olarak nasıl çözer?

Ayrıca, JmDNS veya Bonjour kullanıyorsanız, hem serviceFound hem de serviceResolved için geri aramalar vardır. Belirli bir hizmeti yayınlayan cihazın IP adresiyle ilgilenirsem, adresi almak için hem serviceFound hem de serviceResolved'dan daha hızlı/daha etkili bir yol var mı?

cevap

23

DNS SD

Teşekkür belli noktaya yayın adresine UDP üzerinden DNS paketlerini göndererek çalışır Noktaya Yayın DNS (MDNS) kullanır. Ağdaki tüm mdns özellikli ana bilgisayarlar da bu adresi dinler. UDP kullanır, bu yüzden oldukça düşüktür. Ayrıca, istemciler, geniş önbellek kullanarak ağdaki sohbet miktarının minimum düzeyde tutulacak şekilde tasarlanmıştır.

Hizmet keşfi iki aşamalı bir işlemdir. İlk adım, belirli bir hizmeti (örneğin, baskı) sağlayan tüm ana bilgisayarların isimlerini bulmaktır. Bu size henüz ip adresini vermeyecektir, bunun yerine size mdns adını verir (.local ile biten). Bunun nedeni, ipin değişebileceği, ancak ismin değişmeyeceği içindir.

Hizmet keşfindeki ikinci adım, mdns üzerinden ana bilgisayarın .local adını çözümlemektir. foo.local, foo.local'un hangi paketi göreceğini ve ip adresi, bağlantı noktası numarası ve diğer bilgileriyle yayın yoluyla yanıtlayacağınız çok noktaya yayın yoluyla sorun.

+0

Lütfen bu sorguyla ilgili yardım için http://stackoverflow.com/questions/40662608/service-discovery-using-dns-sd – Daemon