Протокол NETBIOS. Шоберг А.Г. - 11 стр.

UptoLike

Составители: 

9
11.1. Работа с именами
При добавлении имен команда добавляет указанное в поле NCB_NAME
имя в таблицу имен, расположенную на рабочей станции. Имя должно быть
уникальным в сети. Оно не может использоваться на других станциях ни как
обычное, ни как групповое. Если длина имени меньше 16 байт, оно должно
быть дополнено справа символами пробела.
В процессе добавления имени
NETBIOS посылает по сети запрос. Если такое имя уже используется на какой-
либо станции, эта станция пришлет ответ. В этом случае команда завершается с
ошибкой и имя добавлено не будет.
После успешного выполнения команды NETBIOS присваивает имени но-
мер и возвращает его в поле NCB_NUM блока NCB. Номер имени требуется
для работы с датаграммами. При добавлении имени станции осуществляется
опрос всей сети, занимающий довольно много времени.
При удалении имен команда удаляет имя из таблицы имен рабочей стан-
ции, если оно не используется каким-либо каналом. Если же имя используется
каналом, то оно помечается как назначенное для удаления и удаляется после за
-
крытия канала. Если имя используется несколькими каналами, его можно уда-
лить только после закрытия всех связанных с ним каналов.
Если попытаться удалить имя, которое используется каналом, команда
завершится с кодом ошибки 0xF. В этом случае перед удалением имени необ-
ходимо закрыть канал. Как только канал будет закрыт, связанное с ним имя
бу-
дет автоматически удалено, если перед закрытием канала выполнялась попытка
удалить имя.
11.2. Передача/Прием датаграмм
С помощью команд приема и передачи датаграмм можно передавать и
принимать пакеты без подтверждения. Длина сообщений, передаваемых при
помощи команд данной группы, ограничена 512 байтами. Существуют команды
для передачи и приема датаграмм по обычному, групповому имени,
а также ад-
ресованных одновременно всем станциям в сети (Broadcast - широковещатель-
ном режиме). Для передачи датаграммы не надо создавать канал с принимаю-
щей станцией.
При передаче и приеме заполняются адрес и размер буфера в
NCB_BUFFER_PTR и NCB_LENGTH.
Для передачи (Send) необходимо записать вызываемое имя в
NCB_CALLNAME (не требуется для широковещательного режима). Номер
станции, выдающей команду
, записан в NCB_NUM. При приеме (Receive)
NCB_CALLNAME не заполняется. Команды, работающие с именами, не могут
принимать датаграммы, переданные в широковещательном режиме и наоборот.
Имя может быть простым и групповым. Если перед вызовом команды в поле
NCB_NUM блока NCB записать значение 0xFF, команда сможет принимать да-
таграммы от любой станции для любого имени. Если длина принятой
дата-