The IPX packet is similar to an XNS IDP packet and comprises two parts:
The minimum IPX packet size---excluding the MAC header---is 30 bytes (IPX header only). Historically, the maximum size of routed IPX packets has been 576 bytes (IPX header and data). Until recently, all routed IPX packets were between 30 and 576 bytes. However, the IPX protocol has always allowed packet sizes up to 65,535 bytes.
NOTE: Media constraints typically limit the actual maximum packet size allowed to something less than 65,535 bytes. Ethernet II packets, for example, are limited to a data size of 1,500 bytes, not including the MAC header.
The IPX header is placed after the MAC header and before the data. Figure 3 shows the structure of an IPX packet.
Figure 3
IPX Packet Structure
The following describes the IPX packet fields:
Checksum ---Packet integrity check.
The checksum is used by the NetWare SFT IIITM software and NetWare 4TM software. Older versions of NetWare did not use the IPX checksum and required that this field be set to 0xFFFF.
Packet Length ---Length, in bytes, of the complete packet, which is the length of the IPX header plus the length of the data. The packet length is at least 30 bytes (for the IPX header).
Transport Control ---Number of routers a packet has traversed on the way to its destination. IMPORTANT: On a traditional, RIP-based IPX router, IPX packets whose Transport Control field reaches a value of 16 are discarded. With NLSP, an IPX packet can travel up to 127 hops to reach its destination. You make this possible by setting the Hop Count Limit parameter from the Novell Internet Access Server Configuration utility (NIASCFG). This enables you to limit the number of routers (hops) an IPX packet traverses before it is discarded.
Sending nodes always set the Transport Control field to zero when building an IPX packet. When a router receives a packet that requires further routing, it increments this field by one and forwards the packet.
Packet Type ---Type of service offered or required by the packet. Novell currently uses the packet types listed in Table 1.
Table 1. Packet Types
Destination Network ---Number of the network to which the destination node is attached. When a sending node sets this field to 0x0 (that is, 0x00000000), the destination node is assumed to be on the same network segment as the sending (or source) node. A special case exists when a workstation sends SAP Get Nearest Server and RIP Get Local Target (or Route Request) broadcast requests at initialization time. Because the workstation does not yet know which network it belongs to, it sets both the Source Network and Destination Network fields to 0 for these requests. When a router receives one of these requests, it sends a reply directly to the sending workstation, filling in the Source Network and Destination Network fields with the appropriate network numbers. NOTE: IPX does not have a broadcast network number (such as 0xFFFFFFFF).
In addition to network number 0, the numbers 0xFFFFFFFF and 0xFFFFFFFE are reserved for specific purposes. For this reason, they should not be assigned to any IPX network. For more information about reserved network numbers, refer to Reserved Network Numbers.
Destination Node ---Physical address of the destination node. Not all LAN topologies use the same size address field. A node on an Ethernet network requires all 6 bytes to define its address; a node on an Ammonite network requires only 1 byte. A node address of 0xFFFFFFFFFFFF (that is, 6 bytes of 0xFF) broadcasts the packet to all nodes on the destination network.
Destination Socket ---Socket address of the packet destination process. Sockets route packets to different processes within a single node. Novell reserves several sockets for use in the NetWare environment. Refer to Table 2 for a partial list of NetWare socket numbers. NOTE: IPX does not have a broadcast socket number (such as 0xFFFF).
Source Network ---Number of the network to which the source node is attached. If a sending node sets this field to zero, the local network to which the source is connected is unknown. For routers, the rules that apply to the Destination Network field also apply to the Source Network field, except that routers can propagate packets that were received with this field set to zero.
Source Node ---Physical address of the source node. Broadcast addresses are not allowed.
Source Socket ---Socket address of the process that transmits the packet. Processes communicating in a peer-to-peer fashion do not need to send and receive on the same socket number. On a network of workstations and servers, the server usually listens on a specific socket for service requests. In such a case, the source socket is not necessarily the same or even significant. All that matters is that the server reply to the source socket. For example, all NetWare file servers have the same socket address, but requests to them can originate from any socket number. Source socket numbers follow the same conventions as those for destination sockets.
Higher-Level Protocol Headers ---Headers of higher-level NetWare protocols, such as NCP or SPX. These headers occupy the data portion of the IPX packet.