After a little detective work:

The concept of a 'standard' (Internet) network byte order appears to have crept into the RFC series without actually officially linking Appendix B of RFC 791 (dated Sptember 1981) to the term.

AFAICS the earliest use of the term 'standard network byte order' is in RFC951 which defines BOOTP and appeared in September 1985.

Also the BSD networking code provided the various network-to-host and host-to-network conversion functions/macros 2 or 3 years earlier.

Arguably, network byte order is crystallized forever by Danny Cohen's IEN 137 "On Holy Wars and a Plea for Peace" (April 1 1980 ;-) ) which sanctified the terms 'Big-endian' and 'Little-endian' for computer addressing architectures and effectively expressed a preference for using Big-endian for network transmssion order (but the term network byte order is not used).

As regards the assumption of 'standard network byte order' in IPv6 is, I guess, implicit in
1. The reference to RFC 791
2. The view that IPv6 is an update of IPv4 such that the beginning of the IP packets allow you to distinguish packets of different IP versions when they are on the same wire. Arguably that would not happen if the network byte/bit orders were different. 3. The many (tens? hundreds?) of RFCs between 791 and 1883 and since that explicitly mention (standard) network byte order.

Maybe somebody ought to write a very short I-D just to set the record straight.

/Elwyn

Jeroen Massar wrote:
Manfredi, Albert E wrote:
[..]
I guess we'll just have to go with "Internet convention" arguments.

Well we can also go the Wikipedia route:
8<---------------
Networks generally use big-endian numbers as addresses; this is historically because this allowed the routing to be decided as a telephone number was dialed. Motorola processors have generally used big-endian numbers, and ARM processors gained truly switchable endianness in order to improve performance of networking devices based on them.
---------------->8

and more importantly:
8<------------------
The Internet Protocol defines a standard "big-endian" network byte order. This byte order is used for all numeric values in the packet headers and by many higher level protocols and file formats that are designed for use over IP.
-------------------->8

convincing is also:
8<-------------------
The Berkeley sockets API defines a set of functions to convert 16- and 32-bit integers to and from network byte order: the htonl and htons functions convert 32-bit ("long") and 16-bit ("short") values respectively from host to network order; whereas the ntohl and ntohs functions convert from network to host order.
-------------------->8

If Internet Protocols where not usually/always in Big Endian format, then those functions would not have existed.

Greets,
 Jeroen

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

--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www1.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www1.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to