The PARC Universal Packet (commonly abbreviated to PUP or PuP, although the original documents usually use Pup) was one of the two earliest internetwork ; it was created by researchers at Xerox PARC in the mid-1970s. (Technically, the name "PUP" only refers to the internetwork-level protocol, but it is also applied to the whole protocol suite). The entire suite provided routing and packet delivery, as well as higher level functions such as a reliable byte stream, along with numerous applications.
The origins of the PUP suite lie in two developments; in the same events in the early 1970s as the very earliest stage of the development of TCP/IP (see History of the Internet), and the creation of the Ethernet local area network at PARC. However, the development of PUP split off because Xerox PARC wished to move ahead with implementation, for in-house use. The fundamental design of the PUP suite was substantially complete by 1974.
In the 1980s Xerox used PUP as the base for the Xerox Network Systems (XNS) protocol suite; some of the protocols in the XNS suite (such as the ) were lightly modified versions of the ones in the PUP suite, but others are quite different, reflecting the experience gained with PUP and IP.
The main internetwork layer is PUP, which roughly corresponds to the (IP) layer in TCP/IP. A full PUP network address consists of an 8-bit network number, an 8-bit host number, and a 16-bit socket number. The network number has a particular special value which means 'this network', for use by hosts which do not (yet) know their network number.
Unlike TCP/IP, socket fields are part of the full network address in the PUP header, so that upper-layer protocols did not need to implement their own demultiplexing; PUP also supplies packet types (again, unlike IP). Also, an optional 2-byte checksum covers the entire packet.
PUP packets are up to 554 bytes long (including the 20 byte PUP header), and the checksum. This is a smaller packet size than IP, which requires all hosts to support a minimum of 576 bytes (but allows packets of up to 65K bytes, if the hosts support them); individual PUP host pairs on a particular network might use larger packets, but no PUP router is required to handle them. Larger packets can be fragmented.