NetWare версий 3.х и 4.х построены с использованием одинаковых принципов.
Во введении отмечалось, что NetWare относится к классу операционных систем с выделенным сервером. Поэтому на рабочих станциях (WS) и файловом сервере (FS) используются различные операционные системы. Взаимосвязь этих ОС осуществляется посредством кадров, которые передаются по шине, соединяющей станции. Рассмотрим процесс передачи данных или команд от рабочей станции к файловому серверу.
С точки зрения организации взаимосвязи с файловым сервером все прикладные программы и утилиты рабочей станции условно можно разделить на два класса: "клиент-файл" и "клиент-сервер".
К первому классу ("клиент-файл") относятся программы, выполняющие операции (открытие, ввод/вывод, закрытие) с файлами, которые хранятся на файловом сервере. В DOS при выполнении операций с файлами вырабатывается прерывание 21Н, которое перехватывается оболочкой (запросчиком) рабочей станции (рисунок 2.1).
Если файл располагается на локальном диске, то оболочка переадресовывает это прерывание операционной системе рабочей станции. Если файл располагается на файловом сервере, то оболочка открывает так называемое гнездо, используемое в дальнейшем для приема пакетов с файлового сервера. Затем запросчик формирует пакет для передачи его на сервер. Одно из полей этого пакета содержит номер гнезда, совпадающий с номером гнезда нити (задачи) сервера, которая будет обрабатывать этот пакет. Далее оболочка с помощью специальной функции протокола направляет пакет в сеть. При прохождении через драйвер сетевого адаптера (СА) пакет превращается в кадр, т.е. к нему добавляется заголовок и концевик кадра. Именно кадр переда╦тся по шине сети. Таким образом, оболочка реализует прозрачный доступ прикладной программы к файлу, который хранится на сервере. Т. е. программист может использовать обычные функции ввода/вывода языка С или Ассемблера, не вникая в детали API-интерфейса рабочей станции с файловым сервером.
При выполнении операций с файлом в программе, функционирующей под управлением OS/2, реализуются аналогичные действия. Только здесь соответствующее прерывание сначала перехватывается ОС, которая переадресовывает его оболочке.
Ко второму классу ("клиент-сервер") относятся программы рабочей станции, непосредственно взаимодействующие с NLM-модулями файлового сервера. Перед передачей пакета NLM-модулю прикладная программа рабочей станции должна открыть гнездо, используемое в дальнейшем для приема пакетов, передаваемых с файлового сервера NLM-модулем. Далее прикладная программа формирует пакет для передачи по сети. Одно из полей этого пакета должно содержать номер гнезда нити, с которой связан соответствующий NLM-модуль. Затем прикладная программа рабочей станции направляет пакет в сеть с помощью специальной функции протокола. При прохождении через драйвер СА пакет превращается в кадр. Таким образом, если программист создал свой NLM-модуль и желает осуществить к нему доступ со стороны рабочей станции, то он должен создать и соответствующую прикладную программу типа "клиент-сервер". При этом программист должен знать детали API-интерфейса.
Рис. 2.1. Схема взаимодействия рабочей станции и файлового сервера
Заголовок кадра, передаваемого по сети, содержит адрес станции получателя и адрес станции отправителя. Если адрес станции получателя совпадает с адресом, на который настроен сетевой адаптер файлового сервера, то кадр принимается и обрабатывается драйвером СА сервера. При этом пакет выделяется из кадра, анализируется соответствующим протоколом и посылается на обработку нити, открывшей гнездо, номер которого совпадает с номером гнезда в пакете. Нить - это внутренняя задача NetWare или задача, связанная с каким-либо NLM-модулем. Далее результаты обработки пересылаются прикладной программе, выполняемой на рабочей станции, в виде одного или нескольких пакетов.