Протокол SPX
Последовательный обмен пакетами SPX (Sequenced Packet Exchange) обеспечивает возможность повторной передачи и тайм-аута, отсутствующие в IPX. Он ориентирован:
• на доставку сообщений, возможно состоящих из нескольких пакетов;
• на доставку нумерованных пакетов без идентификации границ сообщения;
• на передачу последовательности пакетов с сохранением порядка поступления, но без дублирования.
Обмен нумерованными пакетами происходит с типом пакета 5 в межсетевом заголовке.
Поля "Идентификатор связи" предназначены для установления номера виртуального канала. При установлении канала SPX-источник создает пакет, в котором указывает свое значение идентификатора связи, в поле приемника это значение еще не известно и равно нулю. SPX-приемник, принимая пакет, назначает свой идентификатор, который помещается в первый ответный пакет. Специальный системный пакет-подтверждение не требуется. Обратите внимание на то, что все виртуальные каналы в этом случае "висят" на одном сокете IPX и только номера каналов позволяют их различить. Кроме того, сама фаза установки виртуального канала предельно упрощена, что позволяет классифицировать подобные протоколы как протоколы "быстрой выборки" или "виртуального вызова".
Рис. 44. Формат пакета SPX
Далее наступает фаза передачи данных нумерованными пакетами, которые квитируются с помощью поля квитанции. В этом поле указывается номер ожидаемого пакета. Квитирование возможно на отдельный пакет (SPX) либо на целую последовательность пакетов (XSIS). Поле "Максимальный номер" служит для управления потоком данных и указывает на наибольший номер пакета, который принимающая станция может использовать. Значение этого поля увеличивается после каждого квитирования.
Поле "Тип потока данных" необходимо для выбора прикладной программы.
Основная разница между IPX и SPX состоит в том, что заголовки и дополнительные операции, предусмотренные в SPX, обеспечивают гарантированную доставку пакетов. Гарантированная доставка означает в данном случае выполнение некоторого числа повторных попыток передачи адресату запроса на установку соединения, пока число повторных передач не превысит некоторое, заранее зарезервированное, число переспросов (в этом случае передавшему запрос посылается уведомление). При пересылке нумерованного пакета также используется механизм повторной передачи. Таким образом, передающей стороне не нужно проверять доставку пакета. SPX будет уведомлять прикладную программу о состоянии передачи.
Обновленная версия протокола SPX называется SPX II. Одним из основных вопросов, который особенно беспокоил Novell при разработке транспортного протокола следующего поколения, был вопрос обеспечения совместимости с уже имеющимися продуктами; поэтому вместо того, чтобы дать ему совершенно новое имя, протокол назвали SPX II. Основное назначение SPX II состоит в использовании пакетов большего размера, реализации действительно оконного протокола и обеспечении поддержки унифицированного транспортного интерфейса API TLI (Transport Layer Interface).
Наиболее важно то, что SPX II обладает полной совместимостью с протоколом SPX. По сравнению с SPX протокол SPX II обладает повышенными возможностями в области обработки больших пакетов данных. Различные сети могут обрабатывать различные размеры пакетов. Многие сети могут обрабатывать пакеты с размером, превышающим 576 байт (размер пакета SPX и XSIS). Заголовок пакета SPX размером 42 байта оставляет для данных только 534 байта в одном пакете. Если нужно послать больше данных, то нужно подготовить и передать другой пакет SPX. При передаче большого объема информации наиболее эффективным является увеличение размера пакета.
Протокол SPX II автоматически использует преимущества тех сетей, которые допускают передачу пакета большего размера, т. е. подстраивает длину передаваемого пакета.
Другим реализованным в SPX II средством является механизм окна. Окно организуется, когда нужно передать несколько пакетов с одной квитанцией для всех пакетов. Число передаваемых пакетов может быть различным (это называется размером окна). Если один из пакетов не получен, запрос на этот пакет может быть возвращен передающему узлу.
Все рассмотренные механизмы позволяют уменьшить сетевой трафик и ускорить процесс передачи данных.