DCAP
DCAP (англ. Data Link Switching Client Access Protocol — Протокол клиентского доступа к коммутации каналов передачи данных) — протокол, используемый между рабочими станциями и маршрутизаторами для транспортировки трафика SNA/NetBIOS посредством сеансов TCP.
DCAP | |
---|---|
Название | Data Link Switching Client Access Protocol |
Уровень (по модели OSI) | Прикладной |
Создан в | 1997 |
Порт/ID | 1973/TCP |
Спецификация | RFC 2114 |
В больших сетях 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 | Ответ на проверку соединения |
DCAP Data
Структура и размер блока зависит от того, какой тип сообщения был указан в заголовке. Данный блок не содержит пользовательских данных. Важно заметить, что в отправляемом сообщении зарезервированные поля должны быть установлены в значение 0, при этом принимающая сторона должна игнорировать эти поля.
Схема протокола
Следующая диаграмма показывает порядок обмена сообщениями между клиентом и сервером для нормального запуска и завершения сеанса.