Path: gmdzi!unido!mcsun!uunet!snorkelwacker.mit.edu!ai-lab!ai.mit.edu!gnulists From: r...@gnu.ai.mit.edu (Richard Stallman) Newsgroups: gnu.announce,gnu.gcc.announce,gnu.g++.announce,gnu.emacs.announce, gnu.misc.discuss Subject: Patent on a standard-byte order for intermachine communication Message-ID: <9107131607.AA14833@mole.gnu.ai.mit.edu> Date: 13 Jul 91 16:07:45 GMT Followup-To: gnu.misc.discuss Lines: 46 Approved: info-...@prep.ai.mit.edu To: info-...@prep.ai.mit.edu, info-gnu-em...@prep.ai.mit.edu To: info-...@prep.ai.mit.edu, info-...@prep.ai.mit.edu US patent number 4,956,809 covers using a single standard byte ordering for transfer of data between machines whose normal byte ordering is different. Unless invalidated (by prior art from mid-1982 or earlier), this patent prohibits the principal means for transfering data between disparate types of computer systems. For example, Sun is now being faced with demands to pay royalties for NFS, which uses this method. This directly threatens the GNU operating system, since we were planning to support NFS. (It also threatens BSD.) Here is an explanation of the communication problem, and of the solution which this patent covers. The memory of today's computers is divided into units called bytes. Each byte holds a single text character, or a number from 0 to 255. Each byte of storage has a unique address. These addresses start at 0 and range upward. When you need to represent a number in a range bigger than 0 to 255, you need more than one byte. For example, two bytes can hold a number in the range from 0 to 65535. Four bytes can hold a number in the range from 0 to 4294967295. This four-byte number might be held in bytes 72, 73, 74 and 75--four consecutive bytes. There are various options for distributing the value of the number among the bytes. In practice, most of today's computers use one of two methods. The "little endian" method is to put the less significant figures in the low-numbered bytes. The "big endian" method is to put the most significant figures in the low numbered bytes. (These names come from "Gulliver's Travels".) If you transfer a block of data from a big-endian computer to a little-endian computer, preserving the order of the bytes, all the multi-byte numbers will be scrambled. The simplest way to communicate data between different computers is to set up a convention for the ordering of the bytes in any multi-byte number. If the big-endian ordering convention is chosen, then little-endian computers must reverse the byte order when they read and write network messages. This is exactly what is covered by US patent 4,956,809. If you find prior art dated 1982 or earlier, please inform lea...@prep.ai.mit.edu.