RFC: 4511
Оригинал: Lightweight Directory Access Protocol (LDAP): The Protocol
Предыдущие версии: RFC 2251, RFC 2830, RFC 3771
Категория: Предложенный стандарт
Дата публикации:
Автор:
Перевод: Pro-LDAP.ru

5. Кодирование протокола, соединения и передача данных

Этот протокол предназначен для работы поверх ориентированных на соединение, надежных транспортов, где поток данных делится на октеты (блоки по 8 бит), и значимым является каждый октет и каждый бит.

Один из таких сервисов, LDAP поверх TCP, определён в разделе 5.2.

Данный сервис, как правило, применим к приложениям, которые являются поставщиками или потребителями основанных на X.500 служб каталогов в Интернет. Данная спецификация в основном создавалась с расчётом на отображение в TCP.

Спецификации, определяющие другие отображения, могут столкнуться с различными препятствиями.

Реализации LDAP поверх TCP должны (MUST) осуществлять это отображение так, как описано в разделе 5.2.

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

            +--------------------------+
            |  уровень сообщений LDAP  |
            +--------------------------+ > LDAP PDU
            +--------------------------+ < данные
            |       уровень SASL       |
            +--------------------------+ > данные, защищённые SASL
            +--------------------------+ < данные
            |       уровень TLS        |
 Приложение +--------------------------+ > данные, защищённые TLS
------------+--------------------------+ < данные
  Транспорт | транспортное  соединение |
            +--------------------------+

5.1. Кодирование протокола

Для обмена элементами протокола LDAP их нужно (SHALL) кодировать с использованием основных правил кодирования Basic Encoding Rules [BER] [ASN.1] со следующими ограничениями:

  • Используется только определённая форма длины кодировки.

  • Значения OCTET STRING кодируются только в примитивной форме.

  • Если значение типа BOOLEAN установлено в true, октет закодированного значения устанавливается в шестнадцатеричное "FF".

  • Если значение типа установлено в его значение по умолчанию, оно отсутствует. В определении этого протокола только у некоторых типов BOOLEAN и INTEGER есть значение по умолчанию.

Эти ограничения предназначены для снижения накладных расходов на кодирование и декодирование определенных элементов в BER.

Эти ограничения не применяются к типам ASN.1, инкапсулированным в значения строк OCTET STRING, таким как значения атрибутов, если не указано иное.

5.2. Transmission Control Protocol (TCP)

Закодированные PDU LDAPMessage напрямую отображаются на поток TCP [RFC793] с использованием основанного на BER кодирования, описанного в разделе 5.1. Рекомендуется, чтобы реализации сервера, работающие поверх TCP, ожидали соединения по протоколу на порту LDAP 389, назначенному Internet Assigned Numbers Authority (IANA) [PortReg]. Вместо этого серверы могут ожидать соединения на порту с другим номером. Клиенты должны (MUST) поддерживать возможность связываться с серверами на любом действительном порту TCP.

5.3. Прекращение сессии LDAP

Обычно прекращение сессии LDAP инициируется клиентом, посылающим запрос UnbindRequest (раздел 4.3), либо сервером, посылающим уведомление об отключении (раздел 4.4.1). В этих случаях каждая сторона протокола корректно завершает сессию LDAP путём прекращения обменов на уровне сообщений LDAP, разрыва (если он установлен) уровня SASL, разрыва (если он установлен) уровня TLS и закрытия транспортного соединения.

Стороны протокола могут определить, что продолжение какого-либо взаимодействия может привести к пагубным последствиям, в таком случае они могут сразу завершить сессию путём прекращения обменов и закрытия транспортного соединения.

В любом случае, если сессия LDAP прекращена, незавершённые операции обрабатываются как указано в разделе 3.1.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.