Введение
Сетевые протоколы
IPX/SPX расшифровывается как Internetwork Packet Exchange/Sequenced Packet Exchange. IPX и SPX – это сетевые протоколы, изначально использовавшиеся в сетях, работающих под (устаревшими) операционными системами Novell NetWare. Они также получили широкое распространение в сетях, использующих локальные сети Microsoft Windows, заменив сети NetWare, однако в настоящее время их широкое применение прекращено. IPX/SPX широко использовался до и включая Windows XP, которая поддерживала эти протоколы, в то время как более поздние версии Windows не поддерживают их, и TCP/IP стал основным протоколом для сетевого взаимодействия.
Слои протокола
IPX и SPX происходят от протоколов IDP и SPP компании Xerox Network Systems соответственно. IPX является протоколом сетевого уровня (3-го уровня модели OSI), а SPX – протоколом транспортного уровня (4-го уровня модели OSI). SPX-уровень располагается поверх IPX-уровня и обеспечивает соединение-ориентированные сервисы между двумя узлами в сети. SPX в основном используется клиент-серверными приложениями. IPX и SPX предоставляют сервисы установления соединения, аналогичные TCP/IP, при этом протокол IPX имеет сходство с Internet Protocol, а SPX – с TCP. IPX/SPX был разработан прежде всего для локальных сетей (LAN) и является очень эффективным протоколом для этой цели (как правило, производительность SPX превосходит производительность TCP в небольшой LAN, поскольку вместо окон перегрузки и подтверждающих квитанций SPX использует простые NAK-сообщения). Однако TCP/IP стал фактическим стандартом. Это частично обусловлено его более высокой производительностью в глобальных сетях и в Интернете (который использует исключительно IP), а также тем, что TCP/IP – более зрелый протокол, разработанный специально для этих целей. Несмотря на связь этих протоколов с NetWare, они не требуются для связи NetWare (начиная с NetWare 5.x) и не используются исключительно в сетях NetWare. Для связи NetWare требуется реализация NCP, которая может использовать IPX/SPX, TCP/IP или оба протокола в качестве транспортного уровня.
Реализация
Novell во многом способствовал широкому распространению IPX как популярного протокола компьютерных сетей благодаря своему доминированию на рынке программного обеспечения сетевых операционных систем (в частности, Novell NetWare) с конца 1980-х по середину 1990-х годов.
DOS
Первоначальный клиент NetWare от Novell был разработан для DOS. Первые версии требовали жестко заданного стека протоколов, при котором сетевой администратор создавал отдельный исполняемый файл для каждой конфигурации сетевой карты в сети. Этот файл загружался при старте системы и оставался в памяти до её выключения. Более поздние реализации позволяли динамически загружать и выгружать сетевой стек, используя предварительно существующие модули. Это значительно упростило обслуживание клиентских рабочих станций в сети. IPX/SPX был фактическим стандартом для многопользовательских сетевых игр эпохи DOS. Срок жизни многих игр был продлен благодаря программам туннелирования, таким как Kali и Kahn, которые позволяли играть в них через интернет, а не только по локальной сети. DOSBox эмулирует IPX через UDP.
Окна
Из-за широкого распространения IPX/SPX в локальных сетях в 1990-х годах Microsoft добавила поддержку этих протоколов в сетевой стек Windows, начиная с Windows для рабочих групп и Windows NT. Microsoft даже назвала свою реализацию "NWLink", намекая на то, что включение транспорта 3-го и 4-го уровней обеспечивает подключение к NetWare. Однако на практике протоколы поддерживались как нативный транспорт для Windows SMB/NetBIOS, а для подключения к NetWare требовалась дополнительная установка клиента NCP (Microsoft поставляла базовый клиент NetWare с Windows 95 и более поздними версиями, но он не устанавливался автоматически и изначально поддерживал только режим связки NetWare). NWLink поставлялась с Windows (вплоть до Windows Server 2003 включительно), но не входит в состав и не поддерживается в Windows Vista. Использование NWLink настоятельно не рекомендуется, поскольку она не может использоваться для организации Windows-сетей, кроме как в качестве транспорта для NetBIOS, который является устаревшим. В основном, 32-битное клиентское программное обеспечение Novell для Windows отказалось от NWLink в пользу альтернативной разработки Novell, хотя некоторые версии допускают использование реализации IPX/SPX от Microsoft (с предупреждениями о возможной несовместимости).
Другие
В течение нескольких лет Novell поставлял нативный клиент NetWare для OS/2. Он был аналогичен по структуре клиенту для DOS. Novell также выпустил клиент IPX для Classic Mac OS под названием MacIPX. Он использовался не только клиентом Mac NetWare, но и такими играми, как Doom и Warcraft III для многопользовательской игры. Реализации были разработаны для различных дистрибутивов Unix/Linux как компанией Novell, так и другими поставщиками. В частности, UnixWare от Novell поддерживала IPX/SPX нативно. Однако, хотя UnixWare мог выступать в роли клиента NetWare-серверов, и приложения могли опционально использовать IPX/SPX в качестве транспортного протокола, UnixWare не предоставлял возможности совместного использования файлов и принтеров в сети NetWare без дополнительного программного пакета. Open Enterprise Server Linux не поддерживает IPX/SPX. Ядро Linux ранее поддерживало IPX/SPX, но поддержка SPX была удалена в 2002 году, а поддержка IPX – в 2018 году. Операционная система FreeBSD с открытым исходным кодом включает в себя стек IPX/SPX для поддержки как клиента файловой системы NetWare (nwfs), так и сервера NetWare, использующего Mars NWE (обеспечивающего некоторую функциональность). OpenBSD отказалась от поддержки, начиная с версии 4.2, а для версии 4.1 требовались доработки для компиляции с поддержкой IPX.
Наследие
Использование IPX снизилось в последние годы, поскольку распространение Интернета сделало TCP/IP повсеместным. Первая попытка Novell поддержать TCP/IP в качестве клиентского протокола, NetWare/IP, просто "инкапсулировала" IPX в IP-пакеты, позволяя клиентам и серверам NetWare взаимодействовать через сети, использующие исключительно TCP/IP. Однако из-за сложной реализации и существенной потери производительности, вызванной накладными расходами инкапсуляции, NetWare/IP в основном игнорировался, за исключением использования в качестве механизма маршрутизации IPX через маршрутизаторы, поддерживающие только TCP/IP, и каналы WAN. NetWare 5.x представила нативную поддержку NCP поверх TCP/IP, которая теперь является предпочтительной конфигурацией. Преемник NetWare, Open Enterprise Server, выпускается в двух вариантах: OES NetWare, обеспечивающий поддержку устаревшего IPX/SPX, и OES Linux, поддерживающий только TCP/IP. И Microsoft, и Novell предоставили поддержку (через Proxy Server/ISA Server и BorderManager соответственно) для IPX/SPX в качестве протокола внутренней сети для связи через брандмауэр. Это позволяет компьютеру с клиентским программным обеспечением получать доступ к Интернету без локально установленного TCP/IP; клиентское программное обеспечение эмулирует нативный стек TCP/IP и обеспечивает поддержку WinSock для локальных приложений (например, веб-браузеров), но фактически взаимодействует с брандмауэром через IPX/SPX. Помимо упрощения перехода с устаревших IPX-сетей, это обеспечивает определенный уровень безопасности, поскольку использование протокола IPX во внутренней сети создает естественный барьер против злоумышленников в случае компрометации брандмауэра. IPX по-прежнему полезен в ситуациях, когда необходимо обходить VPN-соединения с политиками безопасности, запрещающими связь с другими устройствами локальной сети (например, принтерами и сетевыми хранилищами) через TCP/IP.