Name services such as mDNS, LLMNR and others do not provide information about the type of device or its status. A user looking for a nearby printer, for instance, might be hindered if the printer was given the name
Bob.
Service discovery provides additional information about devices. Service discovery is sometimes combined with a
name service, as in Apple's
Name Binding Protocol and Microsoft's
NetBIOS.
NetBIOS Service Discovery NetBIOS on Windows supports individual hosts on the network to advertise services, such as file shares and printers. It also supports, for example, a network printer to advertise itself as a host sharing a printer device and any related services it supports. Depending on how a device is attached (to the network directly, or to the host that shares it) and which protocols are supported. However, Windows clients connecting to it may prefer to use
SSDP or
WSD using NetBIOS. NetBIOS is one of the providers on Windows implementing the more general discovery process dubbed
function discovery which includes built-in providers for PnP, Registry, NetBIOS, SSDP and WSD of which the former two are local-only and the latter three support discovery of networked devices. None of these need any configuration for use on the local subnet. NetBIOS has traditionally been supported only in expensive printers for corporate use, though some entry-level printers with Wi-Fi or Ethernet support it natively, allowing the printer to be used without configuration even on very old operating systems.
WS-Discovery Web Services Dynamic Discovery (
WS-Discovery) is a technical specification that defines a multicast discovery protocol to locate services on a local network. It operates over TCP and UDP port 3702 and uses IP multicast address . As the name suggests, the actual communication between nodes is done using web services standards, notably
SOAP-over-UDP. Windows supports it in the form of
Web Services for Devices and
Devices Profile for Web Services. Many devices, such as HP and Brother printers, support it.
DNS-based service discovery '''''' (DNS Service Discovery) allows clients to discover a named list of service instances and to resolve those services to hostnames using standard DNS queries. The specification is compatible with existing unicast DNS server and client software, but works equally well with mDNS in a zero-configuration environment. Each service instance is described using a DNS SRV and DNS TXT record. A client discovers the list of available instances for a given service type by querying the DNS PTR
History In 1997
Stuart Cheshire proposed adapting Apple's mature
Name Binding Protocol to IP networks to address the lack of service discovery capability. Cheshire subsequently joined Apple and authored
IETF draft proposals for mDNS and DNS-based Service Discovery, supporting the transition from AppleTalk to IP networking. In 2002, Apple announced an implementation of both protocols under the name Rendezvous (later renamed Bonjour). It was first included in
Mac OS X 10.2, replacing the
Service Location Protocol (SLP) used in
10.1. In 2013, the proposals were ratified as and .
DNS-SD with multicast mDNS uses packets similar to
unicast DNS to resolve hostnames, except they are sent over a multicast link. Each host listens on the mDNS port, 5353, transmitted to a well-known multicast address and resolves requests for the
DNS record of its
.local hostname (e.g. the
A,
AAAA,
CNAME) to its IP address. When an mDNS client needs to resolve a local hostname to an IP address, it sends a DNS request for that name to the well-known multicast address; the computer with the corresponding A/AAAA record replies with its IP address. The mDNS multicast address is for IPv4 and for IPv6 link-local addressing. DNS Service Discovery, aka
DNS-SD requests can also be sent using mDNS to yield zero-configuration DNS-SD. This uses DNS
PTR, SRV,
TXT records to advertise instances of service types, domain names for those instances, and optional configuration parameters for connecting to those instances. But SRV records can now resolve to
.local domain names, which mDNS can resolve to local IP addresses.
Support DNS-SD is used by Apple products, most network printers, many Linux distributions, including
Debian and
Ubuntu, and a number of third-party products for various operating systems. For example, many
OS X network applications written by Apple, including
Safari,
iChat, and
Messages, can use DNS-SD to locate nearby servers and peer-to-peer clients. Windows 10 includes support for DNS-SD for applications written using JavaScript. Individual applications may include their own support in older versions of the operating system, such that most instant messaging and
VoIP clients on Windows support DNS-SD. Some
Unix,
BSD, and Linux distributions also include DNS-SD. For example, Ubuntu ships
Avahi, an mDNS/DNS-SD implementation, in its base distribution.
UPnP UPnP has some protocol components with the purpose of service discovery.
SSDP Simple Service Discovery Protocol (SSDP) is a UPnP protocol, used in
Windows XP and later. SSDP uses HTTP notification announcements that give a service-type
URI and a Unique Service Name (USN). Service types are regulated by the Universal Plug and Play Steering Committee. SSDP is supported by many printer, NAS and appliance manufacturers such as Brother. It is supported by certain brands of network equipment, and in many
SOHO firewall appliances, where host computers behind it may pierce holes for applications. It is also used in
home theater PC systems to facilitate media exchange between host computers and the media center.
DLNA Digital Living Network Alliance (DLNA) is another suite of standards that uses UPnP for the discovery of networked devices. DLNA has a long list of prominent manufacturers producing devices such as TVs, NAS devices and so forth that support it. DLNA is supported by all major operating systems. DLNA service discovery is layered on top of SSDP.
Efforts toward an IETF standard protocol SLP is supported by
Hewlett-Packard's network
printers,
Novell, and
Sun Microsystems. SLP is described in and and implementations are available for both
Solaris and
Linux.
AllJoyn AllJoyn is an open-source software stack for a myriad of devices, ranging from IoT devices to full-size computers, for discovery and control of devices on networks (Wifi, Ethernet) and other links (Bluetooth, ZigBee, etc.). It uses mDNS and
HTTP over UDP and other protocols. The project has, however, not been active since 2016, and is not recommended for use in new projects. ==Standardization==