Novell adapted IPX from the Xerox* Network System (XNS*) Internet Datagram Protocol (IDP). IPX is a connectionless datagram protocol. Connectionless means that when a process running on a particular node uses IPX to communicate with a process on another node, no connection between the two nodes is established. Thus, IPX packets are addressed and sent to their destinations, but there is no guarantee or verification of successful delivery. Any packet acknowledgment or connection control is provided by protocols above IPX, such as SPX. Datagram means that each packet is treated as an individual entity, having no logical or sequential relation to any other packet.
As shown in Figure 1-1, IPX operates at the OSI Network layer. As a Network-layer protocol, IPX addresses and routes packets from one location to another on an IPX internetwork. IPX bases its routing decisions on the address fields in its header and on the information it receives from RIP or NLSP. IPX uses this information to forward packets to their destination node or to the next router providing a path to the destination node.
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 1-2 shows the structure of an IPX packet.
Figure 1-2.
IPX Packet Structure

The following describes the IPX packet fields:
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.
The packet length is at least 30 bytes (for the IPX header).
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.
Novell currently uses the packet types listed in Table 1-1.
Packet Type |
Field Value (Hex) |
Purpose |
|---|---|---|
NLSP |
0x00 |
NLSP packets |
Routing information |
0x01 |
RIP packets |
Service advertising |
0x04 |
SAP packets |
Sequenced |
0x05 |
SPX packets |
NCP |
0x11 |
NCP packets |
Propagated |
0x14 |
NetBIOS and other propagated packets |
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.”
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 Omninet 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.
Sockets route packets to different processes within a single node. Novell reserves several sockets for use in the NetWare environment. Refer to Table 1-2 for a partial list of NetWare socket numbers.
NOTE: IPX does not have a broadcast socket number (such as 0xFFFF).
Broadcast addresses are not allowed.
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.
IPX defines its own internetwork and intranode addressing. For intranetwork (node) addressing, IPX uses the physical address assigned to the network interface board.
The IPX network address uniquely identifies an IPX server on an IPX network and individual processes within the server. A complete IPX network address is a 12-byte hexadecimal number comprising the following components:
The following is an example of a complete IPX network address:
FEDCBA98 1A2B3C5D7E9F 0453
Each number in an IPX address is contained in a field in the IPX header and represents a source or destination network, node, or socket. The network number is used only for Network-layer operations, namely routing. The node number is used for local, or same-segment, packet transmission. The socket number directs a packet to a process operating within a node.
Each address component is described in the following sections.
The IPX network number is the 4-byte hexadecimal address that serves as the basis for IPX packet routing. Each network segment on an internetwork is assigned a unique network number. NetWare routers use this number to forward packets to their final destination network.
An IPX network number can contain up to eight digits, including zeros. (Leading zeros are usually not displayed.) For example, 0xFEDCBA98, 0x1234567D, and 0xC7 are all valid network numbers.
With the fast setup feature available from NIASCFG, Novell Internet Access Server 4.1 can automatically detect the network number and data-link frame type used on an IPX network. After you configure a board and select a driver during the initial router configuration, the router sends a RIP all routes request packet to the network. From the responses it receives, the router determines the network number and frame type it needs to use.
The destination network of an IPX packet is typically an IPX network to which a unique network number has been assigned. However, three network numbers---0x0, 0xFFFFFFFF, and 0xFFFFFFFE---are reserved and cannot be used to identify a specific network. These numbers have the following meanings:
With Novell Internet Access Server 4.1, a router that receives an IPX packet with an unknown destination network can do one of two things: If another router on the network is advertising 0xFFFFFFFE, the router forwards the packet to that router. If 0xFFFFFFFE is not advertised on the network, the packet's destination remains unknown and the router discards the packet.
Both RIP and NLSP have been modified to recognize 0xFFFFFFFE as the default route. On a RIP network, the default route is typically advertised by a RIP router that connects the LAN to a larger network infrastructure, such as a corporate backbone or transit LAN.
Novell Internet Access Server 4.1 cannot advertise the default route dynamically, but you can configure the router to advertise it as a static route. To read about static routes, refer to "Static Routes and Services.”
NetWare 3TM servers and NetWare 4 servers have an additional identifier called an internal network number. This is a unique hexadecimal number between one and eight digits that is assigned to the server at installation. The internal network is a logical network that NetWare uses to advertise services and route IPX packets to the physical networks attached to the server.
The internal network number overcomes some routing and connectivity limitations inherent in NetWare 2. These are summarized in the following paragraphs.
A NetWare 2 server selects a primary interface and advertises its services as reachable through that interface. On a network with more than one server, packets might travel an extra hop to reach their destination.
A NetWare 2 server loses network connectivity if its primary network interface board fails, even if the server has Network-layer connectivity through another interface. Consider a NetWare 2 server with connections to two networks. The server advertises its services through the primary interface attached to one of the networks. If that interface fails, workstations attached to the server through the second network might not be able to log in to the server.
The node number is the 6-byte hexadecimal address that identifies a device on an IPX network. This device can be a file server, router, workstation, or printer. The node number is identical to the physical address assigned to the interface board that connects the device to the network.
The IPX header contains a Destination Node field and a Source Node field. These fields contain the same destination and source node addresses found in the MAC header. A NetWare workstation, for example, uses the destination node address to locate and forward packets to another workstation on the same network segment.
IPX requires the node number to be unique only within the same IPX network. For example, a node on network FEDCBA98 can use the number 1A2B3C5D7E9F, and a node on network 1234567D can also use the number 1A2B3C5D7E9F. Because each node has a different network number, IPX recognizes each node as having a legitimate, unique address.
The socket number is the 2-byte hexadecimal number that identifies the ultimate destination of an IPX packet within the node. This destination is actually a process---such as routing (RIP) or advertising (SAP)---that operates within the node. Because several processes are typically operating at any given time, socket numbers provide a type of "mail slot" by which each process can identify itself to IPX.
A process that must communicate on the network requests that a socket number be assigned to it. Any packets that IPX receives that are addressed to that socket are passed to the process. Socket numbers provide a quick method of routing packets within a node.
Table 1-2 lists some socket numbers and processes used in the NetWare environment.
Socket Number |
Process |
|---|---|
0x451 |
NCP |
0x452 |
SAP |
0x453 |
RIP |
0x455 |
Novell NetBIOS |
0x456 |
Diagnostics |
0x9001 |
NLSP |
0x9004 |
IPXWANTM protocol (For information about IPXWAN, refer to "IPX Operation over WAN Links.”) |
Socket numbers between 0x4000 and 0x7FFF are dynamic sockets; these are used by workstations to communicate with file servers and other network devices. Socket numbers between 0x8000 and 0xFFFF are well-known sockets; these are assigned by Novell to specific processes. For example, 0x9001 is the socket number that identifies NLSP. Software developers writing NetWare applications can contact Novell to reserve well-known sockets.
NetWare routers interconnect different IPX network segments and receive instructions for addressing and routing packets between these segments from the IPX protocol. IPX accomplishes these and other Network-layer tasks with the help of RIP, SAP, and NLSP.
Consider a NetWare workstation that wants to send data to another workstation. If both workstations share the same network number (both are on the same segment), the sending workstation addresses and sends packets directly to the destination workstation's physical address. If the two workstations have different network numbers (each is on a different segment), the sending workstation must first find a router on its own segment that can forward packets to the segment on which the destination workstation resides.
To find this router, the sending workstation broadcasts a RIP packet requesting the fastest route to the destination segment. The router on the sending segment with the shortest path to the destination segment responds to the request. In its response, the router includes its own network and node address in the IPX header.
NOTE: If the sending node is a router instead of a workstation, the router does not need to broadcast a RIP request to obtain this information; the router obtains the information from its internal routing table.
When the sending workstation knows the router node address, it addresses and sends packets to the destination workstation as follows:
When a router receives an IPX packet, it performs the following tasks:
A RIP router discards the packet if the value in this field is greater than 16.
An NLSP router discards the packet if the value in this field is greater than the value of the Hop Count Limit parameter.
Note that if the packet type is 20 (0x14, NetBIOS), the packet is handled as follows:
If the router finds a match, it discards the packet to prevent multiple traversals of the same network segment. If the router finds no match, it performs the next step.
If the packet is addressed to the router, the appropriate socket process handles it internally; otherwise, the router forwards the packet.
NOTE: Packets that must be handled internally are those addressed directly to the router and those broadcast (destination node = 0xFFFFFFFFFFFF) to any network segment to which the router is directly connected. Usually, only RIP, SAP, and diagnostic packets fall into this category.
When forwarding packets, the router can take one of two possible actions. If the packet is destined for a network number to which the router is directly connected, the router performs the following tasks:
IMPORTANT: If the Transport Control field equals the maximum allowed hop count before the field is incremented, the router discards the packet. For RIP routers, the hop count limit is 16; for NLSP routers, this limit can be set to any number between 8 and 127.
Note also that broadcast packets are never rebroadcast onto the network segment from which they are received.
If the router is not directly connected to the segment on which the final destination node resides, it sends the packet to the next router in the path to the destination node, as follows:
The router gets this information from its Routing Information Table.