Открыть сервис

Service Advertising Protocol

Service Advertising Protocol (SAP) — это протокол сетевого уровня, используемый в сетях Novell NetWare для автоматического оповещения о доступных сетевых службах (серверах, файловых серверах, принт-серверах, серверах приложений) и их обнаружения клиентами. Протокол работает на основе широковещательных рассылок (broadcast) и позволяет клиентам (рабочим станциям) получать актуальный список служб без необходимости ручной настройки. SAP является частью стека протоколов IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange), разработанного компанией Novell.

История

Протокол SAP был разработан компанией Novell в конце 1980-х годов для операционной системы NetWare версий 2.x и 3.x. В то время сети строились на основе протоколов IPX/SPX, которые были основными в среде Novell. SAP стал одним из ключевых механизмов, обеспечивающих динамическое обнаружение служб в локальных сетях (LAN). В ранних версиях NetWare (до 4.x) SAP использовался для объявления о файловых и принт-серверах, а также для поддержки работы серверов NDS (Novell Directory Services) в более поздних версиях.

С развитием сетей и переходом на TCP/IP (Transmission Control Protocol/Internet Protocol) в 1990-х годах популярность SAP снизилась. В современных сетях его функции частично заменяют протоколы SLP (Service Location Protocol), DNS (Domain Name System) и другие механизмы динамического обнаружения, однако SAP продолжает использоваться в устаревших или специализированных сетях, где сохраняется инфраструктура Novell NetWare.

Принцип работы

SAP работает на сетевом уровне модели OSI (уровень 3) и использует протокол IPX для передачи пакетов. Каждый сервер, предоставляющий службу, периодически (по умолчанию каждые 60 секунд) отправляет широковещательный пакет SAP на адрес 0xFFFFFFFF (все узлы в сети). Этот пакет содержит информацию о типе службы, её сетевом адресе (IPX-адрес), имени сервера и статусе. Клиентские станции, прослушивающие широковещательные сообщения, обновляют свою локальную таблицу доступных служб.

Типы пакетов SAP

SAP определяет несколько типов пакетов, которые используются для различных целей:

  • SAP General Query (0x01) — запрос от клиента на получение списка всех служб определённого типа.
  • SAP General Response (0x02) — ответ сервера на общий запрос, содержащий список служб.
  • SAP Nearest Service Query (0x03) — запрос на поиск ближайшего сервера определённого типа (например, для подключения к файловому серверу).
  • SAP Nearest Service Response (0x04) — ответ сервера на запрос ближайшей службы.
  • SAP Service Advertisement (0x05) — периодическая широковещательная рассылка сервера о доступных службах.
  • SAP Service Shutdown (0x06) — уведомление сервера о прекращении предоставления службы (например, при выключении сервера).

Идентификаторы служб

Каждая служба в SAP имеет уникальный идентификатор — 16-битное число, которое определяет её тип. Например:

Всего определено несколько сотен типов служб, включая как стандартные (от Novell), так и зарезервированные для сторонних разработчиков.

Структура пакета SAP

Пакет SAP инкапсулируется в пакет IPX. Его структура включает следующие поля:

  • Тип пакета (1 байт) — определяет, является ли пакет запросом или ответом (см. выше).
  • Длина (2 байта) — общая длина пакета (включая заголовок IPX).
  • Список служб (переменная длина) — последовательность записей, каждая из которых содержит:
  • Тип службы (2 байта)
  • Адрес сервера (IPX-адрес: 4 байта сетевого адреса, 6 байт MAC-адреса, 2 байта сокета)
  • Имя сервера (48 байт, строковое поле, дополненное нулями)
  • Статус (2 байта) — указывает, работает ли служба или выключена
  • Резерв (2 байта) — не используется, заполняется нулями

Максимальный размер пакета SAP ограничен размером кадра IPX (обычно 576 байт), что позволяет передавать до 7-8 записей служб в одном пакете. Если служб больше, сервер отправляет несколько пакетов.

Применение

SAP применялся в основном в сетях Novell NetWare для автоматического обнаружения служб. Его использование было критически важным в следующих сценариях:

  • Подключение клиентов к файловым серверам — рабочая станция, запрашивая список файловых серверов, получала от SAP перечень доступных серверов и могла выбрать ближайший.
  • Обнаружение принт-серверов — клиенты могли найти ближайший принт-сервер для отправки заданий на печать.
  • Поддержка NDS — в NetWare 4.x и выше SAP использовался для объявления о серверах, содержащих реплики каталога NDS, что позволяло клиентам находить серверы аутентификации.
  • Работа в сегментированных сетях — SAP поддерживал маршрутизацию через маршрутизаторы IPX, которые могли ретранслировать SAP-пакеты между различными сегментами сети (например, с помощью протокола RIP — Routing Information Protocol для IPX).

Ограничения и недостатки

SAP имеет несколько существенных недостатков, которые ограничивают его применение в современных сетях:

  • Широковещательный трафик — каждые 60 секунд каждый сервер отправляет широковещательный пакет, что в больших сетях (с сотнями серверов) приводит к значительному увеличению сетевого трафика. В сетях с медленными каналами (например, WAN) это может вызывать перегрузку.
  • Отсутствие масштабируемости — SAP не поддерживает иерархическую структуру или фильтрацию служб; все серверы объявляют о себе всем узлам сети, что неэффективно в крупных корпоративных сетях.
  • Зависимость от IPX — SAP работает только в сетях, использующих протокол IPX, который практически вытеснен TCP/IP. В современных сетях на основе TCP/IP SAP не применим без эмуляции или туннелирования.
  • Безопасность — SAP не предусматривает аутентификацию или шифрование; любой узел в сети может отправлять ложные SAP-объявления, что может привести к атакам типа «человек посередине» или подмене сервера.

Сравнение с альтернативами

В современных сетях функции SAP выполняют другие протоколы:

  • SLP (Service Location Protocol) — протокол для динамического обнаружения служб в сетях TCP/IP, поддерживает масштабирование, аутентификацию и фильтрацию.
  • DNS SRV-записи — используются для обнаружения служб (например, LDAP, Kerberos) в доменных средах Windows и Unix.
  • mDNS (Multicast DNS) — применяется в локальных сетях для обнаружения служб без централизованного сервера (например, в сетях Apple Bonjour).
  • DHCP (Dynamic Host Configuration Protocol) — может предоставлять клиентам адреса серверов (например, DNS-серверов) без широковещательных рассылок.

В отличие от SAP, эти протоколы не требуют широковещательных рассылок и более эффективны в больших сетях.

Интересные факты

  • SAP был разработан в то время, когда сети были небольшими (до 100-200 узлов), и широковещательный трафик не был проблемой. С ростом сетей его недостатки стали очевидными.
  • В некоторых реализациях Novell NetWare SAP-пакеты могли использоваться для атак типа «отказ в обслуживании» (DoS) — злоумышленник мог отправлять большое количество ложных SAP-объявлений, перегружая сеть.
  • Протокол SAP поддерживает не только службы Novell, но и сторонние приложения, которые могут регистрировать свои собственные типы служб (например, для игр или баз данных).
  • В операционной системе Windows NT 4.0 и более ранних версиях SAP использовался для поддержки клиентов NetWare через службу Gateway Service for NetWare (GSNW).

Источники

  • Novell NetWare Documentation (1990–1995): «Service Advertising Protocol (SAP) Specification».
  • RFC 1795: «OSI Internet Management: Management Information Base for the OSI Internet Protocol Suite» (раздел, описывающий SAP).
  • «NetWare 3.12: Concepts» — Novell, Inc., 1993.
  • «IPX/SPX Protocol Suite» — техническая документация Novell, 1994.
  • «Сети Novell NetWare: архитектура и протоколы» — учебное пособие, 1996.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →