home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1924.txt < prev    next >
Text File  |  1996-05-07  |  11KB  |  224 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                             R. Elz Request for Comments: 1924                       University of Melbourne Category: Informational                                     1 April 1996 
  8.  
  9.                 A Compact Representation of IPv6 Addresses 
  10.  
  11. Status of this Memo 
  12.  
  13.    This memo provides information for the Internet community.  This memo    does not specify an Internet standard of any kind.  Distribution of    this memo is unlimited. 
  14.  
  15. 1. Abstract     IPv6 addresses, being 128 bits long, need 32 characters to write in    the general case, if standard hex representation, is used, plus more    for any punctuation inserted (typically about another 7 characters,    or 39 characters total).  This document specifies a more compact    representation of IPv6 addresses, which permits encoding in a mere 20    bytes. 
  16.  
  17. 2. Introduction 
  18.  
  19.    It is always necessary to be able to write in characters the form of    an address, though in actual use it is always carried in binary.  For    IP version 4 (IP Classic) the well known dotted quad format is used.    That is, 10.1.0.23 is one such address.  Each decimal integer    represents a one octet of the 4 octet address, and consequently has a    value between 0 and 255 (inclusive).  The written length of the    address varies between 7 and 15 bytes. 
  20.  
  21.    For IPv6 however, addresses are 16 octets long [IPv6], if the old    standard form were to be used, addresses would be anywhere between 31    and 63 bytes, which is, of course, untenable. 
  22.  
  23.    Because of that, IPv6 had chosen to represent addresses using hex    digits, and use only half as many punctuation characters, which will    mean addresses of between 15 and 39 bytes, which is still quite long.    Further, in an attempt to save more bytes, a special format was    invented, in which a single run of zero octets can be dropped, the    two adjacent punctuation characters indicate this has happened, the    number of missing zeroes can be deduced from the fixed size of the    address. 
  24.  
  25.    In most cases, using genuine IPv6 addresses, one may expect the    address as written to tend toward the upper limit of 39 octets, as    long strings of zeroes are likely to be rare, and most of the other 
  26.  
  27.  
  28.  
  29. Elz                          Informational                      [Page 1] 
  30.  RFC 1924       A Compact Representation of IPv6 Addresses   1 April 1996 
  31.  
  32.     groups of 4 hex digits are likely to be longer than a single non-zero    digit (just as MAC addresses typically have digits spread throughout    their length). 
  33.  
  34.    This document specifies a new encoding, which can always represent    any IPv6 address in 20 octets.  While longer than the shortest    possible representation of an IPv6 address, this is barely longer    than half the longest representation, and will typically be shorter    than the representation of most IPv6 addresses. 
  35.  
  36. 3. Current formats 
  37.  
  38.    [AddrSpec] specifies that the preferred text representation of IPv6    addresses is in one of three conventional forms. 
  39.  
  40.    The preferred form is x:x:x:x:x:x:x:x, where the 'x's are the    hexadecimal values of the eight 16-bit pieces of the address. 
  41.  
  42.    Examples: 
  43.  
  44.         FEDC:BA98:7654:3210:FEDC:BA98:7654:3210  (39 characters) 
  45.  
  46.         1080:0:0:0:8:800:200C:417A  (25 characters) 
  47.  
  48.    The second, or zero suppressed, form allows "::" to indicate multiple    groups of suppressed zeroes, hence: 
  49.  
  50.         1080:0:0:0:8:800:200C:417A 
  51.  
  52.    may be represented as 
  53.  
  54.         1080::8:800:200C:417A 
  55.  
  56.    a saving of just 5 characters from this typical address form, and    still leaving 21 characters. 
  57.  
  58.    In other cases the saving is more dramatic, in the extreme case, the    address: 
  59.  
  60.         0:0:0:0:0:0:0:0 
  61.  
  62.    that is, the unspecified address, can be written as 
  63.  
  64.         :: 
  65.  
  66.    This is just 2 characters, which is a considerable saving.  However    such cases will rarely be encountered. 
  67.  
  68.  
  69.  
  70.  Elz                          Informational                      [Page 2] 
  71.  RFC 1924       A Compact Representation of IPv6 Addresses   1 April 1996 
  72.  
  73.     The third possible form mixes the new IPv6 form with the old IPv4    form, and is intended mostly for transition, when IPv4 addresses are    embedded into IPv6 addresses.  These can be considerably longer than    the longest normal IPv6 representation, and will eventually be phased    out.  Consequently they will not be considered further here. 
  74.  
  75. 4. The New Encoding Format 
  76.  
  77.    The new standard way of writing IPv6 addresses is to treat them as a    128 bit integer, encode that in base 85 notation, then encode that    using 85 ASCII characters. 
  78.  
  79. 4.1. Why 85? 
  80.  
  81.    2^128 is 340282366920938463463374607431768211456.  85^20 is    387595310845143558731231784820556640625, and thus in 20 digits of    base 85 representation all possible 2^128 IPv6 addresses can clearly    be encoded. 
  82.  
  83.    84^20 is 305904398238499908683087849324518834176, clearly not    sufficient, 21 characters would be needed to encode using base 84,    this wastage of notational space cannot be tolerated. 
  84.  
  85.    On the other hand, 94^19 is just    30862366077815087592879016454695419904, also insufficient to encode    all 2^128 different IPv6 addresses, so 20 characters would be needed    even with base 94 encoding.  As there are just 94 ASCII characters    (excluding control characters, space, and del) base 94 is the largest    reasonable value that can be used.  Even if space were allowed, base    95 would still require 20 characters. 
  86.  
  87.    Thus, any value between 85 and 94 inclusive could reasonably be    chosen.  Selecting 85 allows the use of the smallest possible subset    of the ASCII characters, enabling more characters to be retained for    other uses, eg, to delimit the address. 
  88.  
  89. 4.2. The Character Set 
  90.  
  91.    The character set to encode the 85 base85 digits, is defined to be,    in ascending order: 
  92.  
  93.              '0'..'9', 'A'..'Z', 'a'..'z', '!', '#', '$', '%', '&', '(',              ')', '*', '+', '-', ';', '<', '=', '>', '?', '@', '^', '_',              '`', '{', '|', '}', and '~'. 
  94.  
  95.    This set has been chosen with considerable care.  From the 94    printable ASCII characters, the following nine were omitted: 
  96.  
  97.  
  98.  
  99.  Elz                          Informational                      [Page 3] 
  100.  RFC 1924       A Compact Representation of IPv6 Addresses   1 April 1996 
  101.  
  102.        '"' and "'", which allow the representation of IPv6 addresses to       be quoted in other environments where some of the characters in       the chosen character set may, unquoted, have other meanings. 
  103.  
  104.       ',' to allow lists of IPv6 addresses to conveniently be written,       and '.' to allow an IPv6 address to end a sentence without       requiring it to be quoted. 
  105.  
  106.       '/' so IPv6 addresses can be written in standard CIDR       address/length notation, and ':' because that causes problems when       used in mail headers and URLs. 
  107.  
  108.       '[' and ']', so those can be used to delimit IPv6 addresses when       represented as text strings, as they often are for IPv4, 
  109.  
  110.       And last, '\', because it is often difficult to represent in a way       where it does not appear to be a quote character, including in the       source of this document. 
  111.  
  112. 5. Converting an IPv6 address to base 85. 
  113.  
  114.    The conversion process is a simple one of division, taking the    remainders at each step, and dividing the quotient again, then    reading up the page, as is done for any other base conversion. 
  115.  
  116.    For example, consider the address shown above 
  117.  
  118.         1080:0:0:0:8:800:200C:417A 
  119.  
  120.    In decimal, considered as a 128 bit number, that is    21932261930451111902915077091070067066. 
  121.  
  122.    As we divide that successively by 85 the following remainders emerge:    51, 34, 65, 57, 58, 0, 75, 53, 37, 4, 19, 61, 31, 63, 12, 66, 46, 70,    68, 4. 
  123.  
  124.    Thus in base85 the address is: 
  125.  
  126.         4-68-70-46-66-12-63-31-61-19-4-37-53-75-0-58-57-65-34-51. 
  127.  
  128.    Then, when encoded as specified above, this becomes: 
  129.  
  130.         4)+k&C#VzJ4br>0wv%Yp 
  131.  
  132.    This procedure is trivially reversed to produce the binary form of    the address from textually encoded format. 
  133.  
  134.  
  135.  
  136.  
  137.  
  138. Elz                          Informational                      [Page 4] 
  139.  RFC 1924       A Compact Representation of IPv6 Addresses   1 April 1996 
  140.  
  141.  6. Additional Benefit 
  142.  
  143.    Apart from generally reducing the length of an IPv6 address when    encode in a textual format, this scheme also has the benefit of    returning IPv6 addresses to a fixed length representation, leading    zeroes are never omitted, thus removing the ugly and awkward variable    length representation that has previously been recommended. 
  144.  
  145. 7. Implementation Issues 
  146.  
  147.    Many current processors do not find 128 bit integer arithmetic, as    required for this technique, a trivial operation.  This is not    considered a serious drawback in the representation, but a flaw of    the processor designs. 
  148.  
  149.    It may be expected that future processors will address this defect,    quite possibly before any significant IPv6 deployment has been    accomplished. 
  150.  
  151. 8. Security Considerations 
  152.  
  153.    By encoding addresses in this form, it is less likely that a casual    observer will be able to immediately detect the binary form of the    address, and thus will find it harder to make immediate use of the    address.  As IPv6 addresses are not intended to be learned by humans,    one reason for which being that they are expected to alter in    comparatively short timespan, by human perception, the somewhat    challenging nature of the addresses is seen as a feature. 
  154.  
  155.    Further, the appearance of the address, as if it may be random    gibberish in a compressed file, makes it much harder to detect by a    packet sniffer programmed to look for bypassing addresses. 
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175. Elz                          Informational                      [Page 5] 
  176.  RFC 1924       A Compact Representation of IPv6 Addresses   1 April 1996 
  177.  
  178.  9. References 
  179.  
  180.    [IPv6]        Internet Protocol, Version 6 (IPv6) Specification,                  S. Deering, R. Hinden, RFC 1883, January 4, 1996. 
  181.  
  182.    [AddrSpec]    IP Version 6 Addressing Architecture,                  R. Hinden, S. Deering, RFC 1884, January 4, 1996. 
  183.  
  184. 10. Author's Address 
  185.  
  186.    Robert Elz    Computer Science    University of Melbourne    Parkville, Victoria, 3052    Australia 
  187.  
  188.    EMail: kre@munnari.OZ.AU 
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  Elz                          Informational                      [Page 6] 
  223.  
  224.