RFC 1788

ICMP Domain Name Messages

๐Ÿ“… published April 1995, from ietf

RFC 1788: ICMP Domain Name Messages ๐Ÿฆ‹

Okay bestie, let's start with the title block โœจ This is RFC 1788, called ICMP Domain Name Messages. It came out of the Network Working Group, it's written by William Allen Simpson of Daydreamer ๐Ÿ’…, it's dated April 1995, and it's in the Experimental category ๐Ÿงช. The title block doesn't list anything this document obsoletes or updates.


Status of this Memo ๐Ÿ“‹

This document defines an Experimental Protocol for the Internet community. It is not an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited.

IESG Note ๐Ÿง

An Internet Engineering Steering Group comment from the co-Area Director for IPng: Please note well that this memo is an individual product of the author. It presents one view of the IN-ADDR mechanism, motivated by discussion in the IPNG WG of the difficulty of secure, dynamic update of the reverse tree. Other IETF discussion and ongoing standards work on this area will be found in the IP Next Generation (ipngwg), DNS IXFR, Notification, and Dynamic Update (dnsind), DNS Security (dnssec) working groups.

Abstract ๐ŸŒธ

This document specifies ICMP messages for learning the Fully Qualified Domain Name associated with an IP address.

Table of Contents ๐Ÿ—‚๏ธ

     1.     Introduction ..........................................    2
        1.1       Direct Query ....................................    3
        1.2       Multicast .......................................    3
        1.3       Domain Names ....................................    3
        1.4       Messages ........................................    4

     2.     Domain Name Request ...................................    4

     3.     Domain Name Reply .....................................    5

     SECURITY CONSIDERATIONS ......................................    6
     REFERENCES ...................................................    6
     ACKNOWLEDGEMENTS .............................................    7
     AUTHOR'S ADDRESS .............................................    7

1. Introduction ๐ŸŽ€

okay so the Domain Name System (DNS) is described in [RFC-1034]. The IN-ADDR domain of the DNS is specified [RFC-1035] to do address to domain name resolution, and to make it easier to query and locate all gateways (routers) on a particular network in the Internet.

Neither function has been remarkably successful. The IN-ADDR domain is not reliably populated. ๐Ÿ’€

As multiple routers were used at boundaries and within networks, the IN-ADDR mechanism was found to be inadequate. Hosts now locate routers using "ICMP Router Discovery Messages" [RFC-1256] instead.

As network numbers migrated to "classless" routing and aggregation, the IN-ADDR delegation granularity fragmented and started requiring overlapping administration. The "reverse" IN-ADDR administration often doesn't follow the same delegation as the "forward" domain name tree. This structure isn't very friendly to cooperative secure updating of the DNS ๐Ÿ˜ญ

As application servers appeared that need the Domain Name for user interaction and security logging, the IN-ADDR servers got flooded with queries. This causes long user-visible pauses when sessions start ๐Ÿ™ˆ

1.1. Direct Query ๐Ÿงš

This document proposes that each unicast address be queried directly for its corresponding Domain Name. The advantages are that the naming is under the same administration as the address assignment, and the queries are distributed the same way IP routing is. In effect, the routing is used to index the database. It's giving efficiency ๐Ÿ˜Œโœจ

1.2. Multicast ๐ŸŒˆ

Only a few well-known multicast addresses are populated in the IN-ADDR domain. The ephemeral nature of most multicast addresses isn't conducive to cooperative secure updating of the DNS.

However, the technique described here is not useful for multicast addresses. A query to a multicast address could result in a storm of replies. Most multicast groups aren't named, or the member nodes aren't configured with the name.

The IN-ADDR method SHOULD continue to be used for reverse lookup of well-known multicast addresses in the range 224.0.0.0 to 224.0.255.255. Other multicast addresses are an issue for further study. ๐Ÿ”ฎ

1.3. Domain Names ๐Ÿงฉ

Each Domain Name is written as a sequence of labels. Each label is represented as a one octet length field, followed by that number of octets. Since every Domain Name ends with the null label of the root, a Domain Name is terminated by a length byte of zero. The most significant two bits of every length octet must be '00', and the remaining six bits of the length field limit the label to 63 octets or less.

When the most significant two bits of the length octet are '11', the length is interpreted as a 2 octet sequence, indicating an offset from the beginning of the message (Type field). More details are in [RFC-1035] "Message Compression".

To keep implementations simple, the total length of a Domain Name (including label octets and label length octets) is restricted to 255 octets or less. ๐Ÿ“

1.4. Messages ๐Ÿ’Œ

The datagram format and basic facilities are already defined for ICMP [RFC-792].

The up-to-date values of the ICMP Type field are specified in the most recent "Assigned Numbers" [RFC-1700]. This document concerns the following values:

    37  Domain Name Request
    38  Domain Name Reply

2. Domain Name Request ๐Ÿ’–

Here's the layout of the request. Bestie, look at those little boxes ๐Ÿฅน

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Identifier          |        Sequence Number        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

And here's what each field means:

   Type             37

   Code             0

   Checksum         The ICMP Checksum.

   Identifier       If Code is zero, a value to aid in matching requests
                    and replies.  For example, it might be used like a
                    port in TCP or UDP to identify a session.  May be
                    zero.

   Sequence Number  If Code is zero, a value to aid in matching requests
                    and replies.  For example, the number might be
                    incremented on each request sent.  May be zero.

A separate Domain Name Request is used for each IP Destination queried.

Any ICMP Domain Name Request that arrives with a broadcast or multicast Destination MUST be silently discarded. ๐Ÿ™…โ€โ™€๏ธ

When an ICMP error message comes in, implementations MAY attempt to resolve the Domain Name using the IN-ADDR method. ๐Ÿคทโ€โ™€๏ธ

3. Domain Name Reply ๐Ÿฆ‹

And here's the reply layout, which has the extra Time-To-Live and Names bits:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Identifier          |        Sequence Number        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Time-To-Live                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Names ...
   +-+-+-+-+-+-+-+-

The field details:

   Type             38

   Code             0

   Checksum         The ICMP Checksum.

   Identifier       Copied from the request.

   Sequence Number  Copied from the request.

   Time-To-Live     The number of seconds that the name may be cached.
                    For historic reasons, this value is a signed 2s-
                    complement number.

   Names            zero or more Fully Qualified Domain Names.  The
                    length of this field is determined from the total
                    length of the datagram.

                    When no names are known, the field is eliminated
                    (zero length), but the Reply is sent as an
                    authoritative indication that no name is known.

                    When more than one name is known, all such names
                    SHOULD be listed.

                    Any name which cannot entirely fit within the Reply
                    MTU is not sent.

The IP Source in a Reply MUST be the same as the IP Destination of the corresponding Request message. ๐ŸŽฏ

Every host and router MUST implement an ICMP Domain Name server function that receives Domain Name Requests and sends the matching Domain Name Replies. This is non-negotiable, babe ๐Ÿ‘‘

A host SHOULD also implement an application-layer interface for sending a Domain Name Request and receiving a Domain Name Reply, for diagnostic purposes. ๐Ÿงช


Security Considerations ๐Ÿšจ

โš ๏ธ Read this part closely, it's serious business ๐Ÿ˜ค

A primary purpose of this specification is to provide a mechanism for address to name resolution that is more secure than the IN-ADDR reverse tree. This mechanism can be used with the IP Security Protocols for authentication and privacy.

Although the routing infrastructure to the Destination does not provide security in and of itself, it is at least as reliable as delivery of correspondence for the other sessions with the same peer.

A DNS cryptographic signature, located by using the reply in the forward DNS direction, can be used to verify the reply itself. ๐Ÿ”

References ๐Ÿ“š

  • [RFC-792] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792, USC/Information Sciences Institute, September 1981.
  • [RFC-1034] Mockapetris, P., "Domain Names - Concepts and Facilities", STD 13, RFC 1034, USC/Information Sciences Institute, November 1987.
  • [RFC-1035] Mockapetris, P., "Domain Names - Implementation and Specification", STD 13, RFC 1035, USC/Information Sciences Institute, November 1987.
  • [RFC-1256] Deering, S., Editor, "ICMP Router Discovery Messages", RFC 1256, Xerox PARC, September 1991.
  • [RFC-1700] Reynolds, J., and J. Postel, "ASSIGNED NUMBERS", STD 2, RFC 1700, USC/Information Sciences Institute, October 1994.

Acknowledgements ๐Ÿซถ

The DNSIND and IPng Working Groups contributed substantial amounts of discussion.

Additional comments should be submitted to the namedroppers@internic.net mailing list. ๐Ÿ’œ

Author's Address ๐Ÿ’…

Questions about this memo can also be directed to:

   William Allen Simpson
   Daydreamer
   Computer Systems Consulting Services
   1384 Fontaine
   Madison Heights, Michigan  48071

   Bill.Simpson@um.cc.umich.edu
       bsimpson@MorningStar.com
๐Ÿ“ฆ where this page comes from