Интерфейс NetBIOS

NetBIOS определяется как Network Basic Input Output System и представляет собой программный интерфейс, предоставляющий методы доступа для формирования и использования сетевых услуг, таких как совместное использование сетевых ресурсов, передача сообщений и т.д.. Многие операционные системы и приложения до сих пор используют его, а компоненты, поддерживающие NetBIOS, встречаются в ОС Windows 95/98/NT/2000/XP.

Важно! Для кассовой системы R-Keeper v6 интерфейс NetBIOS является основным механизмом сетевого взаимодействия.
 

NetBIOS не является протоколом и не детализирует формат передаваемых кадров и других подробностей, являющихся характерной особенностью именно протоколов, поэтому в 1985 году компания IBM создала так называемый NetBIOS Extended User Interface (NetBEUI), который в совокупности с NetBIOS приобрел статус сетевого протокола. Такие понятия, как nbsession, nbname и nbdatagram, а также связанные с ними порты, можно увидеть практически во всех современных системах сетевого мониторинга локальных сетей, хотя в настоящее время применение NetBIOS, как программного интерфейса, весьма ограниченно и фактически его поддержка осуществляется для обратной совместимости с более старыми приложениями.

 

Особенности функционирования NetBIOS

NetBIOS, как программный интерфейс, может взаимодействовать со стеком TCP/IP (который иногда называют протоколом NetBT) и "родным" протоколом сетевого уровня NetBEUI.

Однако здесь есть одна особенность - для того, чтобы два хоста могли взаимодействовать в сетевом окружении, они оба должны выходить на канальный уровень через одинаковые протоколы (или стеки). Если на одной машине установлен протокол NetBEUI, а на втором – только стек TCP/IP, взаимодействие хостов будет невозможно.

Еще одна особенность NetBIOS-приложений –  протокол NetBEUI является немаршрутизируемым протоколом и если между двумя хостами стоит маршрутизатор, взаимодействие в большинстве случаев будет невозможно. Поэтому  при необходимости подключить кассовую станцию через беспроводную точку доступа либо настроить работу мониторинга (или других менеджерских модулей) в сетях с маршрутизаторами, следует использовать стек MS TCP/IP.

Примечание: Использование на кассовой станции стека Novell TCP/IP никак не влияет на механизм сетевого взаимодействия - данный стек используется исключительно для поддержки некоторого сетевого оборудования (например, Ethetnet-тарификаторы, интерфейсные платы для принтеров, различные контроллеры и т.д.) и взаимодействия с некоторыми внешними приложениями (например, RKSHARE).
 

Поддержка NetBIOS также реализована в стеке IPX/SPX - этот протокол использовался для сетевого взаимодейтсвия на станциях RK6100 до появления у производителя NDIS-драйвера и соотв. стека MS TCP/IP.
 

Примечание: Поддержка интерфейса NetBIOS реализована только в Windows-версии стека IPX/SPX, оригинальный стек IPX/SPX его не поддерживает.
 

Каждый ресурс NetBIOS определяется именем. Приложение, предоставляющее ресурс, регистрирует одно или несколько имен, которые оно желает использовать. Пространство имен NetBIOS является "простым", и все имена хостов в нем должны быть уникальны. Длина имени хоста определена 16-ю байтами, при этом собственно имя содержится в первых 15-ти байтах. Если для имени используется меньше чем 15 байт, то оно дополняется пробелами, а 16-й байт используется в служебных целях для обозначения сервиса, имеющегося на хосте.
 

Порты и службы, используемые NetBIOS-ом

 Для протокола "NetBIOS поверх TCP/IP" были зарезервированы следующие порты:

Для протокола TCP

  • Порт 139 - nbsession – сессия NetBIOS
  • Порт 42 - WINS - Windows Internet Name System – служба имен Windows

Для протокола UDP

  • Порт 137 - nbname – запрос имени
  • Порт 138 - nbdatagram – сервисы UDP-датаграмм
  • Порт 42 - Служба имен - WINS

 

Примечание: Служба WINS ответственна за преобразования NetBIOS-имен в IP-адреса. Клиентские запросы на разрешение имен поступают непосредственно на сервер WINS, и если ему удается разрешить имя, то IP-адрес направляется прямо к клиенту, что снижает сетевой трафик. Но даже если сервер WINS недоступен, клиенты по-прежнему могут применять широковещательные NetBIOS-запросы для разрешения имен (что ведет к увеличению нагрузки на локальную сеть). Если в настройках кассовой станции R-Keeper v6 используются NetBIOS-имена (например, для указания имени сервера ПДС) и установлен сетевой протокол MS TCP/IP, могут возникнуть проблемы с разрешением имен - в таком случае нужно запустить службу WINS или использовать локальную базу имен (файл \NET\LMHOSTS).

 

Понятие "номер адаптера" (LANA Number)

Понятие LANA Numbers или "номера адаптеров" является ключевым для сетевого интерфейса NetBIOS.

Слово LANA представляет собой аббревиатуру термина "Local Area Network (LAN) Adapter", а "LANA number" - уникальное число, сопоставляемое c каждой парой "сетевой интерфейс – транспортный протокол".  Допустим, на компьютере имеется две сетевые карты и два протокола, поддерживающие NetBIOS - TCP/IP и NetBEUI.

Тогда номера адаптеров могут быть следующими:
 

Номер
адаптера
Связанная пара
0 TCP/IP - Сетевая карта 1
1 NetBEUI - Сетевая карта 1
2 TCP/IP - Сетевая карта 2
3 NetBEUI - Сетевая карта 2

 

В результате такая связка определяет  "нумерованный маршрут" следования пакетов - на Windows-платформах нулевой номер адаптера может быть интерпретирован как "маршрут по-умолчанию". Следует заметить, что числа LANA вовсе не должны следовать в строгой последовательности - при добавлении в систему нового протокола или сетевого интерфейса, номера адаптеров могут изменится в произвольном порядке.

Важно: В операционных системах Windows NT/2000/XP/7 разрешено использовать NetBIOS поверх другого протокола, отличного от NetBEUI.
 

Использование утилиты lanacfg

 Одна из полезных утилит для получения информации по номерам адаптеров - lanacfg ftp://ftp.ucs.ru/r-keeper/Tools/Lanacfg/lanacfg.rar 

Утилита запускается из командной строки и имеет четыре параметра:

showlanapaths - показать связанные маршруты и описание компонентов для каждого номера адаптера
setlananumber - изменить номер адаптера для связанного маршрута
rewritelanainfo - проверить и записать информацию по номеру адаптера в реестр
showlanadiag - показать диагностическую информацию по номерам адаптеров

Пример выполнения команды lanacfg showlanapaths на компьютере с несколькими установленными сетевыми адаптерами и протоколами TCP/IP и NetBEUI:

Lana: 15
-->NWLink NetBIOS

Lana: 4
-->WINS Client(TCP/IP) Protocol-->Internet Protocol (TCP/IP)-->Bluetooth Device (Personal Area Network)

Lana: 3 -->WINS Client(TCP/IP) Protocol-->Internet Protocol (TCP/IP)-->Realtek RTL8139/8 10x Family Fast Ethernet NIC

Lana: 5
-->WINS Client(TCP/IP) Protocol-->Internet Protocol (TCP/IP)-->1394 Net Adapter 

Lana: 14
-->WINS Client(TCP/IP) Protocol-->Internet Protocol (TCP/IP)-->VirtualBox Host-Only Ethernet Adapter

Lana: 0  -->-->Realtek RTL8139/810x Family Fast Ethernet NIC

Lana: 6
-->-->Bluetooth Device (Personal Area Network)

................

В нашем примере видно, что для сетевой карты "Realtek RTL8139/8 10x Family Fast Ethernet NIC" установлены два маршрута  для интерфейса NetBIOS: маршрут поверх протокола TCP/IP с номером адаптера 3 и маршрут поверх протокола NetBEUI с номером адапетра 0.

Примечание: Если  в описании компонента встречается строка вида "WINS Client(TCP/IP) Protocol-->Internet Protocol (TCP/IP)", это обозначает, что маршрут использует "NetBIOS поверх TCP/IP", иначе маршрут использует "родной" протокол NetBEUI.

 

Для изменения номера адаптера маршрута используется команда lanacfg setlananumber:

lanacfg setlananumber <текущий номер адаптера> <новый номер адаптера> 

Например, чтобы сменить номер адаптера маршрута "NetBIOS поверх TCP/IP" из нашего примера с третьего на нулевой, выполняем команду:

lanacfg setlananumber 3 0

 

Важно: Для использования нового номера адапетра необходимо перезапустить компьютер.

 

Поддержка нескольких номеров адаптеров в кассовом сервере R-Keeper v6

Выделенный кассовый сервер (NT) поддерживает одновременную работу на разных номерах адаптеров, т.е. другими словами, кассовый сервер может одновременно принимать подключения от клиентов как через "родной" протокол NetBEUI, так и через протокол TCP/IP с использованием опции "NetBIOS поверх TCP/IP".

Номера адапетров прописываются в файле LOCAL.DB, через запятую после имени сервера.

Например:

DATABASE\
C:\RK6\DB\
C:\RK6\ENDDAY\
spool
RLSERV,0 

В данном примере кассовый сервер c именем RLSERV будет запущен на нулевом адаптере.

Примечание: Если в LOCAL.DB  после имени сервера не указан номер адаптера, кассовый сервер по-умолчанию использует нулевой адаптер.
 

Для поддержки второго номера адаптера нужно прописать в LOCAL.DB в шестой строке нужное имя сервера и новый номер адаптера через запятую:

DATABASE\
C:\RK6\DB\
C:\RK6\ENDDAY\
spool
RLSERV,0
RMSERV,3

Можно использовать одно и тоже имя кассового сервера на разных номерах адаптера:

DATABASE\
C:\RK6\DB\
C:\RK6\ENDDAY\
spool
RLSERV,0
RLSERV,3

 

Настройка кассового сервера на поддержку нескольких номеров адаптеров позволяет подключаться к нему, используя различные сетевые протоколы (NetBEUI, MS TCP/IP)