NetBIOS поверх TCP/IP (NBT)

NetBIOS был разработан фирмой Sytek Corporation по заказу IBM в 1983 году. Он включает в себя интерфейс сеансового уровня (NetBIOS interface) и протокол транспортного уровня модели OSI.

Интерфейс NetBIOS представляет собой стандартный интерфейс разработки приложений (API) для обеспечения сетевых операций ввода/вывода и управления нижележащим транспортным протоколом. Приложения, использующие NetBIOS API интерфейс, могут работать только при наличии протокола, допускающего использование такого интерфейса.

NetBIOS также определяет протокол, функционирующий на сеансовом/транспортном уровнях модели OSI. Этот протокол используется протоколами нижележащих уровней, такими как NBFP (NetBEUI) и NetBT для выполнения сетевых запросов ввода/вывода и операций, описанных в стандартном интерфейсном наборе команд NetBIOS. То есть NetBIOS сам не поддерживает выполнение файловых операций. Эта функция возлагается на протоколы нижележащих уровней, а сам NetBIOS обеспечивает только связь с этими протоколами и NetBIOS API интерфейс.

NetBIOS обеспечивает:

  • Регистрацию и проверку сетевых имен
  • Установление и разрыв соединений
  • Cвязь с гарантированной доставкой информации
  • Связь с негарантированной доставкой информации
  • Поддержку управления и мониторина драйвера и сетевой карты

Имена NetBIOS

  • Имя NetBIOS - это уникальный 16-байтный адрес, использующийся для идентификации NetBIOS ресурса в сети.
  • NetBIOS имена используются всеми сетевыми сервисами Windows NT для их идентификации.
  • Все имена NetBIOS состоят из 15 символов имени плюс 16-ый символ, идентифицирующий сервис.
  • Имена NetBIOS не используются TCP/IP
Имя Описание
Computername <00> Регистрируется сервисом Workstation клиента.
Computername <03> Регистрируется сервисом Messenger. Это позволяет хосту принимать сообщения, такие как net send computername.
Username <03> Регистрируется сервисом Messenger. Это позволяет пользователю принимать сообщения, такие как net send username.
Computername <20> Регистрируется сервисом Server. Позволяет хосту получать запросы на соединения от других хостов.
Workgroup or domenname <00> Регистрирует компьютер как член домена или рабочей группы.
Workgroup or domenname <1E> Регистрируется как групповое имя. Используется при выборах Master Browser.
Domenname <1B> Регистрирует компьютер как Master Browser домена.
Domenname <1C> Регистрирует компьютер как контроллер домена.
Workgroup or domenname <1D> Регистрирует локальный броузер домена или рабочей группы.

 

Регистрация имени
(Name registration)
Когда NBT-хост иницализируется, он регистрирует свое NetBIOS имя используя запрос на регистрацию имени. Регистрация может производится широковещательным сообщением или непосредственной пересылкой запроса на WINS сервер.

Если регистрируемое имя уже существует, то хост или WINS сервер информируют хост, приславший запрос, о невозможности регистрации NetBIOS имени. В результате возникает ошибка инициализации имени.

Поиск имени
(Name Discovery)
Поиск NetBIOS имени в локадьной сети производится широковещательным сообщением или непосредственной пересылкой запроса на WINS сервер.

Хост, зарегистрированный с этим именем, или WINS сервер, отвечают на запрос.

Освобождение имени
(Name Release)
Освобождение имени осуществляется когда NetBIOS приложение или сервис заканчивают свою работу.

После освобождения имя становится доступным для регистрации другим хостом.

Сегментирование NetBIOS имен

Идентификатор группы имен NetBIOS (NetBIOS scope ID) представляет собой строку символов (с учетом регистра), добавленную к имени NetBIOS. При этом общая длина имени не должна превышать 16 символов. Ресурсы NetBIOS внутри группы доступны только ее членам и недоступны извне. То есть для того, чтобы два хоста могли установить связь друг с другом по NBT, необходимо совпадение идентификаторов групп у этих хостов.

Пример:

В одной сети можно организовать несколько групп (две в этом примере). Это используется если имеется несколько отделов, которые не должны контактировать друг с другом.

Сегмент 1 Сегмент 2
Клиенты:
  • HOST1.SEG1
  • HOST2.SEG1

Сервер:

  • SERVER.SEG1
Клиенты:
  • HOST1.SEG2
  • HOST2.SEG2

Сервер:

  • SERVER.SEG2
Замечание: Клиенты из первого сегмента не могут передавать данные клиентам второго сегмента и наоборот.

Разрешение NetBIOS имен

Разрешение имен NetBIOS - это процесс определения IP адреса хоста, по известному NetBIOS имени. Microsoft TCP/IP может использовать следующие методы для разрешения NetBIOS имен:

Стандартные методы Описание
NetBIOS name cache Локальный кэш, содержащий NetBIOS имена, которые хост уже разрешил в IP адреса ранее.
NetBIOS Name Server (NBNS) Сервер для обеспечения разрешения имен NetBIOS. Реализация Microsoft называется WINS.
Local broadcast Посылка широковещательного сообщения для определения IP адреса хоста, имеющего данное NetBIOS имя.
Методы Microsoft Описание
LMHOSTS file Локальный текстовый файл, содержащий информацию о разрешении имен NetBIOS.
HOSTS file Локальный текстовый файл, содержащий информацию о разрешении имен хостов в их IP адреса.
Domain Name System (DNS) Разрешение имен использую DNS сервер.

Разрешение имен NetBIOS, используя широковещательное сообщение

  1. Когда пользователь выполняет команду Windows NT, такую как net use, то в кэше NetBIOS ищется IP адрес, соответствубщий NetBIOS имени требуемого хоста. Это сделано для уменьшения числа широковещательных сообщений в сети.
  2. Если NetBIOS имя не было найдено в кэше, то хост отправляет широковещательным сообщением запрос: Хост с NetBIOS именем xxx сообщите свой IP адрес. (В запросе также содержится IP адрес отправителя)
  3. Каждый компьютер, получивший запрос, проверяет свое NetBIOS имя на совпадение с искомым.
  4. Если имя совпадает, то хост отправляет ответ пославшему запрос компьютеру, предварительно используя ARP для определения его MAC адреса.

Не все маршрутизаторы поддерживают передачу широковещательных сообщений. Даже если они могут это делать, то эта возможность обычно выключена, так как широковещательные сообщения увеличивают траффик в сети.

Утилита NBTSTAT

Эта утилита проверяет текущее состояние NetBIOS поверх TCP/IP. Определяет зарегистрированные NetBIOS имена и идентификаторы групп.

Команда Описание
nbstat –n Список зарегистрированных имен
nbstat –c Высвечивает кэш NetBIOS
nbstat -r Перезагружает кэш имен NetBIOS, используя записи файла LMHOSTS с параметром #PRE.

Разрешение имен, используя сервер имен NetBIOS

  1. Когда пользователь выполняет команду Windows NT, такую как net use, то в кэше NetBIOS ищется IP адрес, соответствубщий NetBIOS имени требуемого хоста.
  2. Если NetBIOS имя не было найдено в кэше, то это имя отправляется на сервер (WINS), который сконфигурирован для данного хоста. По умолчанию клиент пытается соединиться с сервером 3 раза, после чего, производится попытка соединиться со вторичным WINS сервером. Если WINS сервер сообщает, что имя не может быть разрешено, то попытка связи со вторичным сервером не производится. Если имя разрешено в IP адрес, то он отправляется непосредственно запосившему его хосту.
  3. После разрешения имени хост использунт ARP для разрешения IP адреса в MAC адрес и устанавливает соединение.

Методы Microsoft для разрешения имен NetBIOS

В Windows NT 4.0 помимо вышеизложенных методов разрешения имен, используются доплнительные: LMHOSTS файл, HOSTS файл и DNS.

  1. NetBIOS кэш
  2. WINS
  3. Широковещательное сообщение
  4. LMHOSTS файл
  5. HOSTS файл (Если фключен флажок Enable DNS for Windows Resolution)
  6. DNS сервер

NBT узлы

B-node
(broadcast)
Использует только широковещательные сообщения для регистрации и разрешения имен. Имеет две основные проблемы:
  1. Широковещательные сообщения сильно загружают сеть
  2. Большинство маршрутизаторов не передают широковещательные сообщения
P-node
(peer-peer)
Используют только сервер имен NetBIOS для регистрации и разрешения имен. Широковещательные сообщения не используются, следовательно сеть не перегружается. Так как запрос адресуется непосредственно серверу имен, то он проходит через маршрутизатор. Основной проблемой является невозможность связи даже в локальной сети при выключенном сервере имен.
M-node
(mixed)
Комбинация B и P узлов. Сначала используется широковещательное сообщение, в случае неудачи - обращение к серверу имен.
H-node
(hybrid)
Комбинация B и P узлов. Сначала идет обращение к WINS серверу, в случае неудачи используется широковещательное сообщение.
Microsoft
enhansed
B-node
Перед использованием широковещательного сообщения проверяется наличие имени в кэше NetBIOS.

Используя ключ registry HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters можно изменить тип узла

По умолчанию используется B-node, если не сконфигурирован WINS сервер. При конфигурации WINS сервера тип узла меняется на H-node.

Использование файла LMHOSTS

LMHOSTS - это локальный текстовый файл который содержит отображение имен NetBIOS в IP адреса.

  • Разрешает NetBIOS имена, используемые в командах Windows NT
  • Каждая строка содержит NetBIOS имя и соответствующий ему IP адрес
  • Каждый компьютер имеет сой собственный LMHOSTS файл, размещенный в каталоге \systemroot\SYSTEM32\DRIVERS\ETC. Образец файла LMHOSTS содержится в также в этом каталоге и называется LMHOSTS.SAM.
  • Используется утилитами Windows NT

Директивы, используемые в файле LMHOSTS

Директива Описание
#PRE Данный адрес будет автоматически загружен в NetBIOS кэш при инициализации протокола. Используйте эту директиву для более быстрого разрешения имен наиболее часто используемых хостов.
#DOM:[domain_name] Содержит имя домена.
#NOFNR Позволяет использовать прямые запросы NetBIOS имени для старой версии LAN manager UNIX systems.
#BEGIN_ALTERNATE
#END_ALTERNATE
Определяет список альтернативных путей к LMHOSTS файлам
#INCLUDE Включение списка имен другого LMHOSTS файла.
#MH Добавление дополнительных значений для компьютера с несколькими сетевыми интерфейсами.