Лабораторная работа N 6.
Протокол NETBIOS.
Цель работы: Изучение и программирование командного интерфейса протокола NETBIOS.
Исходные данные:
Эмулятор протокола NETBIOS (файл netbios.exe).
Описание программы тестирования команд протокола NETBIOS (файл nettest.doc).
Текст программы тестирования команд протокола NETBIOS (файлы netbios.h,nettest.c).
Программа тестирования команд протокола NETBIOS (файл nettest.exe).
Описание программного интерфейса протокола NETBIOS (файл netprog.doc).
1.Общее описание эмулятора протокола NETBIOS фирмы Novell.
Протокол NETBIOS(Network Basic Input/Output System) - базовая сетевая операционная система ввода/вывода, разработанная IBM. Этот протокол работает на трех уровнях семиуровневой модели OSI: транспортном, сетевом и уровне каналов связи.
Протокол NETBIOS поддерживается в сетях IBM (IBM PC LAN), Novell Netware, Microsoft Windows for Workgroups и других сетях.
Для работы с протоколом NETBIOS в сетях Novell NetWare необходимо запустить специальный эмулятор NETBIOS - программу netbios.exe, входящую в комплект поставки Novell NetWare.
Эмулятор NETBIOS фирмы Novel функционирует на основе протокола IPX(межсетевой обмен пакетами). Это позволяет совмещать NETBIOS с любой из более ста ЛВС поддерживаемых Netware.
Большинство команд NETBIOS могут быть использованы прикладными программами для реализации прямых обменов между рабочими станциями, минуя файловый сервер.
1.1. Имена в NETBIOS.
NETBIOS работает с именами: каждая рабочая станция имеет одно или несколько имен (длина имени - 16 байтов). Таблица этих имен содержится внутри NETBIOS. Дополнительно к этой таблице всегда существует постоянное имя узла. Постоянное имя узла формируется из шести байтов адреса сети на карте сетевого адаптера и дополняется 10 байтами двоичных нулей слева. Постоянное имя узла всегда уникально в сети.
Прикладная программа может просматривать имена в таблице имен, за исключением постоянного имени узла, добавлять или удалять имена. Можно также добавить в таблицу специальное групповое имя; в отличие от простого имени групповое имя может быть неуникальным в сети. Несколько рабочих станций могут использовать некоторое групповое имя в одно и то же время. Количество имен и групповых имен, которое может содержаться в таблице, задается при загрузке драйвера адаптера и обычно равно 16. Прикладные программы используют имена (те, которые добавили сами, или постоянное имя узла) в качестве адресов получателей и отправителей при установке сессии. NETBIOS назначает номер для каждого добавляемого имени. Этот номер имени используется для посылки дейтаграмм.
Поскольку имена всегда имеют длину 16 байт, прикладные программы должны дополнять короткие имена пробелами справа перед тем, как добавлять в таблицу. Нельзя использовать имена, которые начинаются с "*", двоичного нуля(0х00), одного из трех зарезервированных символов (I,B,M).
При регистрации нового имени на рабочей станции NETBIOS ищет его сначала в таблице имен своего адаптера (в локальной таблице имен), а затем проверяет всю сеть на использование этого имени на других рабочих станциях. Имя, если оно не групповое, должно быть уникальным в сети. Для поиска в сети NETBIOS посылает широковещательный адрес объявления имени. Если в течение некоторого периода времени получен кадр ответа том, что на какой-то другой рабочей станции такое имя есть, NETBIOS не регистрирует объявляемое имя в локальной таблице имен. Если ответ не поступил ни от какой другой рабочей станции, то имя регистрируется в локальной таблице имен данной рабочей станции.
Команды NETBIOS Add Name, Add Group Name и Delete Name относятся
к функциям управления именами. Команда Reset удаляет все имена из локальной таблицы имен (постоянное имя узла остается).
1.2. Дейтаграммы NETBIOS.
Дейтаграммы не используют предварительное установление соединения между обменивающимися рабочими станциями и их доставка не гарантируется. В NETBIOS есть возможность послать дейтаграмму для определенного имени, группового имени или всем рабочим станциям в сети. Длина дейтаграммного сообщения не превышает 512 байтов.
Для посылки и получения дейтаграмм используются команды Send Datagram, Send Broadcast Datagram, Receive Datagram, Receive Broadcast Datagram.
1.3. Сессии NETBIOS.
Прикладные программы могут создать сессию между двумя любыми именами в сети. Можно создать несколько сессий между двумя именами, и можно создать сессию между двумя именами на одной рабочей станции. Пока сессия существует, гарантируется доставка и порядок посылаемых по сессии сообщений в пункт назначения.
Чтобы создать сессию, одна рабочая станция дает команду Listen. Эта команда указывает, ожидает ли она вызова от конкретного имени, или от любого имени. Затем другая рабочая станция дает команду Call, определяющую имя того, кто вызывает. Когда каждая команда на соответствующей станции завершается, NETBIOS возвращает номер локальной сессии (LSN) в обе прикладные программы. Номера локальных сессий LSN на каждой рабочей станции не обязательно совпадают. Далее каждая рабочая станция для обменов по сессии использует свой LSN.
Сообщения, посылаемые и получаемые по сессии, могут быть длиной до 65535 байтов. При этом используются команды NETBIOS Send, Chain Send и Receive.
В конце диалога обе станции отдают команду Hang Up для закрытия сессии.
1.4. Другой сервис NETBIOS.
Прикладные программы могут использовать команду NETBIOS Session Status для получения информации обо всех активных сессиях для определенного имени или для всех имен локальной таблицы имен. Команда Adapter Status используется, когда необходимо узнать, например, постоянное имя узла для определенной станции.
1.5. Кадры NETBIOS.
Кадры NETBIOS создаются и управляются только NETBIOS, прикладная программа не имеет с ними дела непосредственно. Для создания кадра NETBIOS использует параметры команд и текущую информацию об именах и сессиях из локальной таблицы имен.
NETBIOS использует несколько типов кадров, наиболее важные из которых описаны ниже.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.