СЕТЕВОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Основным элементом сетевого программного обеспечения служит NETBIOS - программное обеспечение, записаное в ПЗУ сетевых адаптеров, устанавливаемое на каждом компьютере сети, и позволяющее реализовать пять уровней протоколов передачи данных (включая сеансовый). NETBIOS'ом также принято называть сам интерфейс между сетевым программным обеспечением и программами персонального компьютера.
Для того, чтобы использовать сеть необходимо:
· задать свое имя в таблице имен адаптера,
· используя таблицу своего адаптера или другого адаптера сети определить имя нужного абонента и установить с ним сеанс связи,
· используя этот сеанс посылать и принимать сообщения.
Команды NETBIOS'а формируются с использованием блока управления сетью - NCB (Network Control Block), который заполняется в соответствии со своей спецификацией. Формат блока NCB приведен в нижеследующей табл.7.1.
Табл.7.1.
Имя поля | Формат и назначение |
NCB_COMMAND | DB 00H; поле команды |
NCB_RETCODE | DB 00H; поле кода возврата |
NCB_LSN | DB 00H; поле локального номера сеанса |
NCB_NUM | DB 00H; номер вашего имени |
NCB_BUFFER@ | DD 00000000H; указатель на адрес буфера сообщения (смещение: сегмент) |
NCB_LENGTH | DW 0000H; длина буфера NCB (в байтах) |
NCB_CALLNAME | DB 16 DUP(0); имя локального или удаленного адаптера; для команды CHAIN SEND первые 2 байта показывают длину второго буфера, а следующие 4 байта - адрес второго буфера |
NCB_NAME | DB 16 DUP(0); имя локального адаптера |
NCB_RTO | DB 00H; значение тайм-аута для приема |
NCB_STO | DB 00H; значение тайм-аута для передачи |
NCB_POST@ | DD 00000000H; указатель на post- подпрограмму (смещение: сегмент) |
NCB_LANA_NUM | DB 00H; номер адаптера: для первого адаптера 00H, для второго - 01H |
NCB_CMD_CPLT | DB 00H; поле состояния команды |
NCB_RESERV | DB 14 DUP(0); резервная область |
Адрес NCB помещают в регистровую пару ES:BX и вызывается программное прерывание INT 5Ch. Результаты выполнения команды помещаются либо в регистр AL, либо в поле кода возврата блока NCB.
Команды NCB делятся на четыре категории:
· общие (используются для включения адаптера в сеть, чтения состояния и управления выполняющимися командами других категорий);
· поддержки имен (позволяют идентифицировать компьютер в сети посредством имени);
· поддержки сеансов (позволяют устанавливать в сети логическое соединение «сеанс», посылать и принимать сообщения, завершать сеансы и читать состояние сеанса, одновременно может выполняться более одной команды, поскольку соединение устанавливается в дуплексном режиме.);
· поддержки дейтаграмм (сообщений для группы абонентов сети).
Перечень команд и их краткое содержание приведены в нижеследующей таблице.
Табл.7.2.
Название команды | Содержание команды |
Общие команды. | |
RESET | Сброс |
CANCEL | Прервать |
ADAPTER STATUS | Получить состояние адаптера |
Поддержка имен. | |
ADD NAME | Добавить имя |
ADD GROUP NAME | Добавить групповое имя |
DELETE NAME | Уничтожить имя |
Поддержка сеансов. | |
CALL | Вызвать |
LISTEN | Ждать вызов |
HANG UP | Закрыть |
SEND | Передать |
CHAIN SEND | Передать последовательность |
RECEIVE | Принять |
RECEIVE ANY. | Принять от любого |
SESSION STATUS. | Получить состояние сеанса |
Поддержка дейтаграмм. | |
SEND DATAGRAM. | Передать дейтаграмму |
SEND BROADCAST DATAGRAM. | Послать общую дейтаграмму |
RECEIVE DATAGRAM. | Принять дейтаграмму |
RECEIVE BROADCAST DATAGRAM. | Принять общую дейтаграмму |
Каждая команда любой категории (за исключением команд RESET и CANCEL) в свою очередь может различаться в зависимости от режима ее использования - "ожидание" или "неожидание". Режим "ожидание" означает, что, когда вы вызываете команду, процессор ждет ее завершения, прежде чем взять следующую. Режим "неожидание" означает, что процессор обращается к следующей команде сразу после запуска предыдущей и что команда прерывается по post-адресу, когда ее выполнение завершается.
Каждая приведенная в табл.7.2. команда имеет определенный номер, который в шестнадцатеричном коде записывается в соответствующее поле блока NCB. После выполнения команды в NCB формируются соответствующие коды возврата результатов.
Например, команда ADAPTER STATUS (получить состояние адаптера) имеет номер 33h, если требуется ожидание ее завершения, и B3h, если ожидание не нужно. Эта команда возвращает информацию о состоянии локального или удаленного адаптера, имя которого указано в поле NCB_CALLNAME. Информация размещается по указанному в NCB_BUFFER@ адресу буфера, а поле длины NCB_LENGTH показывает число байтов в полученном ответе.
Порядок использования функций NETBIOS состоит в следующем:
· создается NCB с именем абонента в поле имени NCB_NAME и кодом команды ADD NAME,
· вызывается NETBIOS через прерывание INT 5Ch,
· посылаются данные абоненту используя сеанс, предварительно создав NCB для команды CALL, и вызывается INT 5Ch,
· проверяется код возврата в регистре AL, когда команда завершается,
· формируются команды передачи или чтения,
· передача (или прием) данных завершается командой HANG UP.
Для передаваемых и принимаемых данных выделяется буфер, параметры которого указываются в NCB.