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

Name Binding Protocol

Name Binding Protocol (NBP) — это протокол сетевого уровня, используемый в сетях AppleTalk для сопоставления символьных имён (например, «Printer:LaserWriter@Office») с сетевыми адресами (сетевой номер, номер узла, номер сокета). NBP является одной из ключевых служб стека протоколов AppleTalk, обеспечивая удобный для человека способ идентификации ресурсов в локальной сети без необходимости запоминать числовые адреса.

История и контекст

Протокол NBP был разработан компанией Apple Computer в середине 1980-х годов как часть стека AppleTalk, предназначенного для простого объединения компьютеров Macintosh и периферийных устройств (принтеров, файловых серверов) в локальную сеть. Первая реализация AppleTalk (AppleTalk Phase 1) появилась в 1985 году вместе с операционной системой System 7.0. NBP был спроектирован для работы в среде с динамической адресацией (узлы получали адреса автоматически, без централизованного DHCP-сервера), что требовало эффективного механизма разрешения имён без выделенного сервера имён.

В отличие от более поздних протоколов, таких как DNS (Domain Name System), NBP не требует централизованной базы данных. Вместо этого он использует распределённый механизм, основанный на широковещательных запросах и кэшировании ответов. С выходом Mac OS X (2001) и переходом на TCP/IP поддержка AppleTalk и NBP была постепенно свёрнута, хотя в некоторых версиях macOS (до версии 10.6 Snow Leopard) оставалась возможность эмуляции. В настоящее время NBP представляет в основном исторический интерес, но его принципы повлияли на разработку более современных протоколов обнаружения сервисов, таких как Bonjour (mDNS/DNS-SD).

Архитектура и принцип работы

Сущности и атрибуты

В терминологии AppleTalk сетевым ресурсам, доступным через NBP, присваиваются сущности (entities). Каждая сущность описывается тройкой атрибутов:

  • Объект (object) — имя, присвоенное ресурсу (например, «LaserWriter», «Macintosh HD»).
  • Тип (type) — категория ресурса, определяющая его функциональное назначение (например, «LaserWriter», «FileServer», «AppleTalk Session Protocol»). Тип обычно записывается в формате CamelCase.
  • Зона (zone) — логическая группа узлов в сети AppleTalk. Зоны позволяют разбить большую сеть на более мелкие области для упрощения поиска ресурсов.

Полное имя сущности записывается в формате: Объект:Тип@Зона. Например, Printer:LaserWriter@Office.

Процесс разрешения имени

Когда узел (например, компьютер Macintosh) хочет установить соединение с ресурсом по его имени, он запускает процедуру разрешения имени через NBP. Процесс включает несколько этапов:

  1. Формирование запроса — узел создаёт NBP-пакет, содержащий имя искомой сущности (или шаблон для поиска всех сущностей определённого типа).
  2. Широковещательная рассылка — запрос отправляется в виде широковещательного (broadcast) или многоадресного (multicast) сообщения на все узлы в зоне, указанной в запросе. Если зона не указана, запрос распространяется в локальной зоне узла.
  3. Обработка запроса — каждый узел, получивший запрос, проверяет, соответствует ли его собственное имя (или имена его ресурсов) запрошенному шаблону. Если совпадение найдено, узел отправляет ответное сообщение, содержащее свой сетевой адрес (сетевой номер, номер узла, номер сокета).
  4. Кэширование — узел, инициировавший запрос, получает ответы и кэширует их локально. Это позволяет избежать повторных широковещательных запросов при последующих обращениях к тому же ресурсу в течение короткого времени.
  5. Тайм-аут и повтор — если ответ не получен в течение определённого времени (обычно несколько секунд), узел может повторить запрос несколько раз. После исчерпания попыток выводится сообщение об ошибке (например, «Resource not found»).

Удаление и обновление записей

NBP не предусматривает механизма автоматического удаления записей при отключении устройства. Если устройство выключается или покидает сеть, его записи остаются в кэшах других узлов до истечения времени жизни (TTL). Для корректного обновления информации используется протокол NBP BrRq (Broadcast Request) и NBP FwdReq (Forward Request), которые позволяют повторно запросить информацию о конкретном ресурсе.

Формат пакета NBP

Пакет NBP передаётся как часть протокола DDP (Datagram Delivery Protocol) — транспортного протокола AppleTalk, аналогичного IP. Каждый пакет NBP содержит следующие поля:

  • Функция (function) — код операции (например, 1 — запрос, 2 — ответ, 3 — подтверждение).
  • Идентификатор транзакции (transaction ID) — уникальный номер, связывающий запрос и ответ.
  • Количество записей (tuple count) — число сущностей, перечисленных в пакете.
  • Записи (tuples) — последовательность структур, каждая из которых содержит:
  • Длину имени объекта (1 байт).
  • Имя объекта (до 32 символов).
  • Длину типа (1 байт).
  • Тип (до 32 символов).
  • Длину зоны (1 байт).
  • Зона (до 32 символов).
  • Сетевой адрес (3 байта: сетевой номер, номер узла, номер сокета).

Максимальный размер пакета NBP ограничен размером дейтаграммы DDP (обычно 586 байт), что накладывает ограничение на количество записей в одном пакете.

Применение

NBP использовался в следующих сценариях:

  • Поиск принтеров — пользователь Macintosh мог открыть диалог выбора принтера и увидеть список всех доступных принтеров в сети, разрешённых через NBP.
  • Подключение к файловым серверам — протокол Apple Filing Protocol (AFP) использовал NBP для обнаружения серверов в сети.
  • Сетевые игры — некоторые многопользовательские игры для Mac (например, Bolo, Marathon) использовали NBP для поиска игровых сессий.
  • Администрирование сети — утилиты вроде nbp (командная строка) позволяли администраторам просматривать и управлять записями NBP.

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

  • Широковещательный трафик — в больших сетях частые широковещательные запросы NBP создавали значительную нагрузку, особенно при поиске ресурсов во всех зонах.
  • Отсутствие аутентификации — любой узел мог ответить на запрос NBP, что делало протокол уязвимым для подмены (spoofing).
  • Зависимость от зон — для поиска ресурса в другой зоне требовалось знать её имя, что усложняло администрирование.
  • Кэширование без инвалидации — записи могли оставаться в кэшах после отключения устройства, приводя к ошибкам подключения.

Сравнение с другими протоколами

ХарактеристикаNBP (AppleTalk)DNS (TCP/IP)Bonjour (mDNS/DNS-SD)
АрхитектураРаспределённая (широковещательная)Централизованная (иерархическая)Распределённая (многоадресная)
ИменаОбъект:Тип@Зонаhostname.domainService._Protocol._tcp.local
Автоматическое обнаружениеДа (через NBP BrRq)Нет (требуется DNS-сервер)Да (mDNS)
Требуется серверНетДа (DNS-сервер)Нет
Современное использованиеУстарелПовсеместноВ macOS, iOS, Windows

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

  • Протокол NBP был одним из первых в своём роде, реализовавших распределённое разрешение имён без центрального сервера, что предвосхитило идеи, позднее использованные в BitTorrent DHT и других P2P-системах.
  • В некоторых версиях macOS (до 10.6) можно было вручную задать NBP-имя для компьютера в настройках «Общий доступ».
  • NBP поддерживал до 255 зон в одной сети AppleTalk, что позволяло организовывать крупные офисные сети.

Источники

  • Apple Computer, Inc. Inside AppleTalk, 2nd Edition. Addison-Wesley, 1990.
  • Sidhu, Gursharan; Andrews, Richard; Oppenheimer, Alan. Inside AppleTalk. Addison-Wesley, 1989.
  • RFC 1742 — AppleTalk Management Information Base II (содержит описание NBP).
  • Техническая документация Apple Developer Connection: «AppleTalk Protocols» (архивная версия).

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

На главную BFOmetr →