Протокол NCP
В NetWare протокол NCP (NetWare Core Protocol) является надстройкой над протоколом IPX и используется для организации обмена между рабочей станцией и файловым сервером. На рисунке 2.18 (а) представлена структура пакета NCP.
Протокол NCP реализован в NetWare 3.х на системном уровне. В NetWare 4.х предлагается API-интерфейс NCP Extension для обращения к протоколу NCP из прикладных программ на рабочих станциях и из разрабатываемых NLM-модулей. Для обмена данными между программами по протоколу NCP используются пакеты IPX с номером гнезда 0х0451 и типом пакета 17.
Связь между рабочей станцией и файловым сервером, которые используют API-интерфейс к протоколу NCP, обычно организуется по следующей схеме:
30 или 42 | Заголовок IPX или SPX | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | Тип запроса или ответа | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Запрос 1111h - создать канал 2222h - запрос услуги 5555h - удалить канал 7777h - при обмене с файлом использовать протокол Burst Mode | Ответ 3333h - ответ обслуживания 7777h - использовать Burst Mode 9999h - запрос поставлен в очередь и обрабатывается | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Последовательный номер пакета | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Младшая часть номера канала | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Номер задачи, выдавшей запрос | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Старшая часть номера канала (в NetWare на 1000 клиентов)
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Код завершения (только для ответа) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Состояние канала (только для ответа) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
длина | Передаваемые данные |
а)
30 | Заголовок IPX-пакета (рисунок 2.15) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | Тип запроса или услуг (0х0004) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | Тип сервера (т.е. тип объекта в Bindery, обычно 0х0004) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
48 | Имя сервера | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | Номер сети (внутренний номер сети файлового сервера) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | Адрес узла файлового сервера (0х00000001) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | Номер гнезда, через которое сервер будет принимать запросы к службам NetWare (0х0451 - NCP) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | Рабочее поле |
б)
Рис. 2.18. Структура пакетов NCP (а) и SAP (б)
Таблица 2.5. Примитивы API-интерфейса для обращения к протоколу NCP из NLM-модуля
Примитив | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NWRegisterNCPExtension | Зарегистрировать функцию NLM-модуля как расширение NCP. Вход - имя регистрации, указатель на функцию (удалённую процедуру, которая выполняется как отдельная нить) и т. д. В прототип этой функции входят указатель на идентификатор соединения, указатель на буфер с исходными данными и длина этого буфера, указатель на буфер с результатами и длина этого буфера. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NWDeRegisterNCPExtension | Отменить регистрацию и удалить NLM-модуль из списка расширений NCP. |
Таблица 2.6. Примитивы API-интерфейса для обращения к протоколу NCP из прикладной
программы на рабочей станции или файловом сервере
Примитив | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NWScanNCPExtensionsInfo | Получить идентификатор расширения NCP. Вход - имя регистрации (см. таблицу 2.5) и др. Выход - идентификатор расширения NCP. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NWSendNCPExtensionRequest | Послать запрос на файловый сервер к удалённой процедуре. Вход - идентификатор расширения NCP, указатель на буфер с исходными данными, указатель на буфер результатов и др. Выход - результаты выполнения удалённой процедуры. |