Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbatt!UCBVAX.BERKELEY.EDU!karels%okeeffe From: karels%okeeffe@UCBVAX.BERKELEY.EDU.UUCP Newsgroups: mod.protocols.tcp-ip Subject: Re: UDP vs. ICMP dest unreachable messages Message-ID: <8702112015.AA08974@okeeffe.Berkeley.EDU> Date: Wed, 11-Feb-87 15:15:10 EST Article-I.D.: okeeffe.8702112015.AA08974 Posted: Wed Feb 11 15:15:10 1987 Date-Received: Thu, 12-Feb-87 19:28:57 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 25 Approved: tcp-ip@sri-nic.arpa ICMP unreachable messages are reported to users of UDP sockets in 4.3 if and only if the socket is "connected"; that is, that the remote address is bound as well as the local address. Otherwise, it is unreasonable to report errors even though the local address matches that in an ICMP error message. The error may well refer to a datagram other than the most recently sent, in which case it is likely to be confusing at best. This is used in the UNIX resolver code to detect the abscence of a local server; it depends on receiving the "port unreachable" error. On the other hand, the same binding causes late messages from one server to be discarded after "connecting" to the next of a series of choices. This isn't a problem in the standard installation, with only one server choice (the server on the same host). The UNIX nameserver does not take advantage of ICMP error returns, in part because it runs multi-threaded, processing other requests while awaiting a reply to a recursive query. However, recent additions to the BIND server will enable it to measure response time of multiple servers for a domain. It will then choose the fastest server, which will not include one that was recently unreachable if there are alternatives. Recent questions about the ordering of root servers in BIND configuration files are no longer interesting. Current servers use the configuration file to reach the root servers initially, which they then query about the root domain. That information is then used as long as it is valid. Mike