diff options
Diffstat (limited to 'mDNSResponder/mDNSShared/dns-sd.1')
-rw-r--r-- | mDNSResponder/mDNSShared/dns-sd.1 | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSShared/dns-sd.1 b/mDNSResponder/mDNSShared/dns-sd.1 new file mode 100644 index 00000000..9d8323b9 --- /dev/null +++ b/mDNSResponder/mDNSShared/dns-sd.1 @@ -0,0 +1,266 @@ +.\" -*- tab-width: 4 -*- +.\" +.\" Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. +.\" +.\" Licensed under the Apache License, Version 2.0 (the "License"); +.\" you may not use this file except in compliance with the License. +.\" You may obtain a copy of the License at +.\" +.\" http://www.apache.org/licenses/LICENSE-2.0 +.\" +.\" Unless required by applicable law or agreed to in writing, software +.\" distributed under the License is distributed on an "AS IS" BASIS, +.\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.\" See the License for the specific language governing permissions and +.\" limitations under the License. +.\" +.Dd April 2004 \" Date +.Dt dns-sd 1 \" Document Title +.Os Darwin \" Operating System +.\" +.Sh NAME +.Nm dns-sd +.Nd Multicast DNS (mDNS) & DNS Service Discovery (DNS-SD) Test Tool \" For whatis +.\" +.Sh SYNOPSIS +.Nm Fl E +.Pp +.Nm Fl F +.Pp +.Nm Fl R Ar name type domain port Op Ar key=value ... +.Pp +.Nm Fl B Ar type domain +.Pp +.Nm Fl L Ar name type domain +.Pp +.Nm Fl P Ar name type domain port host IP Op Ar key=value ... +.Pp +.Nm Fl q Ar name rrtype rrclass +.Pp +.Nm Fl Z Ar type domain +.Pp +.Nm Fl G Ns \ v4/v6/v4v6 Ar name +.Pp +.Nm Fl V +.\" +.Sh DESCRIPTION +The +.Nm +command is a network diagnostic tool, much like +.Xr ping 8 +or +.Xr traceroute 8 . +However, unlike those tools, most of its functionality is not implemented in the +.Nm +executable itself, but in library code that is available to any application. +The library API that +.Nm +uses is documented in +.Pa /usr/include/dns_sd.h . +The +.Nm +command replaces the older +mDNS +command. +.Pp +The +.Nm +command is primarily intended for interactive use. +Because its command-line arguments and output format are subject to change, +invoking it from a shell script will generally be fragile. Additionally, +the asynchronous nature of DNS Service Discovery does +not lend itself easily to script-oriented programming. For example, +calls like "browse" never complete; the action of performing a "browse" +sets in motion machinery to notify the client whenever instances of +that service type appear or disappear from the network. These +notifications continue to be delivered indefinitely, for minutes, +hours, or even days, as services come and go, until the client +explicitly terminates the call. This style of asynchronous interaction +works best with applications that are either multi-threaded, or use a +main event-handling loop to receive keystrokes, network data, and other +asynchronous event notifications as they happen. +.br +If you wish to perform DNS Service Discovery operations from a +scripting language, then the best way to do this is not to execute the +.Nm +command and then attempt to decipher the textual output, but instead to +directly call the DNS-SD APIs using a binding for your chosen language. +.br +For example, if you are programming in Ruby, then you can +directly call DNS-SD APIs using the dnssd package documented at +.Pa <http://rubyforge.org/projects/dnssd/> . +.br +Similar bindings for other languages are also in development. +.Pp +.Bl -tag -width E +.It Nm Fl E +return a list of domains recommended for registering(advertising) services. +.Pp +.It Nm Fl F +return a list of domains recommended for browsing services. +.Pp +Normally, on your home network, the only domain you are likely to see is "local". +However if your network administrator has created Domain Enumeration records, +then you may also see other recommended domains for registering and browsing. +.Pp +.It Nm Fl R Ar name type domain port Op Ar key=value ... +register (advertise) a service in the specified +.Ar domain +with the given +.Ar name +and +.Ar type +as listening (on the current machine) on +.Ar port. +.Pp +.Ar name +can be arbitrary unicode text, containing any legal unicode characters +(including dots, spaces, slashes, colons, etc. without restriction), +up to 63 UTF-8 bytes long. +.Ar type +must be of the form "_app-proto._tcp" or "_app-proto._udp", where +"app-proto" is an application protocol name registered at +.Pa http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml . +.Pp +.Ar domain +is the domain in which to register the service. +In current implementations, only the local multicast domain "local" is +supported. In the future, registering will be supported in any arbitrary +domain that has a working DNS Update server [RFC 2136]. The +.Ar domain +"." is a synonym for "pick a sensible default" which today +means "local". +.Pp +.Ar port +is a number from 0 to 65535, and is the TCP or UDP port number upon +which the service is listening. +.Pp +Additional attributes of the service may optionally be described by +key/value pairs, which are stored in the advertised service's DNS TXT +record. Allowable keys and values are listed with the service +registration at +.Pa http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml . +.It Nm Fl B Ar type domain +browse for instances of service +.Ar type +in +.Ar domain . +.Pp +For valid +.Ar type Ns s +see +.Pa http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml . +as described above. Omitting the +.Ar domain +or using "." means "pick a sensible default." +.It Nm Fl L Ar name type domain +look up and display the information necessary to contact and use the +named service: the hostname of the machine where that service is +available, the port number on which the service is listening, and (if +present) TXT record attributes describing properties of the service. +.Pp +Note that in a typical application, browsing may only happen rarely, while lookup +(or "resolving") happens every time the service is used. For example, a +user browses the network to pick a default printer fairly rarely, but once +a default printer has been picked, that named service is resolved to its +current IP address and port number every time the user presses Cmd-P to +print. +.Pp +.It Nm Fl P Ar name type domain port host IP Op Ar key=value ... +create a proxy advertisement for a service running on(offered by) some other machine. +The two new options are Host, a name for the device and IP, the address of it. +.Pp +The service for which you create a proxy advertisement does not necessarily have to be on your local network. +You can set up a local proxy for a website on the Internet. +.Pp +.It Nm Fl q Ar name rrtype rrclass +look up any DNS name, resource record type, and resource record class, +not necessarily DNS-SD names and record types. +If rrtype is not specified, it queries for the IPv4 address of the name, +if rrclass is not specified, IN class is assumed. If the name is not a fully +qualified domain name, then search domains may be appended. +.Pp +.It Nm Fl Z Ar type domain +browse for service instances and display output in zone file format. +.Pp +.It Nm Fl G Ns \ v4/v6/v4v6 Ar name +look up the IP address information of the name. +If v4 is specified, the IPv4 address of the name is looked up, +if v6 is specified the IPv6 address is looked up. If v4v6 is specified both the IPv4 and IPv6 +address is looked up. If the name is not a fully qualified domain name, +then search domains may be appended. +.Pp +.It Nm Fl V +return the version of the currently running daemon/system service. +.El +.Sh EXAMPLES +.Pp +To advertise the existence of LPR printing service on port 515 on this +machine, such that it will be discovered by the Mac OS X printing software +and other DNS-SD compatible printing clients, use: +.Pp +.Dl Nm Fl R Ns \ \&"My Test\&" _printer._tcp. \&. 515 pdl=application/postscript +.Pp +For this registration to be useful, you need to actually have LPR service +available on port 515. Advertising a service that does not exist is not +very useful, and will be confusing and annoying to other people on the +network. +.Pp +Similarly, to advertise a web page being served by an HTTP +server on port 80 on this machine, such that it will show up in the +Bonjour list in Safari and other DNS-SD compatible Web clients, use: +.Pp +.Dl Nm Fl R Ns \ \&"My Test\&" _http._tcp \&. 80 path=/path-to-page.html +.Pp +To find the advertised web pages on the local network (the same list that +Safari shows), use: +.Pp +.Dl Nm Fl B Ns \ _http._tcp +.Pp +While that command is running, in another window, try the +.Nm Fl R +example given above to advertise a web page, and you should see the +"Add" event reported to the +.Nm Fl B +window. Now press Ctrl-C in the +.Nm Fl R +window and you should see the "Remove" event reported to the +.Nm Fl B +window. +.Pp +In the example below, the www.apple.com web page is advertised as a service called "apple", +running on a target host called apple.local, which resolves to 17.149.160.49. +.Pp +.Dl Nm Fl P Ns \ apple _http._tcp \&"\&"\& 80 apple.local 17.149.160.49 +.Pp +The Bonjour menu in the Safari web browser will now show "apple". +The same IP address can be reached by entering apple.local in the web browser. +In either case, the request will be resolved to the IP address and browser will show +contents associated with www.apple.com. +.Pp +If a client wants to be notified of changes in server state, it can +initiate a query for the service's particular record and leave it running. +For example, to monitor the status of an iChat user you can use: +.Pp +.Dl Nm Fl q Ns \ someone@ex1._presence._tcp.local txt +.Pp +Everytime status of that user(someone) changes, you will see a new TXT record result reported. +.Pp +You can also query for a unicast name like www.apple.com and monitor its status. +.Pp +.Dl Nm Fl q Ns \ www.apple.com +.Pp +.Sh FILES +.Pa /usr/bin/dns-sd \" Pathname +.\" +.Sh SEE ALSO +.Xr mDNSResponder 8 +.\" +.Sh BUGS +.Nm +bugs are tracked in Apple Radar component "mDNSResponder". +.\" +.Sh HISTORY +The +.Nm +command first appeared in Mac OS X 10.4 (Tiger). |