DCAP (DCAP)

Перейти к навигации Перейти к поиску
DCAP
Название Data Link Switching Client Access Protocol
Уровень (по модели OSI) Прикладной
Создан в 1997
Порт/ID 1973/TCP
Спецификация RFC 2114

DCAP (англ. Data Link Switching Client Access Protocol — Протокол клиентского доступа к коммутации каналов передачи данных) — протокол, используемый между рабочими станциями и маршрутизаторами для транспортировки трафика SNA/NetBIOS посредством сеансов TCP.

В больших сетях DCAP решает проблему расширяемости, существенно снижая количество узлов сети, которые подключаются к центральному маршрутизатору. Рабочие станции (DCAP-клиенты) и маршрутизатор (DCAP-сервер) образуют иерархическую структуру, устанавливая взаимоотношение Клиент/Сервер.

Общая идея протокола DCAP
Общая идея протокола DCAP

Рабочие станции (клиенты DCAP) и маршрутизатор (сервер DCAP), устанавливают отношения типа Клиент/Сервер. Рабочие станции подключаются только к серверу DCAP. В свою очередь, у сервера есть единственное равноправное соединение — с центральным роутером.

Для передачи данных между сервером и клиентом используется протокол TCP. Между клиентом и сервером устанавливается только одно TCP соединение, которое используется и для чтения, и для записи. Состояние состязания возможно, когда и сервер, и клиент одновременно пытаются установить TCP-сеанс. В таком случае для связи будет выбран тот сеанс, у которого инициатор имеет меньшее значение IP-адреса; другой же будет закрыт.

Для установки сеанса со стороны клиента рабочая станция отправляет прямой запрос к серверу по IP-адресу. В запросе содержатся MAC-адрес и SAP(Service Access Point) узла назначения. Рабочая станция может как указывать собственный MAC-адрес, так и запросить у сервера назначить таковой. IP-адрес сервера должен быть заранее прописан на рабочей станции. Если на рабочей станции указаны несколько серверов, то запрос может быть отправлен ко всем. Первый ответивший сервер будет выбран для дальнейшей работы.
Для установки сеанса со стороны сервера отправляется прямой запрос к рабочей станции. Для этого сервер заранее должен знать её MAC-адрес.

Формат сообщения

[править | править код]
Сообщение
DCAP Header DCAP Data User Data

DCAP Header (Заголовок) — первый блок сообщения — является обязательным для всех сообщений, передаваемых между клиентом DCAP и сервером. Имеет длину равную 4 байтам.
Блок DCAP Data. Структура блока и его размер основываются на указанном в заголовке типе сообщения. Данные DCAP используются для обработки сообщения. Блок не является обязательным.
User Data — содержит пользовательские данные, пересылаемые между клиентами и сервером. Размер этого блока переменный. Включается в сообщение только тогда, когда есть необходимые данные для передачи.

Заголовок сообщения

[править | править код]

В заголовке указывается тип и длина сообщения.

Байт DCAP Packet Header
0 ID Протокола Номер версии
1 Тип сообщения
2 Длина сообщения
3
  • ID Протокола занимает первые 4 бита первого байта. Это значение следует установить как «10002».Номер версии занимает следующие 4 бита. Значение следует установить как «00012».
  • Общая длина сообщения определяется, как сумма заголовка, тип DCAP Data и пользовательских данных.
  • Минимально возможный размер сообщения — 4 байта, то есть сообщение состоит только из заголовка.

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

Имя Значение Смысл
CAN_U_REACH 0x01 Указывает, достижима ли данная станция
I_CAN_REACH 0x02 Положительный ответ на флаг CAN_U_REACH
I_CANNOT_REACH 0x03 Негативный ответ на флаг CAN_U_REACH
START_DL 0x04 Настройка сеанса для данных адресов
DL_STARTED 0x05 Успешное начало сеанса
START_DL_FAILED 0x06 Неудачное начало сеанса
XID_FRAME 0x07 Кадр XID
CONTACT_STN 0x08 Установить режим SABME с адресатом
STN_CONTACTED 0x09 Станция доступна — установить режим SABME
DATA_FRAME 0x0A Послать SNA/NetBIOS дейтаграмму без установки соединения
INFO_FRAME 0x0B I-Frame с установлением соединения
HALT_DL 0x0C Прервать сеанс
HALT_DL_NOACK 0x0D Прервать сеанс без получения подтверждения
DL_HALTED 0x0E Сеанс был прерван.
DGRM_FRAME 0x11 Дейтаграмма для схемы
CAP_XCHANGE 0x12 Возможности обмена сообщениями.
CLOSE_PEER_REQUEST 0x13 Запрос на разъединение.
CLOSE_PEER_RESPONSE 0x14 Ответ на CLOSE_PEER_REQUEST
PEER_TEST_REQ 0x1D Тестовый запрос на проверку соединения
PEER_TEST_RSP 0x1E Ответ на проверку соединения

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

Схема протокола

[править | править код]

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