PDF | On Jan 1, , Tim Niemüller and others published Zero Configuration Networking. Zero Configuration Networking: The Definitive Guide walks you through this groundbreaking network technology, with a complete description of the protocols . Zeroconf running on Linux and Windows XP operating systems respectively. The main implementations of Zeroconf may be found in Apple's Bonjour, Avahi, ZCIP, CUPS,. terney.infonf terney.info .
|Language:||English, Spanish, Indonesian|
|Distribution:||Free* [*Registration Required]|
O'Reilly Media, Inc. Zero Configuration Networking: The Definitive Guide, the but instead of printing on paper, it archives documents as date-stamped PDF. (such as corporate local-area networks or dial-in accounts) using dynamic network configuration. In these, all necessary parameters are assigned to the host by. The IETF Zeroconf Working Group was chartered September and held its . setting up Windows XP to generate PDF from any Windows application that.
This has normally been accomplished by typing in the address of a known server into a field in one of the devices on the network. In early systems this was normally required on every device, but this has been pushed up one layer in the hierarchy to the DHCP servers or broadband devices like cable modems that receive this information from their internet service provider.
This has reduced the user-side administration requirements and provides a key element of zero-configuration access. Assigning an address to a local device, e. Additionally, traditional DNS servers are not expected to automatically correct for changes in configuration.
For instance, if a printer is moved from one floor to another it might be assigned a new IP address by the local DHCP server. This system has small, but not zero, management overhead even on very large enterprise networks. For example, Computer Browser Services running on server operating systems or later versions of Windows are elected as so-called master browser over those that are not running a server operating system or running older versions of Windows.
Both implementations are very similar. This introduces special semantics for the domain local,  which is considered a problem by some members of the IETF. 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. It also supports for example a network printer to advertise itself as a host sharing a printer device and any related services it supports. None of these need any configuration for use on the local subnet.
NetBIOS has traditionally been supported only in expensive printers for use in companies and the cheapest devices of some brands today still don't have support for it, but home and SOHO users would connect printers to a computer over say a parallel port or USB and share it from the computer. However, today even entry-level printers with Wi-Fi or Ethernet support of some brands support it natively, allowing the printer to be used without configuration even on very old operating systems combined with a generic PostScript driver, for example.
WS-Discovery[ edit ] Web Services Dynamic Discovery WS-Discovery is a technical specification that defines a multicast discovery protocol to locate services on a local network.
DNS-based service discovery[ edit ] DNS-SD allows clients to discover a named list of service instances, given a service type, 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. In this case, the responding host knows it currently has exclusive ownership of that name, and it knows that it currently does not have any IPv6 addresses, so an explicit negative response is preferable to the querier having to retransmit its query multiple times, and eventually give up with a timeout, before it can conclude that a given AAAA record does not exist.
On receipt of a question for a particular name, rrtype, and rrclass, for which a responder does have one or more unique answers, the responder MAY also include an NSEC record in the Additional Record Section indicating the nonexistence of other rrtypes for that name and rrclass. When used with name compression, this means that the 'Next Domain Name' field always takes exactly two bytes in the message. In practice this is not a significant limitation, since rrtypes above are not currently in widespread use.
This provision is to allow future enhancements to the protocol to be introduced in a backwards-compatible way that does not break compatibility with older Multicast DNS implementations.
For example, the TTL for address records in Multicast DNS is typically seconds see Section 10 , so the negative cache lifetime for an address record that does not exist should also be seconds. A responder MUST only generate negative responses to queries for which it has legitimate ownership of the name, rrtype, and rrclass in question, and can legitimately assert that no record with that name, rrtype, and rrclass exists.
A responder can assert that a specified rrtype does not exist for one of its names if it knows a priori that it has exclusive ownership of that name e.
If it were to use probe queries for a specific rrtype, then it would only own the name for that rrtype, and could not assert that other rrtypes do not exist. For example, if an interface has both an IPv6 link- local and an IPv6 routable address, both should be included in the response message so that queriers receive both and can make their own choice about which to use.
This allows a querier that only has an IPv6 link-local address to connect to the link-local address, and a different querier that has an IPv6 routable address to connect to the IPv6 routable address instead. This is to provide fate sharing, so that all a device's addresses are delivered atomically in a single message, to reduce the risk that packet loss could cause a querier to receive only the IPv4 addresses and not the IPv6 addresses, or vice versa.
In the event that a device has only IPv4 addresses but no IPv6 addresses, or vice versa, then the appropriate NSEC record SHOULD be placed into the additional section, so that queriers can know with certainty that the device has no addresses of that kind.
This is because when a query message contains more than one question, a Multicast DNS responder cannot generally be certain that other responders will not also be simultaneously generating answers to other questions in that query message.
Answers defending a name, in response to a probe for that name, are not subject to this delay rule and are still sent immediately. For example, when a responder has several responses it plans to send, each delayed by a different interval, then earlier responses SHOULD be delayed by up to an additional ms if that will permit them to be aggregated with other responses scheduled to go out a little later.
This is incorrect. If there are any records that match the query, the response is required only to contain at least one of them, not necessarily all of them. This somewhat surprising behavior is commonly seen with caching i. If a caching server receives a qtype "ANY" query for which it has at least one valid answer, it is allowed to return only those matching answers it happens to have already in its cache, and it is not required to reconsult the authoritative name server to check if there are any more records that also match the qtype "ANY" query.
For example, one might imagine that a query for qtype "ANY" for name "host. In reality, what happens is that it depends on the history of what queries have been previously received by intervening caching servers. If a caching server has no records for "host. However, if some other host has recently done a query for qtype "A" for name "host. Queriers receiving the record from B would use the TTL given by B and, hence, may delete the record sooner than A expects.
By sending its own multicast response correcting the TTL, A ensures that the record will be retained for the desired time. Legacy Unicast Responses If the source UDP port in a received Multicast DNS query is not port , this indicates that the querier originating the query is a simple resolver such as described in Section 5.
In addition, the cache-flush bit described in Section Were unicast responses sent to legacy resolvers to use the same high TTLs, these legacy resolvers, which do not implement these cache coherency mechanisms, could retain stale cached resource record data long after it is no longer valid. Traffic Reduction A variety of techniques are used to reduce the amount of traffic on the network. Generally, this applies only to Shared records, not Unique records, since if a Multicast DNS querier already has at least one Unique record in its cache then it should not be expecting further different answers to this question, since the Unique record s it already has comprise the complete answer, so it has no reason to be sending the query at all.
Doing so would simply consume space in the message without achieving the goal of suppressing responses and would, therefore, be a pointless waste of network capacity. Some of those records may have come from other hosts that are no longer on the network. Propagating that stale information to other Multicast DNS queriers on the network would not be helpful.
In this case, it should issue a Multicast DNS query containing a question and as many Known-Answer records as will fit. It MUST immediately follow the packet with another query packet containing no questions and as many more Known-Answer records as will fit.
If there are still too many records remaining to fit in the packet, it again sets the TC bit and continues until all the Known-Answer records have been sent. If the responder sees any of its answers listed in the Known-Answer lists of subsequent packets from the querying host, it MUST delete that answer from the list of answers it is planning to give provided that no other host on the network has also issued a query for that record and is waiting to receive an answer.
If the responder receives additional Known-Answer packets with the TC bit set, it SHOULD extend the delay as necessary to ensure a pause of ms after the last such packet before it sends its answer. This opens the potential risk that a continuous stream of Known- Answer packets could, theoretically, prevent a responder from answering indefinitely. In practice, answers are never actually delayed significantly, and should a situation arise where significant delays did happen, that would be a scenario where the network is so overloaded that it would be desirable to err on the side of caution.
The consequence of delaying an answer may be that it takes a user longer than usual to discover all the services on the local network; in contrast, the consequence of incorrectly answering before all the Known-Answer packets have been received would be wasted capacity sending unnecessary answers on an already overloaded network.
In this rare situation, sacrificing speed to preserve reliable network operation is the right trade-off. Duplicate Question Suppression If a host is planning to transmit or retransmit a query, and it sees another host on the network send a query containing the same "QM" question, and the Known-Answer Section of that query does not contain any records that this host would not also put in its own Known-Answer Section, then this host SHOULD treat its own query as having been sent.
When multiple queriers on the network are querying for the same resource records, there is no need for them to all be repeatedly asking the same question.
Duplicate Answer Suppression If a host is planning to send an answer, and it sees another host on the network send a response message containing the same answer record, and the TTL in that record is not less than the TTL this host would have given, then this host SHOULD treat its own answer as having been sent, and not also send an identical answer itself.
When multiple responders on the network have the same data, there is no need for all of them to respond. This feature is particularly useful when Multicast DNS Proxy Servers are in use, where there could be more than one proxy on the network giving Multicast DNS answers on behalf of some other host e.
Probing and Announcing on Startup Typically a Multicast DNS responder should have, at the very least, address records for all of its active interfaces. Creating and advertising an HINFO record on each interface as well can be useful to network administrators. Whenever a Multicast DNS responder starts up, wakes up from sleep, receives an indication of a network interface "Link Change" event, or has any other reason to believe that its network connectivity may have changed in some relevant way, it MUST perform the two startup steps below: Probing Section 8.
Probing The first startup step is that, for all those resource records that a Multicast DNS responder desires to be unique on the local link, it MUST send a Multicast DNS query asking for those resource records, to see if any of them are already in use.
All probe queries SHOULD be done using the desired resource record name and class usually class 1, "Internet" , and query type "ANY" , to elicit answers for all types of records with that name.
This allows a single question to be used in place of several questions, which is more efficient on the network. It also allows a host to verify exclusive ownership of a name for all rrtypes, which is desirable in most cases. It would be confusing, for example, if one host owned the "A" record for "myhost.
For example, a host can simultaneously probe for uniqueness of its "A" record and all its SRV records [ RFC ] in the same query message. When ready to send its Multicast DNS probe packet s the host should first wait for a short random delay time, uniformly distributed in the range ms.
This random delay is to guard against the case where several devices are powered on simultaneously, or several devices are connected to an Ethernet hub, which is then powered on, or some other external event happens that might cause a group of hosts to all send synchronized probes.
If, by ms after the third probe, no conflicting Multicast DNS responses have been received, the host may move to the next step, announcing. Note that probing is the one exception from the normal rule that there should be at least one second between repetitions of the same question, and the interval between subsequent repetitions should at least double. Only conflicting Multicast DNS responses received "live" from the network are considered valid for the purposes of determining whether probing has succeeded or failed.
In order to allow services to announce their presence without unreasonable delay, the time window for probing is intentionally set quite short. As a result of this, from the time the first probe packet is sent, another device on the network using that name has just ms to respond to defend its name.
On networks that are slow, or busy, or both, it is possible for round-trip latency to account for a few hundred milliseconds, and software delays in slow devices can add additional delay. Hence, it is important that when a device receives a probe query for a name that it is currently using, it SHOULD generate its response to defend that name immediately and send it as quickly as possible.
The usual rules about random delays before responding, to avoid sudden bursts of simultaneous answers from different hosts, do not apply here since normally at most one host should ever respond to a given probe question. Even when a single DNS query message contains multiple probe questions, it would be unusual for that message to elicit a defensive response from more than one other host.
During probing, from the time the first probe packet is sent until ms after the third probe, if any conflicting Multicast DNS response is received, then the probing host MUST defer to the existing host, and SHOULD choose new names for some or all of its resource records as appropriate. In the case of a host probing using query type "ANY" as recommended above, any answer containing a record with that name, of any type, MUST be considered a conflicting response and handled accordingly.
If fifteen conflicts occur within any ten-second period, then the host MUST wait at least five seconds before each successive additional probe attempt. This is to help ensure that, in the event of software bugs or other unanticipated problems, errant hosts do not flood the network with a continuous stream of multicast traffic. For very simple devices, a valid way to comply with this requirement is to always wait five seconds after any failed probe attempt before trying again.
If a responder knows by other means that its unique resource record set name, rrtype, and rrclass cannot already be in use by any other responder on the network, then it SHOULD skip the probing step for that resource record set. For example, when creating the reverse address mapping PTR records, the host can reasonably assume that no other host will be trying to create those same PTR records, since that would imply that the two hosts were trying to use the same IP address, and if that were the case, the two hosts would be suffering communication problems beyond the scope of what Multicast DNS is designed to solve.
Simultaneous Probe Tiebreaking The astute reader will observe that there is a race condition inherent in the previous description. If two hosts are probing for the same name simultaneously, neither will receive any response to the probe, and the hosts could incorrectly conclude that they may both proceed to use the name.
When a host is probing for a group of related records with the same name e. When a host that is probing for a record sees another host issue a query for the same record, it consults the Authority Section of that query.
If it finds any resource record s there which answers the query, then it compares the data of that those resource record s with its own tentative data. We consider first the simple case of a host probing for a single record, receiving a simultaneous probe from another host also probing for a single record.
The two records are compared and the lexicographically later data wins. This means that if the host finds that its own data is lexicographically later, it simply ignores the other host's probe. If the host finds that its own data is lexicographically earlier, then it defers to the winning host by waiting one second, and then begins probing for this record again.
The logic for waiting one second and then trying again is to guard against stale probe packets on the network possibly even stale probe packets sent moments ago by this host itself, before some configuration change, which may be echoed back after a short delay by some Ethernet switches and some If the winning simultaneous probe was from a real other host on the network, then after one second it will have completed its probing, and will answer subsequent probes.
If the apparently winning simultaneous probe was in fact just an old stale packet on the network maybe from the host itself , then when it retries its probing in one second, its probes will go unanswered, and it will successfully claim the name. The determination of "lexicographically later" is performed by first comparing the record class excluding the cache-flush bit described in Section If the record classes differ, then the numerically greater class is considered "lexicographically later".
Otherwise, if the record types differ, then the numerically greater type is considered "lexicographically later". Both RFCs were first officially published by the IETF in February , but Apple had already started to integrate the standards into its devices as an initiator in The software developed for this occasion, which is now known under the name Bonjour formerly Rendezvous , is open source and doubtlessly one of the most-used zeroconf solutions.
The configuration-free network architecture is available not only for macOS and iOS, but also for Windows. This got Apple to rethink their decision: Without delay, Stuart Cheshire was introduced and commissioned to develop a protocol variant for the new operating system, which resulted in the aforementioned cooperation with the Internet Engineering Task Force.
With Mac OS X Due to legal problems, they were forced to find a new title for the project, which is why the network software has had the name Bonjour since Version For example, the Apple music service iTunes uses the technology to automatically find other users who are sharing their music on the network. Windows users can either download a specific version for printing services or install an application whose environment contains the software.