Skip to main content

6. Support Services

6. SUPPORT SERVICES​

6.1 DOMAIN NAME TRANSLATION

  6.1.1 INTRODUCTION

     Every host MUST implement a resolver for the Domain Name System
     (DNS), and it MUST implement a mechanism using this DNS
     resolver to convert host names to IP addresses and vice-versa
     [DNS:1, DNS:2].

     In addition to the DNS, a host MAY also implement a host name
     translation mechanism that searches a local Internet host
     table.  See Section 6.1.3.8 for more information on this
     option.

     DISCUSSION:
          Internet host name translation was originally performed by
          searching local copies of a table of all hosts.  This
          table became too large to update and distribute in a
          timely manner and too large to fit into many hosts, so the
          DNS was invented.

          The DNS creates a distributed database used primarily for
          the translation between host names and host addresses.
          Implementation of DNS software is required.  The DNS
          consists of two logically distinct parts: name servers and
          resolvers (although implementations often combine these
          two logical parts in the interest of efficiency) [DNS:2].

          Domain name servers store authoritative data about certain
          sections of the database and answer queries about the
          data.  Domain resolvers query domain name servers for data
          on behalf of user processes.  Every host therefore needs a
          DNS resolver; some host machines will also need to run
          domain name servers.  Since no name server has complete
          information, in general it is necessary to obtain
          information from more than one name server to resolve a
          query.

  6.1.2  PROTOCOL WALK-THROUGH

     An implementor must study references [DNS:1] and [DNS:2]
     carefully.  They provide a thorough description of the theory,
     protocol, and implementation of the domain name system, and
     reflect several years of experience.









     6.1.2.1  Resource Records with Zero TTL: RFC-1035 Section 3.2.1

        All DNS name servers and resolvers MUST properly handle RRs
        with a zero TTL: return the RR to the client but do not
        cache it.

        DISCUSSION:
             Zero TTL values are interpreted to mean that the RR can
             only be used for the transaction in progress, and
             should not be cached; they are useful for extremely
             volatile data.

     6.1.2.2  QCLASS Values: RFC-1035 Section 3.2.5

        A query with "QCLASS=*" SHOULD NOT be used unless the
        requestor is seeking data from more than one class.  In
        particular, if the requestor is only interested in Internet
        data types, QCLASS=IN MUST be used.

     6.1.2.3  Unused Fields: RFC-1035 Section 4.1.1

        Unused fields in a query or response message MUST be zero.

     6.1.2.4  Compression: RFC-1035 Section 4.1.4

        Name servers MUST use compression in responses.

        DISCUSSION:
             Compression is essential to avoid overflowing UDP
             datagrams; see Section 6.1.3.2.

     6.1.2.5  Misusing Configuration Info: RFC-1035 Section 6.1.2

        Recursive name servers and full-service resolvers generally
        have some configuration information containing hints about
        the location of root or local name servers.  An
        implementation MUST NOT include any of these hints in a
        response.

        DISCUSSION:
             Many implementors have found it convenient to store
             these hints as if they were cached data, but some
             neglected to ensure that this "cached data" was not
             included in responses.  This has caused serious
             problems in the Internet when the hints were obsolete
             or incorrect.









  6.1.3  SPECIFIC ISSUES

     6.1.3.1  Resolver Implementation

        A name resolver SHOULD be able to multiplex concurrent
        requests if the host supports concurrent processes.

        In implementing a DNS resolver, one of two different models
        MAY optionally be chosen: a full-service resolver, or a stub
        resolver.


        (A)  Full-Service Resolver

             A full-service resolver is a complete implementation of
             the resolver service, and is capable of dealing with
             communication failures, failure of individual name
             servers, location of the proper name server for a given
             name, etc.  It must satisfy the following requirements:

             o    The resolver MUST implement a local caching
                  function to avoid repeated remote access for
                  identical requests, and MUST time out information
                  in the cache.

             o    The resolver SHOULD be configurable with start-up
                  information pointing to multiple root name servers
                  and multiple name servers for the local domain.
                  This insures that the resolver will be able to
                  access the whole name space in normal cases, and
                  will be able to access local domain information
                  should the local network become disconnected from
                  the rest of the Internet.


        (B)  Stub Resolver

             A "stub resolver" relies on the services of a recursive
             name server on the connected network or a "nearby"
             network.  This scheme allows the host to pass on the
             burden of the resolver function to a name server on
             another host.  This model is often essential for less
             capable hosts, such as PCs, and is also recommended
             when the host is one of several workstations on a local
             network, because it allows all of the workstations to
             share the cache of the recursive name server and hence
             reduce the number of domain requests exported by the
             local network.







             At a minimum, the stub resolver MUST be capable of
             directing its requests to redundant recursive name
             servers.  Note that recursive name servers are allowed
             to restrict the sources of requests that they will
             honor, so the host administrator must verify that the
             service will be provided.  Stub resolvers MAY implement
             caching if they choose, but if so, MUST timeout cached
             information.


     6.1.3.2  Transport Protocols

        DNS resolvers and recursive servers MUST support UDP, and
        SHOULD support TCP, for sending (non-zone-transfer) queries.
        Specifically, a DNS resolver or server that is sending a
        non-zone-transfer query MUST send a UDP query first.  If the
        Answer section of the response is truncated and if the
        requester supports TCP, it SHOULD try the query again using
        TCP.

        DNS servers MUST be able to service UDP queries and SHOULD
        be able to service TCP queries.  A name server MAY limit the
        resources it devotes to TCP queries, but it SHOULD NOT
        refuse to service a TCP query just because it would have
        succeeded with UDP.

        Truncated responses MUST NOT be saved (cached) and later
        used in such a way that the fact that they are truncated is
        lost.

        DISCUSSION:
             UDP is preferred over TCP for queries because UDP
             queries have much lower overhead, both in packet count
             and in connection state.  The use of UDP is essential
             for heavily-loaded servers, especially the root
             servers.  UDP also offers additional robustness, since
             a resolver can attempt several UDP queries to different
             servers for the cost of a single TCP query.

             It is possible for a DNS response to be truncated,
             although this is a very rare occurrence in the present
             Internet DNS.  Practically speaking, truncation cannot
             be predicted, since it is data-dependent.  The
             dependencies include the number of RRs in the answer,
             the size of each RR, and the savings in space realized
             by the name compression algorithm.  As a rule of thumb,
             truncation in NS and MX lists should not occur for
             answers containing 15 or fewer RRs.







             Whether it is possible to use a truncated answer
             depends on the application.  A mailer must not use a
             truncated MX response, since this could lead to mail
             loops.

             Responsible practices can make UDP suffice in the vast
             majority of cases.  Name servers must use compression
             in responses.  Resolvers must differentiate truncation
             of the Additional section of a response (which only
             loses extra information) from truncation of the Answer
             section (which for MX records renders the response
             unusable by mailers).  Database administrators should
             list only a reasonable number of primary names in lists
             of name servers, MX alternatives, etc.

             However, it is also clear that some new DNS record
             types defined in the future will contain information
             exceeding the 512 byte limit that applies to UDP, and
             hence will require TCP.  Thus, resolvers and name
             servers should implement TCP services as a backup to
             UDP today, with the knowledge that they will require
             the TCP service in the future.

        By private agreement, name servers and resolvers MAY arrange
        to use TCP for all traffic between themselves.  TCP MUST be
        used for zone transfers.

        A DNS server MUST have sufficient internal concurrency that
        it can continue to process UDP queries while awaiting a
        response or performing a zone transfer on an open TCP
        connection [DNS:2].

        A server MAY support a UDP query that is delivered using an
        IP broadcast or multicast address.  However, the Recursion
        Desired bit MUST NOT be set in a query that is multicast,
        and MUST be ignored by name servers receiving queries via a
        broadcast or multicast address.  A host that sends broadcast
        or multicast DNS queries SHOULD send them only as occasional
        probes, caching the IP address(es) it obtains from the
        response(s) so it can normally send unicast queries.

        DISCUSSION:
             Broadcast or (especially) IP multicast can provide a
             way to locate nearby name servers without knowing their
             IP addresses in advance.  However, general broadcasting
             of recursive queries can result in excessive and
             unnecessary load on both network and servers.








     6.1.3.3  Efficient Resource Usage

        The following requirements on servers and resolvers are very
        important to the health of the Internet as a whole,
        particularly when DNS services are invoked repeatedly by
        higher level automatic servers, such as mailers.

        (1)  The resolver MUST implement retransmission controls to
             insure that it does not waste communication bandwidth,
             and MUST impose finite bounds on the resources consumed
             to respond to a single request.  See [DNS:2] pages 43-
             44 for specific recommendations.

        (2)  After a query has been retransmitted several times
             without a response, an implementation MUST give up and
             return a soft error to the application.

        (3)  All DNS name servers and resolvers SHOULD cache
             temporary failures, with a timeout period of the order
             of minutes.

             DISCUSSION:
                  This will prevent applications that immediately
                  retry soft failures (in violation of Section 2.2
                  of this document) from generating excessive DNS
                  traffic.

        (4)  All DNS name servers and resolvers SHOULD cache
             negative responses that indicate the specified name, or
             data of the specified type, does not exist, as
             described in [DNS:2].

        (5)  When a DNS server or resolver retries a UDP query, the
             retry interval SHOULD be constrained by an exponential
             backoff algorithm, and SHOULD also have upper and lower
             bounds.

             IMPLEMENTATION:
                  A measured RTT and variance (if available) should
                  be used to calculate an initial retransmission
                  interval.  If this information is not available, a
                  default of no less than 5 seconds should be used.
                  Implementations may limit the retransmission
                  interval, but this limit must exceed twice the
                  Internet maximum segment lifetime plus service
                  delay at the name server.

        (6)  When a resolver or server receives a Source Quench for







             a query it has issued, it SHOULD take steps to reduce
             the rate of querying that server in the near future.  A
             server MAY ignore a Source Quench that it receives as
             the result of sending a response datagram.

             IMPLEMENTATION:
                  One recommended action to reduce the rate is to
                  send the next query attempt to an alternate
                  server, if there is one available.  Another is to
                  backoff the retry interval for the same server.


     6.1.3.4  Multihomed Hosts

        When the host name-to-address function encounters a host
        with multiple addresses, it SHOULD rank or sort the
        addresses using knowledge of the immediately connected
        network number(s) and any other applicable performance or
        history information.

        DISCUSSION:
             The different addresses of a multihomed host generally
             imply different Internet paths, and some paths may be
             preferable to others in performance, reliability, or
             administrative restrictions.  There is no general way
             for the domain system to determine the best path.  A
             recommended approach is to base this decision on local
             configuration information set by the system
             administrator.

        IMPLEMENTATION:
             The following scheme has been used successfully:

             (a)  Incorporate into the host configuration data a
                  Network-Preference List, that is simply a list of
                  networks in preferred order.  This list may be
                  empty if there is no preference.

             (b)  When a host name is mapped into a list of IP
                  addresses, these addresses should be sorted by
                  network number, into the same order as the
                  corresponding networks in the Network-Preference
                  List.  IP addresses whose networks do not appear
                  in the Network-Preference List should be placed at
                  the end of the list.










     6.1.3.5  Extensibility

        DNS software MUST support all well-known, class-independent
        formats [DNS:2], and SHOULD be written to minimize the
        trauma associated with the introduction of new well-known
        types and local experimentation with non-standard types.

        DISCUSSION:
             The data types and classes used by the DNS are
             extensible, and thus new types will be added and old
             types deleted or redefined.  Introduction of new data
             types ought to be dependent only upon the rules for
             compression of domain names inside DNS messages, and
             the translation between printable (i.e., master file)
             and internal formats for Resource Records (RRs).

             Compression relies on knowledge of the format of data
             inside a particular RR.  Hence compression must only be
             used for the contents of well-known, class-independent
             RRs, and must never be used for class-specific RRs or
             RR types that are not well-known.  The owner name of an
             RR is always eligible for compression.

             A name server may acquire, via zone transfer, RRs that
             the server doesn't know how to convert to printable
             format.  A resolver can receive similar information as
             the result of queries.  For proper operation, this data
             must be preserved, and hence the implication is that
             DNS software cannot use textual formats for internal
             storage.

             The DNS defines domain name syntax very generally -- a
             string of labels each containing up to 63 8-bit octets,
             separated by dots, and with a maximum total of 255
             octets.  Particular applications of the DNS are
             permitted to further constrain the syntax of the domain
             names they use, although the DNS deployment has led to
             some applications allowing more general names.  In
             particular, Section 2.1 of this document liberalizes
             slightly the syntax of a legal Internet host name that
             was defined in RFC-952 [DNS:4].

     6.1.3.6  Status of RR Types

        Name servers MUST be able to load all RR types except MD and
        MF from configuration files.  The MD and MF types are
        obsolete and MUST NOT be implemented; in particular, name
        servers MUST NOT load these types from configuration files.







        DISCUSSION:
             The RR types MB, MG, MR, NULL, MINFO and RP are
             considered experimental, and applications that use the
             DNS cannot expect these RR types to be supported by
             most domains.  Furthermore these types are subject to
             redefinition.

             The TXT and WKS RR types have not been widely used by
             Internet sites; as a result, an application cannot rely
             on the the existence of a TXT or WKS RR in most
             domains.

     6.1.3.7  Robustness

        DNS software may need to operate in environments where the
        root servers or other servers are unavailable due to network
        connectivity or other problems.  In this situation, DNS name
        servers and resolvers MUST continue to provide service for
        the reachable part of the name space, while giving temporary
        failures for the rest.

        DISCUSSION:
             Although the DNS is meant to be used primarily in the
             connected Internet, it should be possible to use the
             system in networks which are unconnected to the
             Internet.  Hence implementations must not depend on
             access to root servers before providing service for
             local names.

     6.1.3.8  Local Host Table

        DISCUSSION:
             A host may use a local host table as a backup or
             supplement to the DNS.  This raises the question of
             which takes precedence, the DNS or the host table; the
             most flexible approach would make this a configuration
             option.

             Typically, the contents of such a supplementary host
             table will be determined locally by the site.  However,
             a publically-available table of Internet hosts is
             maintained by the DDN Network Information Center (DDN
             NIC), with a format documented in [DNS:4].  This table
             can be retrieved from the DDN NIC using a protocol
             described in [DNS:5].  It must be noted that this table
             contains only a small fraction of all Internet hosts.
             Hosts using this protocol to retrieve the DDN NIC host
             table should use the VERSION command to check if the







             table has changed before requesting the entire table
             with the ALL command.  The VERSION identifier should be
             treated as an arbitrary string and tested only for
             equality; no numerical sequence may be assumed.

             The DDN NIC host table includes administrative
             information that is not needed for host operation and
             is therefore not currently included in the DNS
             database; examples include network and gateway entries.
             However, much of this additional information will be
             added to the DNS in the future.  Conversely, the DNS
             provides essential services (in particular, MX records)
             that are not available from the DDN NIC host table.

  6.1.4  DNS USER INTERFACE

     6.1.4.1  DNS Administration

        This document is concerned with design and implementation
        issues in host software, not with administrative or
        operational issues.  However, administrative issues are of
        particular importance in the DNS, since errors in particular
        segments of this large distributed database can cause poor
        or erroneous performance for many sites.  These issues are
        discussed in [DNS:6] and [DNS:7].

     6.1.4.2  DNS User Interface

        Hosts MUST provide an interface to the DNS for all
        application programs running on the host.  This interface
        will typically direct requests to a system process to
        perform the resolver function [DNS:1, 6.1:2].

        At a minimum, the basic interface MUST support a request for
        all information of a specific type and class associated with
        a specific name, and it MUST return either all of the
        requested information, a hard error code, or a soft error
        indication.  When there is no error, the basic interface
        returns the complete response information without
        modification, deletion, or ordering, so that the basic
        interface will not need to be changed to accommodate new
        data types.

        DISCUSSION:
             The soft error indication is an essential part of the
             interface, since it may not always be possible to
             access particular information from the DNS; see Section
             6.1.3.3.







        A host MAY provide other DNS interfaces tailored to
        particular functions, transforming the raw domain data into
        formats more suited to these functions.  In particular, a
        host MUST provide a DNS interface to facilitate translation
        between host addresses and host names.

     6.1.4.3 Interface Abbreviation Facilities

        User interfaces MAY provide a method for users to enter
        abbreviations for commonly-used names.  Although the
        definition of such methods is outside of the scope of the
        DNS specification, certain rules are necessary to insure
        that these methods allow access to the entire DNS name space
        and to prevent excessive use of Internet resources.

        If an abbreviation method is provided, then:

        (a)  There MUST be some convention for denoting that a name
             is already complete, so that the abbreviation method(s)
             are suppressed.  A trailing dot is the usual method.

        (b)  Abbreviation expansion MUST be done exactly once, and
             MUST be done in the context in which the name was
             entered.


        DISCUSSION:
             For example, if an abbreviation is used in a mail
             program for a destination, the abbreviation should be
             expanded into a full domain name and stored in the
             queued message with an indication that it is already
             complete.  Otherwise, the abbreviation might be
             expanded with a mail system search list, not the
             user's, or a name could grow due to repeated
             canonicalizations attempts interacting with wildcards.

        The two most common abbreviation methods are:

        (1)  Interface-level aliases

             Interface-level aliases are conceptually implemented as
             a list of alias/domain name pairs. The list can be
             per-user or per-host, and separate lists can be
             associated with different functions, e.g. one list for
             host name-to-address translation, and a different list
             for mail domains.  When the user enters a name, the
             interface attempts to match the name to the alias
             component of a list entry, and if a matching entry can







             be found, the name is replaced by the domain name found
             in the pair.

             Note that interface-level aliases and CNAMEs are
             completely separate mechanisms; interface-level aliases
             are a local matter while CNAMEs are an Internet-wide
             aliasing mechanism which is a required part of any DNS
             implementation.

        (2)  Search Lists

             A search list is conceptually implemented as an ordered
             list of domain names.  When the user enters a name, the
             domain names in the search list are used as suffixes to
             the user-supplied name, one by one, until a domain name
             with the desired associated data is found, or the
             search list is exhausted.  Search lists often contain
             the name of the local host's parent domain or other
             ancestor domains.  Search lists are often per-user or
             per-process.

             It SHOULD be possible for an administrator to disable a
             DNS search-list facility.  Administrative denial may be
             warranted in some cases, to prevent abuse of the DNS.

             There is danger that a search-list mechanism will
             generate excessive queries to the root servers while
             testing whether user input is a complete domain name,
             lacking a final period to mark it as complete.  A
             search-list mechanism MUST have one of, and SHOULD have
             both of, the following two provisions to prevent this:

             (a)  The local resolver/name server can implement
                  caching  of negative responses (see Section
                  6.1.3.3).

             (b)  The search list expander can require two or more
                  interior dots in a generated domain name before it
                  tries using the name in a query to non-local
                  domain servers, such as the root.

             DISCUSSION:
                  The intent of this requirement is to avoid
                  excessive delay for the user as the search list is
                  tested, and more importantly to prevent excessive
                  traffic to the root and other high-level servers.
                  For example, if the user supplied a name "X" and
                  the search list contained the root as a component,







                  a query would have to consult a root server before
                  the next search list alternative could be tried.
                  The resulting load seen by the root servers and
                  gateways near the root would be multiplied by the
                  number of hosts in the Internet.

                  The negative caching alternative limits the effect
                  to the first time a name is used.  The interior
                  dot rule is simpler to implement but can prevent
                  easy use of some top-level names.


  6.1.5  DOMAIN NAME SYSTEM REQUIREMENTS SUMMARY

                                           |           | | | |S| |
                                           |           | | | |H| |F
                                           |           | | | |O|M|o
                                           |           | |S| |U|U|o
                                           |           | |H| |L|S|t
                                           |           |M|O| |D|T|n
                                           |           |U|U|M| | |o
                                           |           |S|L|A|N|N|t
                                           |           |T|D|Y|O|O|t
FEATURESECTIONTTe
GENERAL ISSUES
                                           |           | | | | | |

Implement DNS name-to-address conversion |6.1.1 |x| | | | | Implement DNS address-to-name conversion |6.1.1 |x| | | | | Support conversions using host table |6.1.1 | | |x| | | Properly handle RR with zero TTL |6.1.2.1 |x| | | | | Use QCLASS=* unnecessarily |6.1.2.2 | |x| | | | Use QCLASS=IN for Internet class |6.1.2.2 |x| | | | | Unused fields zero |6.1.2.3 |x| | | | | Use compression in responses |6.1.2.4 |x| | | | | | | | | | | | Include config info in responses |6.1.2.5 | | | | |x| Support all well-known, class-indep. types |6.1.3.5 |x| | | | | Easily expand type list |6.1.3.5 | |x| | | | Load all RR types (except MD and MF) |6.1.3.6 |x| | | | | Load MD or MF type |6.1.3.6 | | | | |x| Operate when root servers, etc. unavailable |6.1.3.7 |x| | | | | -----------------------------------------------|-----------|-|-|-|-|-|-- RESOLVER ISSUES: | | | | | | | | | | | | | | Resolver support multiple concurrent requests |6.1.3.1 | |x| | | | Full-service resolver: |6.1.3.1 | | |x| | | Local caching |6.1.3.1 |x| | | | |

Information in local cache times out |6.1.3.1 |x| | | | | Configurable with starting info |6.1.3.1 | |x| | | | Stub resolver: |6.1.3.1 | | |x| | | Use redundant recursive name servers |6.1.3.1 |x| | | | | Local caching |6.1.3.1 | | |x| | | Information in local cache times out |6.1.3.1 |x| | | | | Support for remote multi-homed hosts: | | | | | | | Sort multiple addresses by preference list |6.1.3.4 | |x| | | | | | | | | | | -----------------------------------------------|-----------|-|-|-|-|-|-- TRANSPORT PROTOCOLS: | | | | | | | | | | | | | | Support UDP queries |6.1.3.2 |x| | | | | Support TCP queries |6.1.3.2 | |x| | | | Send query using UDP first |6.1.3.2 |x| | | | |1 Try TCP if UDP answers are truncated |6.1.3.2 | |x| | | | Name server limit TCP query resources |6.1.3.2 | | |x| | | Punish unnecessary TCP query |6.1.3.2 | | | |x| | Use truncated data as if it were not |6.1.3.2 | | | | |x| Private agreement to use only TCP |6.1.3.2 | | |x| | | Use TCP for zone transfers |6.1.3.2 |x| | | | | TCP usage not block UDP queries |6.1.3.2 |x| | | | | Support broadcast or multicast queries |6.1.3.2 | | |x| | | RD bit set in query |6.1.3.2 | | | | |x| RD bit ignored by server is b'cast/m'cast |6.1.3.2 |x| | | | | Send only as occasional probe for addr's |6.1.3.2 | |x| | | | -----------------------------------------------|-----------|-|-|-|-|-|-- RESOURCE USAGE: | | | | | | | | | | | | | | Transmission controls, per [DNS:2] |6.1.3.3 |x| | | | | Finite bounds per request |6.1.3.3 |x| | | | | Failure after retries => soft error |6.1.3.3 |x| | | | | Cache temporary failures |6.1.3.3 | |x| | | | Cache negative responses |6.1.3.3 | |x| | | | Retries use exponential backoff |6.1.3.3 | |x| | | | Upper, lower bounds |6.1.3.3 | |x| | | | Client handle Source Quench |6.1.3.3 | |x| | | | Server ignore Source Quench |6.1.3.3 | | |x| | | -----------------------------------------------|-----------|-|-|-|-|-|-- USER INTERFACE: | | | | | | | | | | | | | | All programs have access to DNS interface |6.1.4.2 |x| | | | | Able to request all info for given name |6.1.4.2 |x| | | | | Returns complete info or error |6.1.4.2 |x| | | | | Special interfaces |6.1.4.2 | | |x| | | Name<->Address translation |6.1.4.2 |x| | | | | | | | | | | | Abbreviation Facilities: |6.1.4.3 | | |x| | |

Convention for complete names |6.1.4.3 |x| | | | | Conversion exactly once |6.1.4.3 |x| | | | | Conversion in proper context |6.1.4.3 |x| | | | | Search list: |6.1.4.3 | | |x| | | Administrator can disable |6.1.4.3 | |x| | | | Prevention of excessive root queries |6.1.4.3 |x| | | | | Both methods |6.1.4.3 | |x| | | |

-----------------------------------------------------------------

1. Unless there is private agreement between particular resolver and​

 particular server.

6.2 HOST INITIALIZATION

  6.2.1  INTRODUCTION

     This section discusses the initialization of host software
     across a connected network, or more generally across an
     Internet path.  This is necessary for a diskless host, and may
     optionally be used for a host with disk drives.  For a diskless
     host, the initialization process is called "network booting"
     and is controlled by a bootstrap program located in a boot ROM.

     To initialize a diskless host across the network, there are two
     distinct phases:

     (1)  Configure the IP layer.

          Diskless machines often have no permanent storage in which
          to store network configuration information, so that
          sufficient configuration information must be obtained
          dynamically to support the loading phase that follows.
          This information must include at least the IP addresses of
          the host and of the boot server.  To support booting
          across a gateway, the address mask and a list of default
          gateways are also required.

     (2)  Load the host system code.

          During the loading phase, an appropriate file transfer
          protocol is used to copy the system code across the
          network from the boot server.

     A host with a disk may perform the first step, dynamic
     configuration.  This is important for microcomputers, whose
     floppy disks allow network configuration information to be
     mistakenly duplicated on more than one host.  Also,
     installation of new hosts is much simpler if they automatically
     obtain their configuration information from a central server,
     saving administrator time and decreasing the probability of
     mistakes.

  6.2.2  REQUIREMENTS

     6.2.2.1  Dynamic Configuration

        A number of protocol provisions have been made for dynamic
        configuration.

        o    ICMP Information Request/Reply messages







             This obsolete message pair was designed to allow a host
             to find the number of the network it is on.
             Unfortunately, it was useful only if the host already
             knew the host number part of its IP address,
             information that hosts requiring dynamic configuration
             seldom had.

        o    Reverse Address Resolution Protocol (RARP) [BOOT:4]

             RARP is a link-layer protocol for a broadcast medium
             that allows a host to find its IP address given its
             link layer address.  Unfortunately, RARP does not work
             across IP gateways and therefore requires a RARP server
             on every network.  In addition, RARP does not provide
             any other configuration information.

        o    ICMP Address Mask Request/Reply messages

             These ICMP messages allow a host to learn the address
             mask for a particular network interface.

        o    BOOTP Protocol [BOOT:2]

             This protocol allows a host to determine the IP
             addresses of the local host and the boot server, the
             name of an appropriate boot file, and optionally the
             address mask and list of default gateways.  To locate a
             BOOTP server, the host broadcasts a BOOTP request using
             UDP.  Ad hoc gateway extensions have been used to
             transmit the BOOTP broadcast through gateways, and in
             the future the IP Multicasting facility will provide a
             standard mechanism for this purpose.


        The suggested approach to dynamic configuration is to use
        the BOOTP protocol with the extensions defined in "BOOTP
        Vendor Information Extensions" RFC-1084 [BOOT:3].  RFC-1084
        defines some important general (not vendor-specific)
        extensions.  In particular, these extensions allow the
        address mask to be supplied in BOOTP; we RECOMMEND that the
        address mask be supplied in this manner.

        DISCUSSION:
             Historically, subnetting was defined long after IP, and
             so a separate mechanism (ICMP Address Mask messages)
             was designed to supply the address mask to a host.
             However, the IP address mask and the corresponding IP
             address conceptually form a pair, and for operational







             simplicity they ought to be defined at the same time
             and by the same mechanism, whether a configuration file
             or a dynamic mechanism like BOOTP.

             Note that BOOTP is not sufficiently general to specify
             the configurations of all interfaces of a multihomed
             host.  A multihomed host must either use BOOTP
             separately for each interface, or configure one
             interface using BOOTP to perform the loading, and
             perform the complete initialization from a file later.

             Application layer configuration information is expected
             to be obtained from files after loading of the system
             code.

     6.2.2.2  Loading Phase

        A suggested approach for the loading phase is to use TFTP
        [BOOT:1] between the IP addresses established by BOOTP.

        TFTP to a broadcast address SHOULD NOT be used, for reasons
        explained in Section 4.2.3.4.

6.3 REMOTE MANAGEMENT

  6.3.1  INTRODUCTION

     The Internet community has recently put considerable effort
     into the development of network management protocols.  The
     result has been a two-pronged approach [MGT:1, MGT:6]:  the
     Simple Network Management Protocol (SNMP) [MGT:4] and the
     Common Management Information Protocol over TCP (CMOT) [MGT:5].

     In order to be managed using SNMP or CMOT, a host will need to
     implement an appropriate management agent.  An Internet host
     SHOULD include an agent for either SNMP or CMOT.

     Both SNMP and CMOT operate on a Management Information Base
     (MIB) that defines a collection of management values.  By
     reading and setting these values, a remote application may
     query and change the state of the managed system.

     A standard MIB [MGT:3] has been defined for use by both
     management protocols, using data types defined by the Structure
     of Management Information (SMI) defined in [MGT:2].  Additional
     MIB variables can be introduced under the "enterprises" and
     "experimental" subtrees of the MIB naming space [MGT:2].

     Every protocol module in the host SHOULD implement the relevant
     MIB variables.  A host SHOULD implement the MIB variables as
     defined in the most recent standard MIB, and MAY implement
     other MIB variables when appropriate and useful.

  6.3.2  PROTOCOL WALK-THROUGH

     The MIB is intended to cover both hosts and gateways, although
     there may be detailed differences in MIB application to the two
     cases.  This section contains the appropriate interpretation of
     the MIB for hosts.  It is likely that later versions of the MIB
     will include more entries for host management.

     A managed host must implement the following groups of MIB
     object definitions: System, Interfaces, Address Translation,
     IP, ICMP, TCP, and UDP.

     The following specific interpretations apply to hosts:

     o    ipInHdrErrors

          Note that the error "time-to-live exceeded" can occur in a
          host only when it is forwarding a source-routed datagram.







     o    ipOutNoRoutes

          This object counts datagrams discarded because no route
          can be found.  This may happen in a host if all the
          default gateways in the host's configuration are down.

     o    ipFragOKs, ipFragFails, ipFragCreates

          A host that does not implement intentional fragmentation
          (see "Fragmentation" section of [INTRO:1]) MUST return the
          value zero for these three objects.

     o    icmpOutRedirects

          For a host, this object MUST always be zero, since hosts
          do not send Redirects.

     o    icmpOutAddrMaskReps

          For a host, this object MUST always be zero, unless the
          host is an authoritative source of address mask
          information.

     o    ipAddrTable

          For a host, the "IP Address Table" object is effectively a
          table of logical interfaces.

     o    ipRoutingTable

          For a host, the "IP Routing Table" object is effectively a
          combination of the host's Routing Cache and the static
          route table described in "Routing Outbound Datagrams"
          section of [INTRO:1].

          Within each ipRouteEntry, ipRouteMetric1...4 normally will
          have no meaning for a host and SHOULD always be -1, while
          ipRouteType will normally have the value "remote".

          If destinations on the connected network do not appear in
          the Route Cache (see "Routing Outbound Datagrams section
          of [INTRO:1]), there will be no entries with ipRouteType
          of "direct".


     DISCUSSION:
          The current MIB does not include Type-of-Service in an
          ipRouteEntry, but a future revision is expected to make







          this addition.

          We also expect the MIB to be expanded to allow the remote
          management of applications (e.g., the ability to partially
          reconfigure mail systems).  Network service applications
          such as mail systems should therefore be written with the
          "hooks" for remote management.

  6.3.3  MANAGEMENT REQUIREMENTS SUMMARY

                                           |           | | | |S| |
                                           |           | | | |H| |F
                                           |           | | | |O|M|o
                                           |           | |S| |U|U|o
                                           |           | |H| |L|S|t
                                           |           |M|O| |D|T|n
                                           |           |U|U|M| | |o
                                           |           |S|L|A|N|N|t
                                           |           |T|D|Y|O|O|t
FEATURESECTIONTTe
Support SNMP or CMOT agent6.3.1x
Implement specified objects in standard MIB6.3.1x