Мир программирования

 


Найти: на:


Меню
Партнеры
Счетчики
Реклама

Сетевая базовая система ввода-вывода (NETBIOS)

Глава 4: Протокол блока сообщений спецпроцессора


 Предыдущая страница    |    Следующая страница  
Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

 О Б З О Р

          Протокол блока сообщений спецпроцессора (SMB), разработанный фирмами Microsoft, Intel и IBM, воплощает функции спецпроцессора и переадресатора Программы ЛВС ПЭВМ IBM. Этот протокол работает на прикладном уровне, и версия IBM требует для его успешного функционирования NETBIOS. Данный протокол разработан таким образом, чтобы не зависеть ни от ЭВМ, ни от ОС, однако реализация IBM тесно связана с PC-DOS.

          Хотя, по заявлению IBM, протокол SMB является открытым, очень малое количество фирм-продавцов программного обеспечения решили реализовать его в своих ЛВС ПЭВМ. Фирма 3Com Corporation собирается использовать этот протокол в своей реализации 3+. Одной из причин такого решения послужило то, что компании 3Сom и AT&T заключили соглашение по изготовлению комплексного оборудования, по которому AT&T стандартизирует программное обеспечение 3Com с помощью своей ЛВС с немодулированной передачей STARLAN 1 Мбайт/сек для небольших ЭВМ AT&T (6300 и 7300). Другая причина - тесные связи 3Сom с Microsoft - обе фирмы работали над созданием Администратора ЛВС для OS/2 (см. Главу 6). Другие фирмы-продавцы, например, Novell, реализовали свои собственные протоколы переадресатора (оболочку) и протоколы спецпроцессора.

          Программа ЛВС ПЭВМ IBM может быть разбита на четыре основных части: переадресатор, получатель, отправитель сообщений и спецпроцессор. Переадресатор перехватывет вызовы функций DOS 21H и определяет, предназначен ли запрос для местного или удаленного устройства. Если устройство является местным, переадресатор просто передаст запрос местной операционной системе (DOS 3.1 или более высокая версия для Cети IBM PC или DOS 3.2 или более поздняя версия для ЭКС). Если запрос предназначен для удаленного устройства, то переадресатор транслирует его в протоколы блока сообщений спецпроцессора.

          Получатель "слушает" протоколы SMB, передаваемые от другой ПЭВМ в сети, а затем удаляет ту часть сообщения, которая может быть прочитана человеком, и передает ее местному устройству - экрану, файлу или печатающему устройству. Отправитель подобен получателю: кроме обработки сообщений, он также посылает их в другом направлении. Он может пересылать сообщения от пользователя в SMB, с тем, чтобы они транслировались по сети к другой ПЭВМ.

          Сервер (спецпроцессор) - наиболее сложная часть программы, т.к. он воплощает в себе полный набор протоколов SMB и управляет коллективаным доступом других ПЭВМ в сети к местным устройствам. Он предназначен для обработки двух типов запросов, поступающих от других ПЭВМ, - запрос на доступ к файлам и запрос на буферизацию печати.

          Первые три функции - переадресатор, получатель и отправитель - могут рассматриваться как подмножество (поднабор) спецпроцессора. Обмены информацией всегда запускаются каким-либо действием от запрашивающей ПЭВМ. Как правило, запросчиком является переадресатор, а запрос посылается одному из четырех устройств, как это описано выше.

[начало] [оглавление]

 

Поименование

          Поименование поддерживает обмен данными между двумя точками в сети. SMB поддерживает два класса имен - имена сети и имена маршрутов сети.

          Имена сети представляют собой 16-байтовые символьные строки, обозначающие имена машины, спецпроцессора, переадресатора, главного пользователя и дополнительных пользователей, которые добавляются в таблицу местных имен каждой ПЭВМ. Максимальная длина имени может составлять до 15 байт, если необходимо, в имени могут проставляться пробелы. Суффикс длиной в 1 байт обозначает тип имени. Имя машины имеет длину до 15 символов. Это имя придается ЭВМ программным обеспечением, под управлением оконечного пользователя. Имя спецпроцессора имеет длину 16 байт и состоит из имени машины с 20H в шестнадцатом байте. Это имя используется в ПЭВМ рабочей станции для обмена данными с ПЭВМ спецпроцессора. Для обмена данными с переадресатором используется 16-байтовое имя, состоящее из имени машины с 00H в шестнадцатом байте. Имя дополнительного пользователя состоит из имени машины с 03H в шестнадцатом байте. Оно предназначено для отправки и приема сообщений. Имя главного или дополнительного пользователя, чей шестнадцатый байт изменен на 05H, является ретранслируемым.

          Имена маршрутов сети ассоциируются с разделяемыми ресурсами. Для каждого ресурса, такого как подкаталог на жестком диске спецпроцессора, создается имя маршрута сети для подкаталога (маршрута) посредством прибавления имени машины (префиксации) впереди имени ресурса (маршрута).

          Имя маршрута сети имеет следующий формат:
\\nnnnnnnnnnnnnnn\ddddddddd...ddd
где nnn...n - имя машины, состоящее из от 1 до 15 символов, а ddd...d - имя устройства или маршут (путь доступа) каталога. Максимальная длина имени маршрута сети - 146 байт.

[начало] [оглавление]

 

Установка соединения ПЭВМ-спецпроцессор

          Когда пользователь пытается "подсоединиться" к ресурсам спецпроцессора (например, посредством команды Программы ЛВС ПЭВМ NET USE), переадресатор осуществит попытку установить сеанс со спецпроцессором. Если в таблице адресов местного адаптера есть свободное место, начинается сеанс, в котором переадресатор и спецпроцессор договариваются о протоколе, и начинается обмен данными.

          Со стороны спецпроцессора, переадресатор делает запрос, чтобы установить соединение с общим ресурсом, таким как подкаталог. Спецпроцессор удостоверится, что запрашиваемый ресурс существует, и, если это так, проверит достоверность пароля. Затем спецпроцессор выдаст максимальный размер блока передачи спецпроцессора и handle соединения, называемый идентификатором маршрута сети (подобный возвращаемому PC-DOS при открытии файла) для всех будущих запросов к ресурсам. Когда соединение завершается, переадресатор "приказывает" спецпроцессору закончить соединение и освободить идентификатор.

          Пользователь может ретранслировать сообщения другму компьютеру. В этом случае, отправитель (например, спецпроцессор) делает запрос, чтобы компьютер, получающий ретранслируемое сообщение, добавил имя пользователя в сеть как ретранслируемое имя. С этого момента сообщения для данного пользователя будут передаваться требуемой ЭВМ.

[начало] [оглавление]

 

Протоколы блока сообщений спецпроцессора (SMB)

          Набор протоколов SMB состоит из четырех типов блоков соощений спецпроцессора: управления сеансом (соединением), файла, печатающего устройства и сообщения. Управление сеансом выполняет две основные функции: определение диалекта и управление соединением. Если Программа ЛВС ПЭВМ работает (и, следовательно, задействованы протоколы SMB), после установки сеанса между ПЭВМ-переадресатором и ПЭВМ-спецпроцесором, переадресатор посылает команду VERIFY DIALECT вместе со списком поддерживваемых диалектов обратно спецпроцессору. Последний затем определяет, может ли он поддержать один из этих диалектов. Если да, то он затем отсылает обратно переадресатору указание о том, какой диалект будет использоваться. Если спецпроцессор не сможет поддержать ни один из диалектов, он посылает сообщение об ошибке обратно ПЭВМ-переадресатору, и сеанс завершается.

          Управление соединением состоит из команд, которые начинают и оканчивают соединение переадресатора с общим ресурсом в спецпроцессоре. Команда START CONNECTION устанавливает соединение между ПЭВМ-переадресатором и общим ресурсом в ПЭВМ-спецпроцессоре. Все дальнейшие команды и ответы используют этот сеанс. Команда END CONNECTION завершает соединение между переадресатором и общим ресурсом.

          Переадресатор может использовать команды доступа к файлу для обращения к файлам в спецпроцессоре, если командой START CONNECTION было установлено соединение. Эти команды подобны вызовам функций местной PC-DOS, которые позволяют получить доступ к файлам и каталогам. Для определения конфигурации и состояния удаленных общих ресурсов были введены дополнительные команды. Поддерживаемые команды доступа к файлу включают: преверить, создать и удалить каталоги; создать файл, создать рабочий файл, создать новый файл; стереть или переименовать файл, получить или установить атрибуты файла, поиск нескольких файлов и получение атрибутов диска; открыть и закрыть файлы, прочитать и записать блок байт, выполнить процесс и закончить процесс; блокировать и разблокировать блок байт.

          Команды процессора печати позволяют переадресатору посылать файлы в очередь печати спецпроцессора и получать информацию о состоянии очереди печати. Эти команды включают: создать буферный файл, буферизировать блок байт, закрыть буферный файл, возвратить очередь печати.

          Прикладная программа может использовать команды сообщений для отправки и получения сообщений. Эти команды включают команды для отправки и получения коротких сообщений (одна передача) или длинных сообщений (несколько передач), команды для ретрансляции или отмены сообщений и команды для отправки широковещательных (только коротких) сообщений. В то время как протоколы сообщений позволяют нескольким пользовательским именам в одной ПЭВМ получать или отправлять сообщения, реализация Программы ЛВС ПЭВМ IBM позволяет посылать сообщения только от одного имени. Команды, поддерживающие сообщения, включают: послать сообщение, состоящее из одного блока, послать широковещательное сообщение, послать начало сообщения состоящего из нескольких блоков, послать текст сообщения, состоящего из нескольких блоков, послать конец сообщения состоящего из нескольких блоков, ретранслировать имя пользователя, отменить ретрансляцию, получить имя машины.

[начало] [оглавление]

 

Формат Блока сообщений спецпроцессора (SMB)

          В этом разделе описывается общая структура и поля SMB (формат). Заметьте, что термины "имя устройства", "имя каталога" и "имя файла" относятся к своим эквивалентам в PC-DOS (например, имя устройства PRN обозначает принтер). Имя диалекта представляет собой строку символов, которая имеет те же ограничения, что и имя файла (8 символов плюс необязательное расширение из 3 символов). В начале данной главы описывается структура имени сети. Имя источника и назначения представляют собой имена длиной от 1 до 15 символов (см.выше). Пароль представляет собой имя длиной от 1 до 8 символов, которое имеет те же ограничения, что и имя файла PC-DOS. На рис. 4-1 показан типичный формат SMB.


ПОЛЕ РАЗМЕР ОПИСАНИЕ
-------------------------------------------------------------------
!SMB_ID ! DB 0FFH ! Программа Сети РС 1.0 Тип сообщения !
-------------------------------------------------------------------
!SMB_SERVER ! DB 'SMB' ! Тип спецпроцессора SMB !
-------------------------------------------------------------------
!SMB_FUNCTION! DB 0 ! Код функции !
-------------------------------------------------------------------
!SME_RETCLASS! DB 0 ! Класс ошибки возврата !
-------------------------------------------------------------------
!SMB_HEINFO ! DB 0 ! Величина AH по прерыванию INT 24H !
! ! ! или зарезервировано = 0 !
-------------------------------------------------------------------
!SMB_RETCODE ! DW 0 ! Код ошибки возврата !
-------------------------------------------------------------------
!SMB_RESV1 ! DB 0 ! Зарезервировано; должно быть 0 !
-------------------------------------------------------------------
!SMB_RESV2 ! DB 0 ! Зарезервировано; должно быть 0 !
-------------------------------------------------------------------
! ! ! !
-------------------------------------------------------------------
! ! ! !
-------------------------------------------------------------------
! ! ! !
-------------------------------------------------------------------
! ! ! !
-------------------------------------------------------------------
! ! ! !
-------------------------------------------------------------------
!SMB_RESV8 ! DW 0 ! Зарезервировано; должно быть 0 !
-------------------------------------------------------------------
!SMB_NPID ! DW 0 ! Идентификатор маршрута сети !
-------------------------------------------------------------------
!SMB_PID ! DW 0 ! Идентификатор процесса !
-------------------------------------------------------------------
!SMB_RESV9 ! DW 0 ! Зарезервировано; должно быть 0 !
-------------------------------------------------------------------
!SMB_RES10 ! DW 0 ! Зарезервировано; должно быть 0 !
-------------------------------------------------------------------
!SMB_PARMCNT ! DB 0 ! Подсчет параметров в SMB !
-------------------------------------------------------------------
!SMB_P1-PN ! DW 0 ! Функционально-зависимые параметры SMB !
-------------------------------------------------------------------
!SMB_BUFLEN ! DW 0 ! Длина буфера SMB !
-------------------------------------------------------------------
!SMB_BUF ! DB'bytes'! Начало области буфера SMB !
-------------------------------------------------------------------


Рис 4-1. Типичный формат SMB.


Поле SMB_FUNCTION может принимать следующие величины:

Величина Значение
-------- --------

00H Создать каталог
01H

02H Открыть файл
03H Создать файл
04H Закрыть файл
05H Выполнить все файлы
06H Стереть файл
07H Переименовать файл
08H Получить атрибут файла

09H Установить атрибут файла
0AH Прочитать байтовый блок
0BH Записать байтовый блок
0CH Блокировать байтовый блок
0DH Разблокировать байтовый блок

0EH Создать уникальный файл
0FH Создать новый файл

10H Проверить каталог

11H Конец процесса
12H LSEEK (см.далее)

70H Начать соединение
71H Закончить соединение
72H Проверить диалект

80H Получить атрибуты диска
81H Поиск нескольких файлов

C0H Создать буферный файл
C1H Буферизировать байтовый блок
C2H Закрыть буферный файл
C3H Возвратить очередь печати

D0H Послать сообщение
D1H Послать широковещательное сообщение
D2H Ретранслировать имя пользователя
D3H Отменить ретрансляцию
D4H Получить имя машины
D5H Начать много-блоковое сообщение
D6H Закончить много-блоковое сообщение
D7H Текст много-блокового сообщения

Поле SMB_RETCODE может принимать следующие величины (если SMB_RETCLASS = 00H):

Величина Значение
-------- --------

0054H Сообщение было буферизировано
0055H Сообщение было зарегистрировано
0056H Показано сообщение пользователя.

Поле SMB_RETCODE может принимать следующие величины (если SMB_RETCLASS = 02H):

Величина Значение
-------- --------

0000H Зарезервировано
0001H Неизвестная ошибка
0002H Неверный пароль
0003H Не соответствует присвоенный тип устройства

0004H Нарушен уровень доступа к имени сети

0005H Неверный идентификатор маршрута сети
0006H Не найден маршрут сети
0007H Неправильное устройство

0031H Очередь печати заполнена (число файлов)
0032H Очередь печати не помещается в свободное место
0033H Конец файла в очереди печати
0034H Неверный идентификатор файла печати

0051H Пауза спецпроцессора
0052H Нет получаемых сообщений
0053H Нет места для буферизации сообщения
0057H Чрезмерное количество отдаленных
пользовательских имен
0058H Дублирующееся имя в сети

FFFFH Функция не поддерживается

Команды управления сеансом

VERIFY DIALECT - Команда посылается переадресатором спецпроцессору для установки диалекта.

START CONNECTION - Команда устанавливает соединение между переадресатором и общим ресурсом спецпроцессора. Спецпроцессор содержит таблицу, которая устанавливает соответствие общего ресурса из имени маршрута сети с местным именем, определяет тип ресурса и содержит произвольный пароль. Спецпроцессор возвращает идентификатор маршрута сети для использования в последующих запросах этого ресурса. Прикладная программа может также использовать команду START CONNECTION для обмена данными ПЭВМ-ПЭВМ, в котором максимальный размер передачи составляет 512 байт.

Команды файла

CREATE DIRECTORY - Посылается от переадресатора к спецпроцессору для выполнения функции PC-DOS MKDIR (создать каталог).

REMOVE DIRECTORY - Посылается от переадресатора к спецпроцессору для выполнения функции PC-DOS RMDIR (удалить каталог).

CHECK DIRECTORY - Посылается переадресатором для определения, существует ли каталог спецпроцессора, когда пользователь выполняет команду DOS CHDIR (изменить каталог).

OPEN FILE - Посылается от переадресатора к спецпроцессору для открытия файла и возврата handle файла (подобно операции местной PC-DOS). Начиная с версии PC-DOS 3.1, для многопользовательской среды поддерживаются несколько дополнительных режимов открытия файлов. Они приводятся ниже в таблице.

Режим открытия файлов Значение
--------------------- --------

Совместимость Обеспечивает совместимость с прикладными
программами, которые использовали предыду-
щие версии PC-DOS. Файл может быть открыт
любое количество раз, если он не открыва-
ется в PC-DOS 3.1 и позднейших версиях.

Отказ в Используется для получения монопольного
чтении/записи доступа к файлу. На запрос получается
отказ, если файл уже был открыт в любом
другом режиме.

Отказ в записи Позволяет открывать файл столько раз,
сколько это требуется для чтения. На
запрос получается отказ, если файл уже
был открыт в доступе записи или в
режиме совместимости.

Отказ в чтении Позволяет открывать файл для записи.
На запрос получается отказ, если файл
уже был открыт для чтения в режиме
совместимости (эмуляции).

Нет отказа Позволяет открывать файл любое требу-
емое количество раз для чтения/записи.
На запрос будет дан отказ, если файл
уже был открыт в любом другом режиме.


          Если прикладная программа открывает файл,используя более старый метод Блока управления файлами (FCB) посредством прервывания DOS INT21H, функция 0FH, то режимы коллективного пользования не поддерживаются.

CREATE FILE - Посылается переадресатором спецпроцессору для создания нового файла и возврата handle файла. Эта команда также используется для уничтожения старого файла и создания нового с таким же именем. На запрос будет дан отказ, если файл открыт или атрибут файла установлен как только для чтения.

CLOSE FILE - Посылается переадресатором спецпроцессору для закрытия файла. Переадресатор посылает handle файла.

COMMIT FILE - Посылается переадресатором спецпроцессору для осуществления запроса, что все буферы для файла были записаны на жесткий диск спецпроцессора. Переадресатор определяет handle файла, и спецпроцессор выдает ответ, когда операция завершена. Несколько файлов могут быть выполнены, если переадресатор определяет, что должны быть выполнены все файлы, открытые в соединении, которое представлено идентификатором маршрута сети в поле SMB_NPID.

DELETE FILE - Посылается переадресатором спецпроцессору для уничтожения файла. Переадресатор определяет handle файла. На запрос будет получен отказ, если файл открыт или помечен как доступный только для чтения.

RENAME FILE - Посылается переадресатором спецпроцессору для переименования файла.

GET FILE ATTRIBUTES - Посылается переадресатором спецпроцессору для получения атрибутов файла, времени последнего доступа к файлу и размера.

SET FILE ATTRIBUTES - Посылается переадресатором спецпроцессору для установки атрибутов файла.

READ BYTE BLOCK - Посылается переадресатором спецпроцессору для считывания блока данных из файла.

WRITE BYTE BLOCK - Посылается переадресатором спецпроцессору для записи блока данных из файла.
LSEEK - сокращение от LONG SEEK (Длительный поиск). Посылается спецпроцессору для передвижения указателя файла. Программа ЛВС ПЭВМ использует эту функцию для определения размера файла. Файл должен быть предварительно открыт в режиме, который поддерживает коллективное чтение.

LOCK BYTE BLOCK - Поддерживает расширенную функцию блокировки файлов по байтам, которая имеется в версии PC-DOS 3.1 и выше. Посылается переадресатором спецпроцессору для блокировки области байт в файле. Размер этой области может быть от одного байта до целого файла. На запрос будет получен отказ, если какой-либо байт входит в уже заблокированную область. Заметьте, что эта функция неадекватно поддерживает обработку транзакции, т.к. не поддерживаются элементарные блокировки (несколько запросов о блокировке в одном запросе для выполнения транзакции). Некоторые спецпроцессоры, например, NetWare фирмы Novell, поддерживают элементарные блокировки.

UNLOCK BYTE BLOCK - Дополняет прудыдущую; передается переадресатором спецпроцессору для разблокирования области байт в файле.

CREATE UNIQUE FILE - Посылается переадресатором спецпроцессору для генерации уникального имени файла спецпроцессором (фактически PC-DOS, работающей на данном спецпроцессоре). Спецпроцессор затем возвращает уникальное имя переадресатору. Уникальные имена используют прикладные программы, которые требуют наличия временных рабочих файлов.

CREATE NEW FILE - Команда аналогична предыдущей, за исключением того, что имя файла должно быть уникально для файлов, уже существующих в данном каталоге.

END OF PROCESS - Посылается переадресатором спецпроцессору для окончания работы в соединении. Она посылается для каждого маршрута сети, который является активным для переадресатора.

GET DISK ATTRIBUTES - Посылается переадресатором спецпроцессору для получения информации о размере памяти и формате жесткого диска.

SEARCH MULTIPLE FILES - Посылается переадресатором спецпроцессору для выполнения функций поиска Блока управления файлами (FCB) PC-DOS и функций поиска ASCII. Имя файла и маршрута передаются спецпроцессору. Также может вестись поиск скрытых (спрятанных) и системных файлов.

Команды печати

CREATE SPOOL FILE - Посылается переадресатором спецпроцессору для установки потока данных, в которых необходимо буферизировать данные печати.

SPOOL BYTE BLOCK - Посылается переадресатором спецпроцессору для буферизации блока данных из файла. Первый посылаемый блок содержит установочную информацию для печатающего устройства.

CLOSE SPOOL FILE - Посылается переадресатором спецпроцессору для закрытия буферного файла. Затем спецпроцессор помещает файл в очередь для печати.

RETURN PRINT CODE - Посылается переадресатором спецпроцессору для возврата содержимого очереди печати спецпроцессора.

Команды сообщений

SEND SINGLE BLOCK MESSAGE - Посылается от одного переадресатоа другому. Команда посылает короткие (одноблочные) сообщения, максимальная длина которых 128 символов.

SEND BROADCAST MESSAGE - Посылает короткое собщение всем получателям в сети. Широковешательное сообщение посылается как дейтаграмма, - от получателей ответов не поступает.

SEND START OF MULTI-BLOCK MESSAGE - Посылается отправителем для начала многоблочного сообщения. Получатель возвращает идентификатор группы сообщения, который используется блоками последующего сообщения.

SEND TEXT OF MULTI-BLOCK MESSAGE - Посылается отправителем для отправки сообщения размером до 1600 символов по блокам длиной в 128 символов.

SEND END OF MULTI-BLOCK MESSAGE - Посылается отправителем для указания конца многоблочного сообщения.

FORWARD USER NAME - Посылается отправителем спецпроцессору запрашивающему, чтобы спецпроцессор получал сообщения для дополнительного имени пользователя. Для добавления этого имени, в таблице спецпроцессора должно быть свободное место.

CANCEL FORWARD - Дополняет предыдущую команду. Спецпроцессор сотрет имя пользователя из своей таблицы.

GET MACHINE NAME - Посылается для получения имени машины пользовательского имени. Данная команда обычно используется вместе с предылдущей, чтобы получить имя, на которое посылать команду CANCEL FORWARD.

[начало] [оглавление]


Предыдущая страница    |    Следующая страница


Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

Опрос

Конкурсы
Реклама

 

Web дизайн: Бурлаков Михаил    

Web программирование: Бурлаков Михаил

Используются технологии uCoz