← man/network
dns-sd — man dns-sd — 80×24
ugur@toprak:~/man/network$man dns-sd
Bölüm 1

dns-sd

Multicast DNS (mDNS) & DNS Service Discovery (DNS-SD) Test Tool

Synopsis

     dns-sd -E

     dns-sd -F

     dns-sd -R name type domain port [key=value ...]

     dns-sd -B type domain

     dns-sd -L name type domain

     dns-sd -P name type domain port host IP [key=value ...]

     dns-sd -q name rrtype rrclass

     dns-sd -Z type domain

     dns-sd -G v4/v6/v4v6 name

     dns-sd -V

Description

dns-sd komutu, ping(8) veya traceroute(8) gibi bir ağ teşhis aracıdır. Ancak bu araçların aksine, işlevselliğinin büyük kısmı dns-sd yürütülebilir dosyasının kendisinde değil, herhangi bir uygulamanın erişebileceği kütüphane kodunda uygulanmıştır. dns-sd'nin kullandığı kütüphane API'si /usr/include/dns_sd.h dosyasında belgelenmiştir. dns-sd komutu, daha eski olan mDNS komutunun yerini almıştır.

dns-sd komutu öncelikle etkileşimli kullanım için tasarlanmıştır. Komut satırı argümanları ve çıktı biçimi değişebileceğinden, bu komutun bir kabuk betiğinden çağrılması genellikle kararsız (kırılgan) olacaktır. Ek olarak, DNS Hizmet Keşfi'nin (DNS Service Discovery) asenkron yapısı, betik odaklı programlamaya kolayca uyum sağlamaz. Örneğin, "browse" (göz atma) gibi çağrılar asla tamamlanmaz; bir "browse" işlemi gerçekleştirmek, ilgili hizmet türünün örnekleri ağda göründüğünde veya kaybolduğunda istemciyi bilgilendirmek üzere bir mekanizmayı harekete geçirir. Bu bildirimler, hizmetler gelip gittikçe, istemci çağrıyı açıkça sonlandırana kadar dakikalarca, saatlerce hatta günlerce süresiz olarak iletilmeye devam eder. Bu asenkron etkileşim tarzı, çoklu iş parçacığı (multi-threaded) kullanan veya tuş basışlarını, ağ verilerini ve diğer asenkron olay bildirimlerini gerçekleştiğinde almak için ana bir olay işleme (event-handling) döngüsü kullanan uygulamalarla en iyi şekilde çalışır.

Bir betik dilinden DNS Hizmet Keşfi işlemleri gerçekleştirmek istiyorsanız, bunu yapmanın en iyi yolu dns-sd komutunu yürütüp ardından metinsel çıktıyı çözmeye çalışmak değil, seçtiğiniz dil için bir bağlayıcı (binding) kullanarak doğrudan DNS-SD API'lerini çağırmaktır.

Örneğin, Ruby dilinde programlama yapıyorsanız, http://rubyforge.org/projects/dnssd/ adresinde belgelenmiş dnssd paketini kullanarak doğrudan DNS-SD API'lerini çağırabilirsiniz.

Diğer diller için de benzer bağlayıcılar geliştirilme aşamasındadır.

dns-sd -E hizmetleri kaydetmek (duyurmak) için önerilen etki alanlarının (domain) bir listesini döndürür.

dns-sd -F hizmetleri gözden geçirmek (browse) için önerilen etki alanlarının bir listesini döndürür.

Normal şartlarda, ev ağınızda görme ihtimaliniz olan tek etki alanı "local" olacaktır. Ancak ağ yöneticiniz Etki Alanı Numaralandırma (Domain Enumeration) kayıtları oluşturmuşsa, kaydetme ve göz atma için önerilen diğer etki alanlarını da görebilirsiniz.

dns-sd -R name type domain port [key=value ...] belirtilen etki alanında, verilen ad ve türle bir hizmeti, (mevcut makinede) belirli bir port üzerinden dinleyecek şekilde kaydeder (duyurur).

name, herhangi bir kısıtlama olmaksızın (noktalar, boşluklar, eğik çizgiler, iki nokta üst üste vb. dahil) geçerli herhangi bir Unicode karakteri içerebilen, en fazla 63 UTF-8 baytı uzunluğunda, isteğe bağlı bir Unicode metin olabilir. type, "_app-proto._tcp" veya "_app-proto._udp" biçiminde olmalıdır; burada "app-proto", http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml adresinde kayıtlı bir uygulama protokolü adıdır.

domain, hizmetin kaydedileceği etki alanıdır. Mevcut uygulamalarda yalnızca yerel çoklu gönderim etki alanı (multicast domain) "local" desteklenmektedir. Gelecekte, çalışan bir DNS Güncelleme (DNS Update) sunucusuna [RFC 2136] sahip herhangi bir rastgele etki alanında kayıt yapılması desteklenecektir. "." etki alanı, bugün için "local" anlamına gelen "mantıklı bir varsayılan seç" ifadesinin eş anlamlısıdır.

port, 0 ile 65535 arasında bir sayı olup, hizmetin dinlediği TCP veya UDP port numarasıdır.

Hizmetin ek öznitelikleri isteğe bağlı olarak, duyurulan hizmetin DNS TXT kaydında depolanan anahtar/değer (key/value) çiftleri ile tanımlanabilir. İzin verilen anahtarlar ve değerler, http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml adresindeki hizmet kaydıyla birlikte listelenmiştir.

dns-sd -B type domain domain etki alanında belirtilen service type (hizmet türü) örnekleri için göz atma (browse) işlemi yapar.

Geçerli türler için yukarıda açıklandığı gibi http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml adresine bakın. domain'in atlanması veya "." kullanılması "mantıklı bir varsayılan seç" anlamına gelir.

dns-sd -L name type domain adlandırılmış hizmetle iletişim kurmak ve onu kullanmak için gerekli bilgileri arar ve görüntüler: bu hizmetin kullanılabilir olduğu makinenin ana bilgisayar adı (hostname), hizmetin dinlediği port numarası ve (varsa) hizmetin özelliklerini tanımlayan TXT kaydı öznitelikleri.

Tipik bir uygulamada, göz atma (browsing) işleminin nadiren gerçekleşebileceğini, buna karşın arama (lookup veya "resolving" yani çözümleme) işleminin hizmet her kullanıldığında gerçekleştiğini unutmayın. Örneğin, bir kullanıcı varsayılan bir yazıcı seçmek için ağı oldukça nadir tarar, ancak varsayılan yazıcı bir kez seçildikten sonra, kullanıcı yazdırmak için her Cmd-P tuşuna bastığında bu adlandırılmış hizmet mevcut IP adresine ve port numarasına çözümlenir.

dns-sd -P name type domain port host IP [key=value ...] başka bir makinede çalışan (veya sunulan) bir hizmet için bir proxy reklamı oluşturur. İki yeni seçenek, cihaz için bir ad olan Host ve cihazın adresi olan IP'dir.

Proxy reklamı oluşturduğunuz hizmetin mutlaka yerel ağınızda olması gerekmez. İnternet'teki bir web sitesi için yerel bir proxy kurabilirsiniz.

dns-sd -q name rrtype rrclass mutlaka DNS-SD adları ve kayıt türleri olması gerekmeksizin, herhangi bir DNS adını, kaynak kaydı türünü (resource record type) ve kaynak kaydı sınıfını (resource record class) arar. rrtype belirtilmemişse adın IPv4 adresini sorgular, rrclass belirtilmemişse IN sınıfı varsayılır. Ad tam nitelikli bir etki alanı adı (FQDN) değilse, arama etki alanları (search domains) sonuna eklenebilir.

dns-sd -Z type domain hizmet örnekleri için göz atma işlemi gerçekleştirir ve çıktıyı bölge dosyası (zone file) biçiminde görüntüler.

dns-sd -G v4/v6/v4v6 name adın IP adresi bilgisini arar. v4 belirtilirse adın IPv4 adresi aranır, v6 belirtilirse IPv6 adresi aranır. v4v6 belirtilirse hem IPv4 hem de IPv6 adresi aranır. Ad tam nitelikli bir etki alanı adı değilse, arama etki alanları sonuna eklenebilir.

dns-sd -V şu anda çalışan arka plan programının (daemon) / sistem hizmetinin sürümünü döndürür.

Examples

     Bu makinede 515 numaralı port üzerinde bir LPR yazdırma hizmetinin varlığını, Mac OS X yazdırma
     yazılımı ve diğer DNS-SD uyumlu yazdırma istemcileri tarafından keşfedilecek şekilde duyurmak için
     şunu kullanın:

	   dns-sd -R "My Test" _printer._tcp. . 515 pdl=application/postscript

     Bu kaydın yararlı olması için, 515 numaralı portta gerçekten LPR hizmetinin mevcut olması
     gerekir. Var olmayan bir hizmetin duyurulması pek yararlı değildir ve ağdaki diğer insanların
     kafasını karıştırıp onları rahatsız edecektir.

     Benzer şekilde, bu makinede 80 numaralı port üzerinde bir HTTP sunucusu tarafından sunulan ve
     Safari'deki Bonjour listesinde ve diğer DNS-SD uyumlu Web istemcilerinde görünecek bir web
     sayfasını duyurmak için şunu kullanın:

	   dns-sd -R "My Test" _http._tcp . 80 path=/path-to-page.html

     Yerel ağdaki duyurulan web sayfalarını bulmak için (Safari'nin gösterdiği listenin aynısı)
     şunu kullanın:

	   dns-sd -B _http._tcp

     Bu komut çalışırken başka bir pencerede, bir web sayfasını duyurmak için yukarıda verilen
     dns-sd -R örneğini deneyin; dns-sd -B penceresinde raporlanan "Add" (Ekle) olayını görmeniz
     gerekir. Şimdi dns-sd -R penceresinde Ctrl-C tuşlarına basın; dns-sd -B penceresinde raporlanan
     "Remove" (Kaldır) olayını görmeniz gerekir.

     Aşağıdaki örnekte, www.apple.com web sayfası, apple.local adındaki bir hedef ana bilgisayarda
     çalışan "apple" adında bir hizmet olarak duyurulmaktadır ve bu ana bilgisayar 17.149.160.49
     adresine çözümlenmektedir.

	   dns-sd -P apple _http._tcp "" 80 apple.local 17.149.160.49

     Safari web tarayıcısındaki Bonjour menüsü artık "apple" seçeneğini gösterecektir. Aynı IP
     adresine web tarayıcısına apple.local yazılarak da ulaşılabilir. Her iki durumda da istek bu
     IP adresine çözümlenecek ve tarayıcı www.apple.com ile ilişkili içerikleri gösterecektir.

     Bir istemci sunucu durumundaki değişikliklerden haberdar olmak isterse, hizmetin özel kaydı
     için bir sorgu başlatabilir ve bunu çalışır durumda bırakabilir. Örneğin, bir iChat
     kullanıcısının durumunu izlemek için şunu kullanabilirsiniz:

	   dns-sd -q someone@ex1._presence._tcp.local txt

     Bu kullanıcının (someone) durumu her değiştiğinde, raporlanan yeni bir TXT kaydı sonucu
     göreceksiniz.

     Ayrıca www.apple.com gibi bir tekli gönderim (unicast) adını sorgulayabilir ve durumunu
     izleyebilirsiniz.

	   dns-sd -q www.apple.com

Files

/usr/bin/dns-sd

See Also

mDNSResponder(8)

Bugs

dns-sd hataları, Apple Radar bileşeni "mDNSResponder" içinde takip edilmektedir.

History

dns-sd komutu ilk olarak Mac OS X 10.4 (Tiger) sürümünde yer almıştır.

Darwin April 2004 Darwin