IPX был оптимизирован для локальных сетей. Во-первых, IPX-адреса формируются с использованием MAC-адресов Ethernet и 32-битного идентификатора сети. Такая конструкция в большинстве случаев допускала «нулевую настройку» узлов IPX - просто подключите компьютер, и он подключится к сети. IPv6 с autoconf без сохранения состояния имеет те же свойства, кстати.
SPX (аналог TCP) также был сильно оптимизирован для локальных сетей. Например, в TCP имелись отдельные пакеты для каждого пакета вместо подтверждения для каждого октета без каких-либо явных функций управления окнами. Это позволило файловым серверам быть очень простым - просто выливать содержимое файла в Ethernet на максимальной скорости. Если клиент пропустил пакет, вы можете перечитать его с диска / кеша и отправить заново.
В отличие от этого, с TCP вы должны буферизовать все неподтвержденные данные и повторно отправить все данные в буфере отправки после потери пакета (если вы не используете функцию выборочного подтверждения).
Однако IPX вообще не подходил для глобальных сетей. Например, он не мог справиться с различными размерами кадра. То есть две сети с разными кадрами (скажем, Ethernet и Ethernet с гигантскими кадрами) не могли взаимодействовать без прокси-сервера или какой-либо инкапсуляции.
Кроме того, переупорядочение пакетов в глобальных сетях является повсеместным, но с SPX (по крайней мере, с внедрением Novell) это приводит к появлению множества ложных NAK.
И, конечно, IPX-адреса не были иерархическими, поэтому не очень подходили для маршрутизации. Теоретически для этого можно использовать сетевой идентификатор, но даже крупные развертывания IPX / SPX не были достаточно сложными для разработки богатой инфраструктуры маршрутизации.
Прямо сейчас IPX интересен только как историческое любопытство и в обслуживании небольшого количества ОЧЕНЬ унаследованных систем.