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

Datagram Delivery Protocol

Datagram Delivery Protocol (DDP) — это сетевой протокол транспортного уровня, разработанный компанией Apple Computer для использования в сетях AppleTalk. Он обеспечивает негарантированную доставку дейтаграмм (пакетов данных) между узлами сети без установления предварительного соединения и без подтверждения получения. DDP является аналогом протокола UDP в стеке TCP/IP, но с рядом особенностей, связанных с архитектурой AppleTalk.

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

Протокол DDP был создан в начале 1980-х годов как часть стека протоколов AppleTalk, предназначенного для объединения компьютеров Macintosh и периферийных устройств (принтеров, файловых серверов) в локальные сети. AppleTalk изначально проектировался для простоты настройки и автоматической конфигурации, что было революционно для того времени. DDP стал основным транспортным протоколом этого стека, обеспечивая базовую передачу данных.

С развитием сетей Ethernet и повсеместным распространением стека TCP/IP, популярность AppleTalk и DDP начала снижаться. В 2009 году компания Apple официально прекратила поддержку AppleTalk в операционной системе Mac OS X 10.6 Snow Leopard, что фактически завершило эпоху активного использования DDP. Тем не менее, протокол остаётся в истории как пример ранней реализации дейтаграммной передачи в персональных компьютерных сетях.

Архитектура и место в модели OSI

DDP работает на транспортном уровне (уровень 4) модели OSI, хотя в некоторых классификациях его относят к сетевому уровню, так как он выполняет функции маршрутизации. В стеке AppleTalk протоколы располагаются следующим образом:

DDP обеспечивает передачу данных между сетевыми узлами, используя уникальную систему адресации AppleTalk. Он не гарантирует доставку, не контролирует порядок прибытия пакетов и не управляет потоком данных — эти функции возлагаются на протоколы более высокого уровня (например, ATP).

Адресация в DDP

Система адресации в DDP отличается от привычной IP-адресации. Каждый узел в сети AppleTalk имеет два адреса:

  • Сетевой адрес (Network Number): 16-битное число, идентифицирующее локальную сеть (сегмент). Значения от 1 до 65535. Адреса 0 и 65535 зарезервированы для широковещательных и специальных целей.
  • Адрес узла (Node ID): 8-битное число, уникальное в пределах данной сети. Значения от 1 до 253. Адреса 0, 254 и 255 зарезервированы.

Таким образом, полный адрес узла в DDP — это пара (Network Number, Node ID), например (10, 42). Для маршрутизации между разными сетями используется третий параметр — Socket Number (номер сокета), который идентифицирует конкретный процесс или службу на узле.

Автоматическое назначение адресов

Одной из ключевых особенностей AppleTalk, реализованной на уровне DDP, была процедура AARP (AppleTalk Address Resolution Protocol). При подключении нового устройства к сети оно случайным образом выбирало себе адрес узла (Node ID) и отправляло широковещательный запрос, проверяя, не занят ли этот адрес. Если в течение определённого времени не приходило ответа, адрес считался свободным и закреплялся за устройством. Это позволяло создавать сети без ручной настройки IP-адресов.

Формат дейтаграммы DDP

Дейтаграмма DDP состоит из заголовка и поля данных. Заголовок имеет переменную длину: короткий (5 байт) для передачи в пределах одной сети и длинный (13 байт) для маршрутизируемых пакетов.

Структура короткого заголовка (внутрисетевая передача):

ПолеРазмер (бит)Описание
Hop Count4Счётчик шагов (максимум 15). Уменьшается на каждом маршрутизаторе.
Length10Длина дейтаграммы в байтах (включая заголовок).
Checksum16Контрольная сумма всего пакета (опционально, может быть 0).
Destination Socket8Номер сокета получателя.
Source Socket8Номер сокета отправителя.
DDP Type8Тип протокола верхнего уровня (например, ATP, NBP).

Структура длинного заголовка (межсетевая передача):

Длинный заголовок включает все поля короткого, а также:

ПолеРазмер (бит)Описание
Destination Network16Номер сети получателя.
Source Network16Номер сети отправителя.
Destination Node8Идентификатор узла получателя.
Source Node8Идентификатор узла отправителя.

Поле Hop Count ограничивает время жизни пакета в сети, предотвращая бесконечную маршрутизацию. Максимальное значение — 15 шагов. Поле Checksum не является обязательным: если отправитель не вычисляет контрольную сумму, он устанавливает это поле в 0, и получатель игнорирует его.

Применение и протоколы верхнего уровня

DDP служит основой для нескольких протоколов сеансового и прикладного уровней в стеке AppleTalk:

  • ATP (AppleTalk Transaction Protocol): Обеспечивает надёжную передачу данных с подтверждением. Использует DDP для отправки запросов и ответов.
  • NBP (Name Binding Protocol): Служит для разрешения имён (например, «Printer@Office») в адреса DDP. Широко использует широковещательные дейтаграммы DDP.
  • PAP (Printer Access Protocol): Протокол для взаимодействия с принтерами. Работает поверх DDP.
  • ASP (AppleTalk Session Protocol): Управляет сеансами связи между приложениями.
  • AFP (Apple Filing Protocol): Протокол удалённого доступа к файлам, работающий поверх ASP и DDP.

Все эти протоколы полагаются на негарантированную доставку DDP, самостоятельно реализуя механизмы повторной передачи, контроля потока и упорядочивания.

Сравнение с UDP

DDP и UDP — оба дейтаграммных протокола, работающих без установления соединения. Однако между ними есть существенные различия:

ХарактеристикаDDPUDP
Размер адреса24 бита (сеть + узел)32 бита (IP-адрес)
Порт/сокет8-битный номер сокета16-битный номер порта
МаршрутизацияВстроена в заголовок (сеть назначения)Выполняется на IP-уровне
Контрольная суммаОпциональнаОбязательна (в IPv4 опциональна, в IPv6 обязательна)
АвтоконфигурацияAARP (автоматическое назначение адреса)DHCP или статическая настройка
Максимальный размер пакетаЗависит от канального уровня (обычно 586 байт для LocalTalk, до 1500 для Ethernet)65535 байт (теоретически)

DDP более интегрирован с механизмами автоматической настройки, что делало его удобным для небольших офисных сетей, но менее масштабируемым и гибким, чем UDP/IP.

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

  • Масштабируемость: 16-битный номер сети и 8-битный номер узла ограничивают максимальное количество узлов (около 16 миллионов сетей по 253 узла), что было достаточно для 1980-х, но недостаточно для глобальных сетей.
  • Надёжность: Отсутствие гарантий доставки требует реализации дополнительных механизмов на верхних уровнях, что увеличивает сложность приложений.
  • Безопасность: DDP не содержит встроенных механизмов аутентификации или шифрования. Все данные передаются в открытом виде.
  • Совместимость: Протокол жёстко привязан к архитектуре AppleTalk и не может напрямую взаимодействовать с сетями TCP/IP без шлюзов (например, IPTalk).

Устаревание и наследие

С переходом Apple на использование TCP/IP в качестве основного сетевого стека (начиная с Mac OS X), DDP был постепенно вытеснен. В 2009 году поддержка AppleTalk была полностью удалена из macOS. Тем не менее, DDP оставил след в истории сетевых технологий как пример успешного протокола с автоматической конфигурацией, который предвосхитил многие идеи, впоследствии реализованные в Zeroconf (Bonjour) и IPv6 (автоконфигурация адресов).

Сегодня DDP представляет в основном исторический интерес. Он изучается в курсах компьютерных сетей как пример альтернативного подхода к адресации и маршрутизации, отличного от доминирующего стека TCP/IP.

Источники

  • Apple Computer, Inc. AppleTalk Network System Overview. Addison-Wesley, 1989.
  • Sidhu, Gursharan; Andrews, Richard; Oppenheimer, Alan. Inside AppleTalk. 2nd ed. Addison-Wesley, 1990.
  • Comer, Douglas E. Computer Networks and Internets. 6th ed. Pearson, 2015. (Глава о протоколах AppleTalk).
  • RFC 1742 — AppleTalk Management Information Base II. IETF, 1995.

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

На главную BFOmetr →