В этой главе мы кратко рассмотрим общие принципы взаимодействия файл-сервера и рабочих станций.
В томе "Библиотеки системного программиста", посвященном установке аппаратного и программного сетевого обеспечения, мы рассказывали вам о том, что локальная сеть объединяет между собой несколько компьютеров и что часть этих компьютеров в сети Novell NetWare обязательно выделяется для работы в качестве файл-серверов. На остальных компьютерах работают пользователи.
Программное обеспечение файл-сервера сети Novell NetWare состоит из сетевой операционной системы NetWare. Эта операционная система работает в мультизадачном режиме реального времени, обеспечивая совместное использование ресурсов файл-сервера рабочими станциями.
В рамках NetWare одновременно работают несколько процессов. В версии 2.2 используются VAP-процессы, в версии 3.11 - динамически подгружаемые NLM-процессы. Эти процессы (или программы) через драйвер сетевого адаптера и с использованием протокола передачи данных IPX взаимодействуют с программным обеспечением рабочих станций, предоставляя им файловый сервис, а также другие виды сервиса.
Например, в качестве отдельного процесса на файл-сервере может работать сервер печати, обеспечивающий коллективный доступ к принтеру, или сервер СУБД, получающий запросы от рабочих станций и выполняющий поиск в базе данных, расположенной на дисках файл-сервера.
Таким образом, рабочие станции при помощи протокола IPX посылают в файл-сервер запросы. Соответствующий процесс, запущенный на файл-сервере, их обрабатывает и в случае необходимости посылает результат рабочей станции, пользуясь все тем же протоколом IPX.
Теоретически ваша программа, запущенная на рабочей станции, может сама посылать все необходимые запросы файл-серверу через протокол IPX и обрабатывать полученные в ответ пакеты данных. Однако на практике так никогда не делают. Для работы с файл-сервером используют специальную программу, называемую сетевой оболочкой рабочей станции. Эта оболочка предоставляет программам интерфейс достаточно высокого уровня, который в основном и является предметом изучения в данной книге.
Сетевое программное обеспечение рабочей станции Novell NetWare в среде MS-DOS состоит из нескольких резидентных программ: программы поддержки протоколов передачи данных lsl.com, драйвера сетевого адаптера (например, ne2000.com), драйвера протоколов IPX/SPX ipxodi.exe и, наконец, сетевой оболочки netx.exe.
Резидентная программа netx.exe обеспечивает интерфейс с файл-серверами, перехватывая прерывания INT 21h, INT 24h и INT 17h.
Прерывание INT 21h в отсутствие сетевой оболочки реализует стандартный набор функций MS-DOS, который мы подробно рассматривали в первом томе "Библиотеки системного программиста". Программа netx.exe перехватывает некоторые функции MS-DOS, например функции, предназначенные для работы с дисками и файлами. Если программа работает с локальным диском, сетевая оболочка передает управление соответствующим функциям MS-DOS. Если же программа пытается обратиться к дискам сервера, все запросы через протокол IPX адресуются соответствующему серверу. Так как, обращаясь к дискам, программа вызывает обычные функции MS-DOS, она может и не знать, что работает не с локальным диском, а с диском сервера.
Кроме перехвата имеющихся функций MS-DOS сетевая оболочка добавляет новые функции, предназначенные в основном для работы с файл-сервером. Практически весь описанный в этой книге интерфейс с файл-сервером Novell NetWare реализован как расширение стандартного набора функций MS-DOS в рамках прерывания INT 21h.
Прерывание INT 24h используется операционной системой MS-DOS для обработки критических ошибок. Сетевая оболочка расширяет возможности обработчика критических ошибок MS-DOS.
Прерывание INT 17h - это прерывание BIOS, предназначенное для печати на принтере. Перехватывая это прерывание, сетевая оболочка может переназначать печать с локального принтера на удаленный сетевой принтер.
Таким образом, прикладная программа, запущенная на рабочей станции, может посылать запросы серверу через дополнительные (сетевые) функции прерывания INT 21h, встраиваемые сетевой оболочкой. Сетевые функции при необходимости сами формируют IPX-пакеты и передают их нужному файл-серверу, а также принимают ответные пакеты. Сама же прикладная программа редко работает с файл-сервером на уровне IPX-пакетов, так как интерфейс сетевой оболочки значительно удобнее.
По назначению сетевые функции можно разбить на следующие группы:
функции для создания и удаления каналов между рабочими станциями и файл-серверами;
В нашей книге мы рассмотрим использование основных функций, входящих в перечисленные выше группы, и приведем исходные тексты программ, демонстрирующих работу с ними.
Прежде чем мы перейдем к детальному изучению возможностей сетевой оболочки, сделаем краткий обзор основных групп сетевых функций.
Прежде чем сетевая оболочка сможет получить сервис от файл-сервера, она должна установить с файл-сервером канал связи (connection). Оболочка рабочей станции может создать до восьми каналов с восемью различными файл-серверами. Количество каналов, которые может создать файл-сервер с рабочими станциями, зависит от версии и конкретной конфигурации сетевой операционной системы Novell NetWare. Например, если вы приобрели версию NetWare на 20 пользователей, ваш файл-сервер может создать не более 20 каналов с рабочими станциями.
Как файл-сервер, так и оболочка рабочей станции имеют собственные таблицы каналов, в которых записана необходимая информация о каждом канале (например, сетевые адреса файл-серверов).
В данной группе есть функции для создания каналов с файл-серверами, для удаления этих каналов, а также для получения информации из таблицы каналов.
При создании канала с файл-сервером сетевая оболочка не сообщает серверу имя и пароль пользователя. Это связано с тем, что создание канала еще не означает получения полного доступа к серверу. Программа, создавшая канал с файл-сервером, еще не имеет доступа к его дискам. Для получения доступа к ресурсам файл-сервера необходимо выполнить процедуру подключения пользователя к файл-серверу с помощью специально предназначенной для этого функции. Функции подключения требуется указать имя пользователя и пароль, назначенные супервизором сети или руководителем группы.
Разумеется, имеются функции для отключения пользователя от одного файл-сервера или от всех файл-серверов сразу.
В составе сетевой оболочки имеются функции, предназначенные для отображения локальных дисков рабочей станции на тома и каталоги файл-сервера. Сетевая оболочка использует несколько таблиц для обеспечения такого отображения.
Когда программа, запущенная на рабочей станции, обращается к диску, сетевая оболочка просматривает таблицы отображения и определяет, к какому диску - локальному или сетевому - выполняется обращение. Если программа обращается к локальному диску, сетевая оболочка вызывает соответствующую функцию MS-DOS. Если же программа обращается к диску, отображенному на том или каталог файл-сервера, сетевая оболочка при помощи протокола IPX отправляет запрос соответствующему файл-серверу.
В состав данной группы входят многочисленные функции для отображения дисков, для создания, переименования и удаления каталогов, для изменения прав доступа пользователей к каталогам, для получения различной справочной информации о правах доступа, томах, каталогах и о содержимом каталогов.
Работа с файлами, расположенными на дисках файл-сервера, имеет ряд особенностей. Вам необходимо учитывать возможные ограничения прав доступа, возможность одновременного доступа к файлу со стороны нескольких рабочих станций.
Поэтому дополнительно к обычным функциям MS-DOS, предназначенным для работы с файлами, сетевая оболочка добавляет новые, учитывающие специфику работы с файл-сервером.
Сетевая оболочка содержит функции для передачи данных между рабочими станциями через память файл-сервера. Пользоваться этими функциями значительно проще, чем функциями драйвера протоколов IPX/SPX, но и скорость передачи данных средствами сетевой оболочки ниже.
Вы можете организовать передачу сообщений или создать канал (pipe) между программами, запущенными на различных рабочих станциях.
Для синхронизации программ, запущенных на различных рабочих станциях, сетевая оболочка использует механизм семафоров. Семафоры физически расположены на файл-сервере. Сетевая оболочка предоставляет программам функции для изменения или проверки состояния семафоров.
С каждым семафором логически можно связать какой-либо критический ресурс, совместно используемый различными рабочими станциями, например модем или принтер. Захватив управление ресурсом, одна из рабочих станций устанавливает соответствующий семафор. Когда другой станции потребуется доступ к этому ресурсу, она должна опросить состояние семафора. Если семафор установлен, рабочая станция должна ждать освобождения ресурса.
Файл-сервер Novell NetWare хранит информацию о пользователях и ресурсах в специальной базе объектов, которая называется BINDERY. В этой базе хранятся имена пользователй, пароли, права доступа к объектам и другая информация. Сетевая оболочка рабочей станции предоставляет программам все необходимые функции для работы с базой данных объектов, выполняющие добавление, извлечение, изменение и поиск информации в базе данных. Успех выполнения практически всех функций зависит от прав доступа вызывающей программы. Например, программа, подключившаяся к серверу на правах супервизора, может извлекать и изменять практически любые данные в базе BINDERY, в то время как обычному пользователю в основном доступны только функции, получающие сведения о самом себе.
Функции этой группы могут пригодиться вам для создания утилит оператора консоли и супервизора сети, так как они позволяют управлять файл-сервером и получать информацию о его состоянии. Вы сможете разрешать или запрещать подключение пользователей к системе, передавать сообщения одновременно на все рабочие станции, устанавливать системные часы файл-сервера, отключать пользователей от файл-сервера, останавливать работу файл-сервера и т. д. Практически все функции управления для своего использования требуют прав доступа оператора консоли или супервизора.
К этой группе мы отнесем все остальные функции, такие, как функции управления системой отката транзакций (TTS), функции для обслуживания рабочих станций Apple и некоторые другие. Так как объем книги ограничен, мы не сможем описать все функции сетевой оболочки.