Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prakt-Storozhok.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.98 Mб
Скачать

1. Теоретическое введение

В теоретическом введении рассматриваются следующие вопросы.

  • Назначение протокола NetBIOS.

  • Назначение протокола NetBEUI.

  • Принципы работы с NetBIOS.

1.1. Назначение протокола NetBios

NetBIOS только формирует данные для передачи, а физически передаваться они могут только с помощью другого протокола, например, TCP/IP, SPX/SPX и т. д. Это значит, что NetBIOS является независимым от транспорта. Если другие варианты протоколов верхнего уровня (только формирующие пакеты, но не передающие) привязаны к определенному транспортному протоколу, который должен передавать сформированные данные, то пакеты NetBIOS может передавать любой другой протокол. Следовательно, сетевая программа, работающая через NetBIOS, будет работать как в unix/windows сетях через TCP, так и в Novell-сетях через IPX.

Вместе с тем, для того, чтобы два компьютера смогли соединиться друг с другом с помощью NetBIOS, необходимо чтобы на обоих стоял хотя бы один общий транспортный протокол. Если один компьютер будет посылать NetBIOS пакеты с помощью TCP, а другой - с помощью IPX, то эти компьютеры друг друга не поймут. Транспорт должен быть одинаковый.

Стоит сразу же отметить, что не все варианты транспортных протоколов по умолчанию могут передавать по сети пакеты NetBIOS. Например, IPX/SPX сам по себе этого не умеет. Чтобы его обучить, нужно иметь «NWLink IPX/SPX/NetBIOS Compatible Transport Protocol».

Так как NetBIOS чаще всего использует в качестве транспорта протокол TCP, который работает с установкой виртуального соединения между клиентом и сервером, то по этому протоколу можно передавать достаточно важные данные.

Целостность и надежность передачи будет осуществлять TCP/IP, a NetBIOS дает только удобную среду для работы с пакетами и программирования сетевых приложений.

1.2. Назначение протокола NetBeui

В 1985 году фирма IBM сделала попытку превратить NetBIOS в полноценный протокол, который умеет не только формировать данные для передачи, но и физически передавить их по сети. Для этого был разработан протокол NetBEUI (NetBIOS Extended User Interface, расширенный пользовательский интерфейс NetBIOS), который был предназначен именно для описания физической части передачи данных протокола NetBIOS.

NetBEUI является не маршрутизируемым протоколом и первый же маршрутизатор не пропустит его. Следовательно, если между двумя компьютерами стоит маршрутизатор и нет другого пути для связи, то им не удастся установить соединение через NetBEUI.

1.3. Принципы работы с NetBIOS

В работе рассматриваются только основные принципы работы с протоколом NetBIOS.

В Windows за работу NetBIOS отвечает библиотека netapi32.dll. Следовательно, при программировании на Delphi необходимо подключить заголовочный файл nb.pas (или nb30.pas).

Протокол NetBIOS достаточно прост, потому что API-протокол состоит только из одной функции NetBIOS, которая имеет множество функций, Описание функции NetBIOS имеет следующий вид:

NetbiosCmd(var NCB: TNCB): Word;.

У этой функции только один параметр структура NCB. Это достаточно сложная структура, в которой и заключена вся работа. С ее помощью указываются команды, которые надо выполнить, а также записываются передаваемые и принимаемые данные.

Описание структуры NCB для Windows выглядит следующим образом:

TNCB=paсked record

Command: byte;

RetCode: byte;

LSN:byte;

Num: byte;

Buf: ^byte;

Length: word;

CallName: TNBName;

Name: TNBName;

RTO: byte;

STO: byte;

PostPrc: TNCBPostProc;

Lana_Num: byte;

Cmd_Cplt: byte;

Reserved: array[0..9] of byte;

Event; THandle;

end;.

Первый параметр (Command) указывает на команду, которую необходимо выполнить. В [1, 3] приведено описание команд протокола NetBIOS.

Второй параметр (RetCode) содержит код результата выполнения команды. Если команда выполняется асинхронно, то NetBIOS не сможет сразу вернуть результат. Поэтому в этом случае сюда будет помещено значение $ff или константа NRC_PENDING, которая означает, что асинхронная команда еще не выполнена. Константы возвращаемых значений можно найти в заголовочном файле, и начинаются они с NRC .

Параметр LSN - номер локального сеанса, который получают после выполнения команд NCB CALL (открыть сессию) и NCB LISTEN (ждать вызова).

Num – номер сетевого имени. Такие номера получаются после вызова команд NCB_ADDNAMЕ (добавить уникальное имя в локальную таблицу) и NCB_ADDGRPNAME (добавить имя группы в локальную таблицу).

Следующий параметр (Buf) - это буфер, в котором нужно размещать данные для отправки в сеть или получить данные, принятые из сети.

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

Параметр CallName – это имя удаленного приложения.

Противоположность предыдущему Name - имя вашей программы.

Далее идет RTO – время ожидания (time-out) при получении данных. Указывается число единиц времени, а одна единица равна 500 миллисекундам. Значит, если указать число 2, то мы попросим ожидать приема ровно 1 секунду.

Противоположностью предыдущему является S'I'O - время ожидания отправки данных по сети. Также указывается в единицах, где одна едини­ца равна 500 миллисекундам.

PostPrc указывает на процедуру, которую необходимо выполнить после выполнения команды в асинхронном режиме. Такая процедура должна иметь вид

ТNCBPostProc = procedure(P: PNCB);.

Это значит, что она обязана иметь один и только один параметр в виде переменной типа PNCB, т. е. она - указатель на структуру TNCB. Lana_Num - номер адаптера, с которым необходимо работать.

Cmd_cplt – это код выполнения команды. Здесь также при асинхронной работе будет стоять значение $ff или константа NRC_PENDING.

Reserved – зарезервированный параметр, должен равняться нулю.

Event - событие. Его удобно использовать при работе и асинхронном режиме, когда необходимо узнать, момент окончания выполнения асинхронной операции.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]