Вход

Протокол NetBIOS.

Рекомендуемая категория для самостоятельной подготовки:
Реферат*
Код 344653
Дата создания 06 июля 2013
Страниц 19
Мы сможем обработать ваш заказ (!) 22 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
910руб.
КУПИТЬ

Содержание

Содержание

Введение
1. Краткая характеристика протокола NetBIOS
2. Механизм имен в NetBIOS
3. Методы обмена данными
4. Сетевой управляющий блок NCB
Заключение
Список использованной литературы


Введение

Протокол NetBIOS.

Фрагмент работы для ознакомления

Приведем формат вызова функции прерывания INT 2Ah, предназначенной для выполнения команд NETBIOS: На входе:AH =04h.AL=Признак автоматического повтора команды при получении кодов ошибки 09h (недостаточно ресурсов), 12h (создание канала отвергнуто, так как на другом конце не выдана команда NB_Listen), 21h (занят интерфейс): 00h - повторять команду;FFh - не повторять команду. ES:BX=Адрес заполненного блока NCB.На выходе:AH= Код завершения: 00h - команда выполнилась без ошибок;01h - при выполнении команды были ошибки. AL=Если содержимое регистра AH после возврата из прерывания не равно нулю, регистр AL содержит код ошибки. Вы можете использовать описанный выше вызов прерывания INT 2A для вызова NETBIOS из программы, работающей на виртуальной машине Windows for Workgroups версии 3.1. Для вызова команд протокола NETBIOS из пограммы, составленной на языке Си, вы можете воспользоваться обычными средствами вызова программных прерываний, такими, как функция int86x(). 2 Команды NETBIOSПеред выполнением команды ее код должен быть записан в поле Cmd блока NCB. Каждая команда NETBIOS реализована в двух вариантах - с ожиданием и без ожидания. Если вашей программе нечего делать до тех пор, пока выполнение команды NETBIOS не будет полностью завершено, вы можете выбрать вариант с ожиданием. В этом случае после вызова NETBIOS программа вновь получит управление только после завершения выполнения команды. При использовании протоколов IPX/SPX ваша программа должна была сама дожидаться выполнения вызванной функции, выполняя в цикле опрос поля InUse блока ECB. Однако учтите, что, если по каким-либо причинам выполнение команды не может быть завершено, ваша программа "зависнет". Вариант без ожидания похож на вариант использования функций IPX/SPX с программой ESR, вызываемой после завершения операции. Программа, вызвавшая команду NETBIOS без ожидания, получает управление немедленно. Команда будет выполняться в фоновом режиме параллельно с работой вызвавшей ее программы. После того как выполнение команды будет завершено, управление будет передано функции, адрес которой необходимо указать в поле PostRoutine блока NCB. Можно также дожидаться окончания выполнения команды, опрашивая в цикле поле FinalCCode, которое будет содержать значение 0xFF до тех пор, пока команда не будет выполнена. Все команды NETBIOS можно разделить на несколько групп: для работы с именами;для приема и передачи датаграмм; для работы с каналами; для приема и передачи данных через каналы; другие команды. Так как большинство команд NETBIOS реализованы в двух вариантах (с ожиданием и без ожидания), для обозначения варианта с ожиданием мы будем в названии команды после префикса NB_ (от слова NETBIOS) добавлять букву W (от слова wait - ожидание). Например, команда NB_AddName выполняется без ожидания, а команда NB_WAddName - с ожиданием. У команд без ожидания старший бит кода команды установлен в единицу.2.1Работа с именамиNB_WAddName (0x30) - Команда добавляет указанное в поле OurName имя в таблицу имен, расположенную на рабочей станции. Имя должно быть уникальным в сети. Оно не может использоваться на других станциях ни как обычное, ни как групповое. Если длина имени меньше 16 байт, оно должно быть дополнено справа символами пробела. Можно закрыть имя двоичным нулем для совместимости со строками языка Си. Нуль должен находиться в последней позиции имени. После успешного выполнения команды NETBIOS присваивает имени номер и возвращает его в поле LocalSessionNumber блока NCB. Номер имени может потребоваться вам для работы с датаграммами. В процессе добавления имени NETBIOS посылает по сети запрос. Если такое имя уже используется на какой-либо станции, эта станция пришлет ответ. В этом случае команда завершиться с ошибкой и имя добавлено не будет. Процедура добавления имени занимает достаточно много времени. Это связано с необходимостью выполнить опрос всех станций сети. Поэтому вы должны добавлять имена один раз в самом начале работы программы. Поля NCB на входе СодержимоеCmd0x30OurNameДобавляемое имяPostRoutineДальний указатель на POST-программу или нулевое значение, если POST-программа не используется AdapterNumberНомер адаптера; 0 - первый адаптер, 1 - второй Поля NCB на выходе СодержимоеNetworkNameNumberПрисвоенный номер имени CCodeПромежуточный код завершения команды FinalCCodeОкончательный код завершения команСодержимое поля CCode на выходе Значение0x00Нет ошибок0x03Неправильный код команды 0x21Интерфейс занят0x22Выдано слишком много команд 0x23Неправильное значение в поле номера адаптера AdapterNumber 0x40 - 0x4FНеобычное состояние сети (Unusual network condition) 0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения Содержимое поля FinalCCode на выходе Значение0x00Нет ошибок0x03Неправильный код команды 0x09Нет доступных ресурсов 0x0DУказанное команде имя уже используется на этой станции 0x0EПереполнение таблицы имен 0x15Неправильное имя0x16Имя уже используется на одной из рабочих станций в сети 0x19Конфликт имен (внутренняя ошибка NETBIOS) 0x21Интерфейс занят0x22Выдано слишком много команд 0x23Неправильное значение в поле номера адаптера AdapterNumber 0x40 - 0x4FНеобычное состояние сети (Unusual network condition) 0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обесNB_AddName (0xB0)Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xB0. NB_WAddGroupName (0x36)Команда добавляет указанное в поле OurName групповое имя в таблицу имен, расположенную на рабочей станции. Имя не должно использоваться другими станциями в сети как обычное. Однако несколько станций могут использовать одно и тоже имя как групповое. Если длина имени меньше 16 байт, оно должно быть дополнено справа символами пробела. Можно закрыть имя двоичным нулем для совместимости со строками языка Си. Нуль должен находиться в последней позиции имени. После успешного выполнения команды NETBIOS присваивает имени номер и возвращает его в поле LocalSessionNumber блока NCB. Номер имени нужен для работы с датаграммами. Поля NCB на входе СодержимоеCmd0x36OurNameДобавляемое групповое имя PostRoutineДальний указатель на POST-программу или нулевое значение, если POST-программа не используется AdapterNumberНомер адаптера; 0 - первый адаптер, 1 - второй Поля NCB на выходе >СодержимоеNetworkNameNumberПрисвоенный номер имени CCodeПромежуточный код завершения команды FinalCCodeОкончательный код завершения команды Содержимое поля CCode на выходе Значение0x00Нет ошибок0x03Неправильный код команды 0x21Интерфейс занят0x22Выдано слишком много команд 0x23Неправильное значение в поле номера адаптера AdapterNumber 0x40 - 0x4FНеобычное состояние сети (Unusual network condition) 0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения Содержимое поля FinalCCode на выходе Значение0x00Нет ошибок0x03Неправильный код команды 0x09Нет доступных ресурсов 0x0DУказанное команде имя уже используется на этой станции 0x0EПереполнение таблицы имен 0x15Неправильное имя0x16Имя уже используется на одной из рабочих станций в сети 0x19Конфликт имен (внутренняя ошибка NETBIOS) 0x21Интерфейс занят0x22Выдано слишком много команд 0x23Неправильное значение в поле номера адаптера AdapterNumber 0x40 - 0x4FНеобычное состояние сети (Unusual network condition) 0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения NB_AddGroupName (0xB6)Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xB6. NB_WDeleteName (0x31)Команда удаляет имя из таблицы имен рабочей станции, если оно не используется каким-либо каналом. Если же имя используется каналом, то оно помечается как назначенное для удаления и удаляется после закрытия канала. Если вы попытаетесь удалить имя, которое используется каналом, команда завершится с кодом ошибки 0xF. В этом случае перед удалением имени необходимо закрыть канал (см. дальше описание команд для работы с каналами). Как только канал будет закрыт, связанное с ним имя будет автоматически удалено, если перед закрытием канала выполнялась попытка удалить имя. Если имя используется несколькими каналами, его можно удалить только после закрытия всех связанных с ним каналовПоля NCB на входе СодержимоеCmd0x31OurNameУдаляемое имяPostRoutineДальний указатель на POST-программу или нулевое значение, если POST-программа не используется AdapterNumberНомер адаптера; 0 - первый адаптер, 1 - второй Поля NCB на выходе СодержимоеCCodeПромежуточный код завершения команды FinalCCodeОкончательный код завершения команды Содержимое поля CCode на выходе Значение0x00Нет ошибок0x03Неправильный код команды 0x21Интерфейс занят0x22Выдано слишком много команд 0x23Неправильное значение в поле номера адаптера AdapterNumber 0x40 - 0x4FНеобычное состояние сети (Unusual network condition) 0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения Содержимое поля FinalCCode на выходе Значение0x00Нет ошибок0x03Неправильный код команды 0x0FИмя используется каналом. Немедленное удаление имени невозможно, однако оно отмечено как назначенное для удаления и будет удалено после закрытия канала 0x15Неправильное имя0x21Интерфейс занят0x22Выдано слишком много команд 0x23Неправильное значение в поле номера адаптера AdapterNumber 0x40 - 0x4FНеобычное состояние сети (Unusual network condition) 0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения NB_DeleteName (0xB1)Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xB1. Прием и передача данных через каналыNB_WSend (0x14)С помощью этой команды программа может передать блок данных размером от 1 до 65535 байт по созданному ранее каналу. Перед вызовом команды программа должна записать номер канала, по которому будет выполняться передача, в поле LocalSessionNumber блока NCB. Адрес передаваемого блока данных и его длина должны быть записаны в поля Buffer и Size. Для приема данных, передаваемых командой NB_WSend, необходимо использовать команду NB_WReceive (или NB_Receive). Механизм передачи данных с использованием каналов гарантирует не только доставку блоков данных, но и правильную последовательность, в которой эти блоки будут приняты. Если истекло время тайм-аута, заданного при создании канала, команда завершается с ошибкой. Поля NCB на входе СодержимоеCmd0x14LocalSessionNumber Номер используемого канала BufferУказатель на буфер, содержащий передаваемые данные SizeРазмер буфераPostRoutineДальний указатель на POST-программу или нулевое значение, если POST-программа не используется AdapterNumberНомер адаптера; 0 - первый адаптер, 1 - второй Поля NCB на выходе СодержимоеCCodeПромежуточный код завершения команды FinalCCodeОкончательный код завершения команды Содержимое поля CCode на выходе Значение0x00Нет ошибок0x03Неправильный код команды 0x21Интерфейс занят0x22Выдано слишком много команд 0x23Неправильное значение в поле номера адаптера AdapterNumber 0x40 - 0x4FНеобычное состояние сети (Unusual network condition) 0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения Содержимое поля FinalCCode на выходе Значение0x00Нет ошибок0x03Неправильный код команды 0x05Истекло время ожидания 0x08Неправильный номер канала 0x0AКанал закрыт0x0BКоманда отменена0x18Ненормальное закрытие канала 0x21Интерфейс занят0x22Выдано слишком много команд 0x23Неправильное значение в поле номера адаптера AdapterNumber 0x40 - 0x4FНеобычное состояние сети (Unusual network condition) 0x50 - 0xFEСбой сетевого адаптера или другого сетевого аппаратного обеспечения NB_Send (0x94)Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0x94. 3. NB_WSendNoAck (0x71)По своему назначению команда полностью аналогична предыдущей, однако в отличие от нее не выполняет проверку доставки блока данных принимающей стороне. За счет этого она работает немного быстрее. 4. NB_SendNoAck (0xF1)Команда аналогична предыдущей, за исключением того, что она выполняется без ожидания и в поле Cmd необходимо записать значение 0xF1. 5. NB_WChainSend (0x17)Команда работает аналогично команде NB_WSend, однако с ее помощью можно передать сразу два блока данных.

Список литературы

Список использованной литературы

1.Дуглас Камер. Сети TCP/IP, том 1. Принципы, протоколы и структура. - М.: Вильямс, 2007.
2.Новиков Ю.В Кондратенко С.В. Основы локальных сетей. Курс лекций. - М.: Интернет-университет информационных технологий, 2007.
3.Руководство по технологиям объединенных сетей. 4-е изд. - М.: Вильямс, 2007.
4.Сервер Информационных Технологий. Протокол NETBIOS // http://www.eu.edu.ua/e_lib/os/netware/glava_18.htm: 13.06.2011.
5.Филимонов А. Построение мультисервисных сетей Ethernet. - М.: BHV, 2008.
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00492
© Рефератбанк, 2002 - 2024