NetBIOS SSN (Server Service Name) — это протокол сетевой службы, который используется в операционной системе Windows для обеспечения совместимости и коммуникации между компьютерами в локальной сети. Он был разработан компанией Microsoft и является одним из основных компонентов протокола NetBIOS.
NetBIOS SSN позволяет компьютерам в сети обмениваться информацией, делать запросы к файловым и принтерским ресурсам, а также осуществлять удаленное управление. Этот протокол работает на прикладном уровне модели OSI, что позволяет другим компьютерам в сети обращаться к ресурсам, предоставляемым сервером NetBIOS SSN.
Взаимодействие с протоколом NetBIOS SSN осуществляется с помощью различных программных средств, таких как файловые менеджеры, команды операционной системы или специализированные утилиты. При работе с NetBIOS SSN важно учитывать безопасность данных, поскольку этот протокол не обеспечивает шифрование информации. Для защиты нужно использовать дополнительные средства, такие как виртуальная частная сеть (VPN) или SSL-шлюзы.
Работа с протоколом NetBIOS SSN требует определенных знаний и навыков. Однако, с помощью правильной настройки и использования соответствующих инструментов, можно значительно упростить управление ресурсами сети и повысить ее эффективность.
Содержание
- Майкрософт Windows NetBIOS SSN
- Определение и функции протокола
- История разработки и использования
- Преимущества использования протокола
NetBIOS SSN предоставляет возможность установления и разрыва сетевых сеансов между компьютерами, а также передачи данных по сети. Он оперирует на уровне транспортного протокола (например, TCP), и может использовать различные протоколы для установления соединений и обмена данными.
Протокол NetBIOS SSN позволяет программам на одном компьютере подключаться к сервисам, предоставляемым на других компьютерах в локальной сети. Это включает в себя доступ к файлам и принтерам, удаленное управление компьютером, обмен сообщениями и другие возможности. NetBIOS SSN использует идентификаторы сессий, которые позволяют нескольким программам одновременно устанавливать связь с одним и тем же удаленным сервисом.
Для работы с NetBIOS SSN можно использовать различные инструменты и программы, предоставляемые операционной системой Windows. Это может быть командная строка Windows (cmd.exe), утилита Telnet для удаленного подключения по протоколу Telnet, Windows PowerShell и другие инструменты. Для программирования на NetBIOS SSN можно использовать различные языки программирования, такие как C#, VB.NET, Python, и другие.
NetBIOS SSN имеет свои особенности и ограничения. Он является устаревшим протоколом и может быть заменен более современными решениями, такими как SMB (Server Message Block) или NFS (Network File System). Однако он все еще широко используется в сетях, основанных на операционных системах Windows, и может быть полезен при работе с легаси-системами.
Определение и функции протокола
Основные функции протокола NetBIOS:
Функция | Описание |
---|---|
Идентификация узлов | NetBIOS позволяет компьютерам в сети обмениваться информацией о своем имени, адресе и других характеристиках. |
Разрешение имён | Протокол NetBIOS предоставляет механизм для преобразования имени компьютера в его сетевой адрес. |
Передача данных | NetBIOS обеспечивает передачу данных между компьютерами в локальной сети. Он может использовать различные виды протоколов транспортного уровня, такие как TCP/IP или IPX/SPX. |
Управление соединениями | Протокол NetBIOS позволяет установить, поддержать и разорвать соединение между двумя компьютерами в сети. |
Управление ресурсами | NetBIOS предоставляет возможность удаленного доступа к файлам, принтерам и другим ресурсам на других компьютерах в сети. |
Протокол NetBIOS был широко использован в прошлом, особенно в сетях на основе операционной системы Windows. Однако с развитием сетевых технологий он был заменен более современными протоколами, такими как TCP/IP. Тем не менее, NetBIOS по-прежнему поддерживается и может использоваться в некоторых сетевых приложениях и операционных системах.
История разработки и использования
В конце 1990-х годов компания Microsoft выпустила операционную систему Windows 95, в которую был добавлен собственный протокол NetBIOS, известный как NetBIOS-enhanced User Interface (NetBEUI). Он предоставлял более продвинутые функции и улучшения по сравнению с оригинальным протоколом NetBIOS.
Однако, с появлением Windows NT и последующих версий Windows, Microsoft стал активно предлагать использовать протокол TCP/IP вместо NetBIOS. TCP/IP стал стандартом для сетевых коммуникаций и обеспечивал более надежную и гибкую передачу данных.
С течением времени протокол NetBIOS стал менее популярным, поскольку TCP/IP набрал широкое распространение в сетях. Однако, он все ещё используется некоторыми устройствами и программным обеспечением, которые не поддерживают TCP/IP.
Преимущества использования протокола
Протокол NetBIOS SSN (NetBIOS Session Service) обладает рядом преимуществ, которые делают его предпочтительным для использования в сетях на базе операционной системы Microsoft Windows:
1. | Простота настройки и использования |
2. | Межплатформенная совместимость |
3. | Высокая скорость передачи данных |
4. | Поддержка широкого спектра приложений |
5. | Надежная работа в локальных сетях |
6. | Безопасное соединение |
Благодаря простоте использования, протокол NetBIOS SSN позволяет быстро и легко настроить сетевое соединение между компьютерами и осуществлять передачу данных. Он предлагает простой интерфейс и минимальные требования к настройке, что делает его идеальным решением для пользователей без глубоких знаний в области сетевых протоколов.
Протокол NetBIOS SSN также обладает межплатформенной совместимостью, что означает возможность использования его на различных операционных системах, таких как Windows, Linux и других. Это позволяет пользователям свободно обмениваться данными между компьютерами и операционными системами без каких-либо проблем.
Высокая скорость передачи данных – еще одно преимущество протокола NetBIOS SSN. Он обеспечивает быструю и эффективную передачу данных внутри сети, что является важным фактором для пользователей, осуществляющих работу с большим объемом информации.
Протокол NetBIOS SSN поддерживает широкий спектр приложений, включая файловые и принтерные службы, а также удаленный доступ к компьютерам в локальной сети. Благодаря этому, пользователи могут не только передавать данные, но и использовать разнообразные функции и возможности, предоставляемые протоколом.
Надежность работы – еще одно преимущество протокола NetBIOS SSN. Он обеспечивает стабильное и безопасное соединение в локальной сети, что позволяет пользователям с уверенностью совершать операции передачи данных.
Безопасное соединение – еще одно преимущество протокола NetBIOS SSN. Встроенные механизмы защиты данных позволяют обезопасить их передачу, предотвращая несанкционированный доступ и использование.
Во время установки операционной системы Windows пользователем задаётся имя компьютера, к которому в дальнейшем будут обращаться программы, устройства, соединённые локальной сетью, веб-сервер, FTP и другие сетевые службы. Протокол NetBIOS крайне важен для работы системы, поэтому рекомендуется знать о его устройстве и выполняемых функциях, чтобы лучше понимать, как происходит обмен данными между процессами, приложениями или компьютерами.
NetBIOS – устройство и принцип работы
Windows использует данный интерфейс в качестве основной системы сетевого ввода-вывода, а также для возможности установки общего доступа к сетевым устройствам и файлам. Пакеты данных передаются по локальной сети через сеансы эталонной модели взаимодействия открытых систем, и через сетевые протоколы приложения могут обмениваться информацией по ним. Простыми словами, данная система является сетевым протоколом, предназначенным для работы в локальных сетях и обмена сведениями, значениями и другими данными внутри них. Начиная с Windows 2000 модуль поддержки NetBIOS через TCP/IP носит название NetBT.
По протоколу программы находят нужные им ресурсы, передают запросы на получение информации либо отдают собственные данные. Сперва открывается сессия с NetBIOS запросом, задаётся IP-адрес, система определяет подходящий порт для проведения конкретного типа операции (служба имён использует порт 137, дейтаграмм – 138, а сессий – 139), происходит обмен пакетами данных, когда поток прекращается – сессия закрывается. Одно сообщение может занимать до 131071 байт или 131 КБ. В одно время может быть установлено несколько уникальных сессий. NetBIOS адрес имеет следующий вид: IP.**.**.**.**, где под звёздочками – IP-адрес, а под IP – тип осуществляемой операции. Протокол использует собственные команды для проведения обмена данными (send, receive, call, remote program load, session status, reset, hang up, cancel и другие), а также особые примитивы для взаимодействия с дейтаграммами (receive datagram, send datagram, receive broadcast datagram, send broadcast datagram). Крайние узлы NetBIOS подразделяются на следующие типы:
- Широковещательные b-узлы.
- P-узлы точка-точка.
- M-узлы смешанного типа.
В зависимости от IP-адреса, используется конкретный вид запроса, к примеру, для осуществления передачи данных узлами P- и M- будет использован NBNS сервер имён и NBDD сервер распределения дейтаграмм.
Службы NetBIOS
Для работы протокол использует NetBIOS-NS (служба имён), NetBIOS-SSN (сеансовая служба) и NetBIOS-DGM (служба рассылки дейтограмм). NS выполняет функцию регистрации и разрешения имён, DGM подходит для передачи данных без установки соединения, а последняя служба, SSN — передаёт пакеты с установлением соединения.
Протокол обеспечивает команды и поддержку следующих служб, предоставляя им доступ к сеансам эталонной модели взаимодействия открытых систем OSI:
- Протокол и адаптер мониторинга и управления;
- Установление и завершение сессии;
- Ненадёжная передача данных без установки соединения;
- Регистрация и проверка имени сети;
- Надёжная ориентированная на соединение передача данных сеанса.
Сперва служба имён осуществляет регистрацию имени приложения в NetBIOS, перед тем как запустить сеанс либо начать распространение дейтаграмм. Используются примитивы «add name» (регистрация имени), «add group name» (запись имени группы NetBIOS), «delete name» (удаление регистрации имени приложения либо группы), «find name» (поиск имени NetBIOS в сети).
Служба рассылки дейтаграмм работает на порту UDP 138 и отвечает за режим обмена без установки соединения. С помощью примитивов «send datagram» (отправка дейтаграммы на удалённое имя), «receive datagram» (переход в режим ожидания получения пакета), «send broadcast datagram» (отправка датаграммы всем зарегистрированным именам из сети NetBIOS), а также «receive broadcast datagram» (ожидание получения пакета данных из сессии отправки широковещательной дейтаграммы) – происходит обмен информацией без установленного соединения.
В сеансовом режиме используется SSN служба (TCP порт 139), которая позволяет установить соединение между двумя компьютерами и обмениваться сообщениями (охват сразу нескольких пакетов), а также отвечающая за обеспечение диагностики и исправления ошибок. Сеанс происходит с использованием данных типов примитивов:
- Call – запуск сеанса;
- Send – передача пакета на другой компьютер;
- Receive – переход в состояние запроса пакета от компьютера на другом конце сеанса;
- Hang up – завершение сеанса;
- Listen – прослушивание попыток запуска сеанса;
- Send No Ack – передача данных без запроса подтверждения на получение от второго участника сессии.
Компьютер, инициирующий сеанс, должен отправить запрос Open, после чего должен запросить запуск сеанса с помощью Call. Принимающий отвечает на каждый передаваемый пакет положительно (ACK), либо отрицательно (NAK). Чтобы сессия была закрыта, компьютер, который не является инициирующим должен отправить запрос Hang Up на завершение и получить подтверждение от инициатора.
Запуск и отключение службы NetworkBIOS
Перед тем, как прекратить работу NetBIOS через TCP/IP, помните, что служба является относительно важной для компьютера и после проведения данной операции не сможет правильно функционировать возможность доступа к сетевому компьютеру по NetBIOS-имени. Если персональный компьютер подключен к сети, не рекомендуется отключать данную службу, чтобы не возникало ошибок.
Пользователи задаются вопросом, как узнать статус службы в Windows 10 (и других выпусках). Для того чтобы это сделать, необходимо вызвать системное приложение «Выполнить» при помощи комбинации Win + R, затем ввести в поле «Запустить» значение «services.msc» и нажать ОК. Для удобного поиска можете отсортировать список в алфавитном порядке, щёлкнув на колонку «Имя». Здесь необходимо найти интересующую службу, в нашем случае это «Модуль поддержки NetBIOS» через TCP/IP». Колонка «Состояние» отображает, запущена ли в текущий момент служба или нет. По умолчанию данный модуль находится в запущенном состоянии, если компьютер подключен к сети.
Чтобы отключить NetBIOS, необходимо щёлкнуть правой кнопкой мыши по соответствующему элементу в списке и выбрать пункт «Свойства» в контекстном меню. В настройках службы NetBIOS следует нажать на кнопку «Остановить», а затем установить тип запуска «Отключена» чуть выше (если нужно запустить, то должно быть выбрано «Вручную» либо «Автоматически). Примените изменения, после чего нажмите «ОК и закройте приложение «Службы». Теперь запустите редактор реестра, воспользовавшись комбинацией Win + R и запросив запуск «regedit.exe». Перейдите в каталог «HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lmhosts» и измените значение атрибута «Start» на «4» (2 – автоматически, 3 – вручную и 4 – отключить, выбирайте в соответствии с желаемым действием) и нажмите ОК, затем нажмите кнопку F5 на клавиатуре. Перезагрузите компьютер и удостоверьтесь, что NetBIOS больше не запускается автоматически.
Надеемся, вы разобрались с принципом работы этого важного сетевого протокола, ранее имевшего статус первой необходимости на каждом компьютере (сейчас это время прошло, теперь используется исключительно соединение Service Message Block или SMB). Если остались какие-либо вопросы, связанные с данной темой, либо возникли проблемы во время отключения сетевого компонента Windows – записывайте свои ответы в комментарии. Не забывайте и про рейтинг, оцените статью с помощью специальной формы.
Name: | netbios-ssn |
---|---|
Purpose: | NETBIOS Session Service |
Description: | TCP NetBIOS connections are made over this port, usually with Windows machines but also with any other system running Samba (SMB). These TCP connections form “NetBIOS sessions” to support connection oriented file sharing activities. |
Related Ports: | 137, 138, 445 |
What is Microsoft Windows NetBIOS SSN?
NetBIOS is a service which allows communication between applications such as a printer or other computer in Ethernet or token ring network via NetBIOS name. NetBIOS name is 16 digits long character assign to a computer in the workgroup by WINS for name resolution of an IP address into NETBIOS name.
Is NetBIOS insecure?
They are insecure and should not be used under any circumstances. Disable NetBIOS over TCP/IP.
What uses NetBIOS?
NetBIOS stands for Network Basic Input Output System. It Allows computer communication over a LAN and allows them to share files and printers. NetBIOS names are used to identify network devices over TCP/IP (Windows).
What is the difference between NetBIOS and DNS?
As has been shown above the main difference between DNS and NetBIOS is the availability of DNS being only available when there is a connection to the internet and the name is registered in the computer. NetBIOS on the other hand is always available to the machines connecting directly to it.
What service is NetBIOS SSN?
NetBIOS provides three distinct services: Name service (NetBIOS-NS) for name registration and resolution. Datagram distribution service (NetBIOS-DGM) for connectionless communication. Session service (NetBIOS-SSN) for connection-oriented communication.
Should I disable port 135?
Disabling TCP port 135 will NOT affect Local DCOM/Raw RPC server component because they do not need network. Disabling TCP port 135 will only affect some client machine which directly use DCOM remote activation (i.e. VB CreateObject(“Excel.
Should I close port 445?
We also recommend blocking port 445 on internal firewalls to segment your network – this will prevent internal spreading of the ransomware. Note that blocking TCP 445 will prevent file and printer sharing – if this is required for business, you may need to leave the port open on some internal firewalls.
What will happen if I disable NetBIOS?
One of the unexpected consequences of disabling NetBIOS completely on your network is how this affects trusts between forests. So if you disable NETBIOS on your domain controllers, you won’t be able to establish a forest trust between two Windows Server 2003 forests.
How do I disable NetBIOS SSN?
Navigate to Administrative Tools > Services, right-click TCP/IP NETBIOS Helper, and click Stop. Right-click TCP/IP NETBIOS Helper, click Properties, and in the Startup type list, select Disabled. Click OK.
Is it safe to disable NetBIOS?
There are many security concerns with NetBIOS; and disabling its support on your network and devices is strongly recommended. Disabling the use and support of NetBIOS can help to mitigate an attacker’s ability to: poison and spoof responses, obtain a user’s hashed credentials, inspect web traffic, etc.
Why are ports 137 and 139 blocked for NetBIOS?
Hence by blocking port 137 and 139 admin has added a security level that will prevent NetBIOS session service as well as NetBIOS name service for NetBIOS enumeration. Mainly in many organization, port series from 135 to 139 are blocked in the network for security reasons, therefore port 445 is used for sharing data in the network.
What is the purpose of the NetBIOS protocol?
NetBIOS serves as an abstraction layer in this arrangement. The NetBIOS protocol is used to communicate a considerable amount of information about the status of machines within the network, in particular the nature of processes and sessions running at this layer.
How to disable NetBIOS on a specific client?
You can disable NetBIOS manually on the specific client. You can disable NetBIOS for the specific network adapter in the registry as well. Each network adapter has a separate branch in HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\NetBT\\Parameters\\Interfaces containing its TCPIP_GUID.
Which is the scanner module in NetBIOS Metasploit?
Scanner NetBIOS Auxiliary Modules. nbname. The nbname auxiliary module scans a range of hosts and determines their hostnames via NetBIOS. To configure the module, we set the RHOSTS and THREADS values then let it run. nbname_probe. Note: The nbname_probe module is no longer in the Metasploit framework.
NetBIOS (Network Basic Input/Output System, Сетевая Базовая Система Ввода/Вывода) — это интерфейс для работы в локальных сетях, разработанный фирмой Sytek для компании IBM в 1983 году. Как гласит RFC1001: NetBIOS defines a software interface not a protocol. There is no «official» NetBIOS service standard. И всё же NetBIOS, по моему скромному мнению, и интерфейс и протокол, поэтому, с вашего позволения, назовем его стандартом (не смотря на то, что официально он так и не был полностью стандартизован). Довольно часто NetBIOS называют сетевым протоколом, но это не совсем корректно, поскольку NetBIOS реализован в Windows сразу в нескольких компонентах операционной системы :: в виде интерфейса в библиотеках пользовательского режима и режима ядра, и в виде модуля в стеке сетевого протокола. Интерфейс NetBIOS представляет из себя стандартный набор для разработки приложений (API), протокол NetBIOS функционирует на транспортном/сеансовом уровне стека и используется для передачи данных, управления сеансом и прочих нужд.
Для чего же в своё время потребовался NetBIOS? Для осуществления возможности взаимодействия станций в небольших (локальных) сетях. Что включает в себя возможность взаимодействия по сети? Это назначение станции сетевого имени, по которому она будет доступна в сети, это возможность найти станцию в сети по её имени, возможность соединиться с ресурсами станции и начать с обмениваться с ними данными. Это и возможность получить список сетевых станций, которые подключены к сегменту сети и многое другое, что может быть определено термином «сетевое взаимодействие».
Особенностью NetBIOS является возможность работы «поверх» основных сетевых протоколов, таких как IPX
, NetBEUI
и TCP/IP
. В своё время реализация протокола NetBIOS в Windows была существенно переработана и ориентирована на использование протокола TCP/IP (как наиболее перспективного), получив новое название “NetBIOS over TCP/IP” (NetBIOS через TCP/IP). NetBIOS через TCP/IP имеет псевдоним NetBT
(NBT). NetBIOS через TCP/IP представляет собой промежуточный уровень между NetBIOS и TCP/IP и создан для того, чтобы приложения на базе NetBIOS могли работать в сетях TCP/IP, то есть предназначен для отображения имен NetBIOS в IP-адреса и, наоборот. Как мы уже упоминали, NetBIOS разрабатывался на заре становления сетевых технологий, и с того времени часто модифицировался, однако параллельно с ним создавались и другие стандарты сетевого взаимодействия, которые существенно опережали NetBIOS по функционалу. На данный момент NetBIOS считается устаревшим стандартом и не рекомендуется к использованию, заместо него, в части организации передачи данных по сети, Microsoft предлагает использовать сокеты (windows sockets), почтовые каналы (mailslots), именованные каналы (named pipes). Для оставшегося функционала, то есть для сервисных целей разработан новый протокол LLMNR (через PNRP):
NetBIOS через TCPIP не поддерживает IPv6. Поэтому для целей организации взаимодействия в локальном сетевом сегменте без участия опорных серверов (DNS/WINS) с использованием IPv4/IPv6 разработан протокол LLMNR/PNRP.
Однако, не смотря на устаревание NetBIOS, поддержка его сохранена и по сей день, код NetBIOS через TCP/IP всё еще присутствует в составе последних версий Windows. Причиной столь огромной популярности стандарта является тот факт, что до определенного времени NetBIOS оставался основным интерфейсом программирования сетевых приложений, и с использованием функций NetBIOS было написано огромное количество разнообразного программного обеспечения.
NetBT является неотъемлемой частью сетевого стека TCP/IP ОС Windows и инсталлируется вместе с протоколом TCP/IP. Части функционала NetBT встречаются в коде библиотек, переменных окружения (%COMPUTERNAME%, %USERDOMAIN%), коде некоторых современных антивирусных продуктов, почтовых серверов, баз данных. NetBIOS до сих пор используется в алгоритме добавления рабочей станции в домен, в процедурах работы с сетевым окружением, подключения сетевых дисков. Об исключительном значении протокола NetBIOS через TCP/IP говорит уже и тот факт, что штатными средствами самой ОС протокол NetBIOS может быть только отключен, но никак не удален. Удаление же его возможно только вместе с удалением протокола TCP/IP.
До определенного времени считалось актуальным высказывание “Сеть Windows не живет без NetBIOS”, но начиная с версии Windows 2000, стало возможным избавиться от использования соединений на основе NetBIOS через TCP/IP и перейти исключительно на соединения по протоколу SMB (Server Message Block). Подобные соединения еще называются TCP/IP Direct Hosting (или DirectSMB). В соединениях на основе SMB отсутствует начальная стадия установки сессии TCP под названием “NetBIOS session setup” и используется единственный порт TCP/445.
SMB — это простой протокол удаленной работы с ресурсами (дисками, устройствами) компьютера. Удивительно, но SMB долгое время довольно тесно взаимодействовал с NetBIOS в части именования и разрешения имен, а так же требовал наличия установленной сессии NetBIOS для взаимодействия между узлами (работал поверх NetBIOS). Теперь же SMB представляет собой самостоятельный протокол, получивший дальнейшее развитие в виде стандарта под названием CIFS, полностью независимого от NetBIOS.
Службы NetBIOS
Далее не будет лишним посмотреть, какие же сетевые порты используются сервисами NetBIOS:
Номер порта | Назначение |
---|---|
137/TCP,UDP |
|
138/TCP,UDP |
|
139/TCP, UDP |
|
Подобная структура отражает требование RFC 1001, RFC 1002, регламентирующее наличие трех базовых сервисов, которые реализуют эмуляцию NetBIOS в системе Windows.
Реализация NetBIOS
NetBIOS через TCPIP реализован в качестве драйвера уровня ядра netbt.sys, поддерживающего специализированный интерфейс TDI
(общий интерфейс для взаимодействия с драйверами, который позволяет сервисам взаимодействовать с транспортными протоколами). Все сервисы, которые работают с NetBT (рабочая станция, сервер, браузер, сетевой вход в систему) используют TDI напрямую. Пользовательские приложения используют стандартный WinAPI (функции, вызовы), поддерживаемый библиотекой netapi32.dll, которая, в свою очередь, является простой «заглушкой» и перенаправляет вызовы к функциям netbios.dll. Функции библиотеки netbios.dll передают запросы к драйверу уровня ядра под названием NetBIOS-эмулятор (%SystemRoot%\System32\Drivers\netbios.sys), который транслирует команды NetBIOS, переданные приложением, в команды TDI-интерфейса.
Принципы работы NetBIOS
Собственно, как же работает NetBIOS? Я попытаюсь дать, пока что, собственное объяснение принципов работы стандарта. Все мы понимаем, что для того, чтобы станции могли взаимодействовать по сети, они должны подчиняться определенным правилам, выполнять предписанные действия на различных этапах работы. Этими этапами являются: заявление о себе (регистрация), попытка взаимодействия (обнаружение имен, установление сеанса, управление сеансом), отключение себя (освобождение имени). Поэтому, все узлы, использующие NetBIOS через TCP/IP, применяют регистрацию, обнаружение и освобождение имен, а так же многие другие методы, предоставляемые стандартом. Давайте рассмотрим их детальнее:
- Регистрация имен. Начиная работу, узел NetBIOS пытается заявить о себе в сети, другими словами — сказать «Я есть узел такой то, с таким то именем». Регистрация имени NetBIOS происходит при помощи широковещательного или направленного только к серверу имен NetBIOS (WINS-сервер) запроса. Если какой-либо узел пробует зарегистрировать уже существующее в сети имя NetBIOS, то либо узел с данным именем, либо сервер имен NetBIOS (WINS-сервер) посылает отказ в регистрации имени, и узел, инициировавший регистрацию, получает в качестве ответа сообщение об ошибке.
- Обнаружение имен. Когда узел уже зарегистрировался, работает в сети, но вдруг хочет связаться с другим узлом, он должен узнать IP-адрес этого узла. Для этого, узел-инициатор посылает запрос на определение имени, содержащий искомое NetBIOS имя. Для запроса используется широковещательный пакет или адресный запрос серверу имен NetBIOS (WINS). Узел, которому принадлежит искомое имя, или WINS-сервер отправляют обратно положительный/отрицательный ответ об определении имени. В результате инициатор получает информацию об IP-адресе целевого узла.
- Освобождение имен. Освобождение имени происходит, если станция, приложение или служба NetBIOS прекращает работу. К примеру, если станция отключается некорректно, то она перестает отвечать на запросы, и другие станции через некоторое время прекращают попытки связаться с ней. Если в сети используется сервер имен NetBIOS, то перед корректным выключением станция посылает ему запрос на удаление информации о всех ресурсах, которые она поддерживала. В таком случае говорят, что имя NetBIOS освобождено, и доступно для использования другими узлами.
- Запуск/завершение сеанса. Вероятно, мы пытались обнаружить сетевое имя не просто так, а с какой-то целью. А что если мы хотим обменяться данными: получить/передать файлы? Для этого нам необходимо установить сеанс связи с целевой станцией.
- Надежная передача данных сеанса. После установления надежного сеанса связи с использованием транспортного протокола TCP, мы начинаем обмен данными. Например, передачу файлов.
- Ненадежная передача данных сеанса. После запроса на разрешение имени, мы начинаем передачу информации с помощью транспортного протокола UDP. Например, поиск имени.
- Возможность мониторинга и диагностики. Позволяет запрашивать статус удаленных и локальных ресурсов.
Разрешение имен в NetBIOS изначально было основано на широковещательных запросах (станция заявляет о себе каждые 60 секунд). Собственно, с самого начала NetBIOS и разрабатывался таким образом, чтобы использовать только широковещательные сообщения для локализации устройств в сети. Это и послужило одной из причин сокращения популярности стандарта, поскольку широковещательные запросы существенно увеличивают объем трафика в сети и являются немаршрутизируемыми. Только значительно позже, для устранения проблем широковещательного шторма и отсутствия маршрутизации запросов, решено было создать выделенный узел, который бы принимал запросы и давал ответы об именах в сети — WINS-сервер.
Для того, чтобы лучше понять логику работы NetBIOS через TCP/IP, давайте немного отступим от основной линии рассуждений, и рассмотрим по-отдельности некоторые сущности стандарта.
Имя NetBIOS
Одной из основных целей разработки NetBIOS являлось создание простого интерфейса, который давал бы возможность пользователям назначать станциям символьные имена вида MyComputer
. Очевидно, что без подобных имен нам сложно обойтись, поскольку именно легкие имена позволяют человеку «узнать» (однозначно идентифицировать) ресурс, к которому он хочет обратиться по сети. Программам то всё-равно, вместо имен они могут использовать любые идентификаторы, однако человеку удобнее работать именно с фонетическими, понятными и легко запоминающимися маркерами — именами. В качестве имени NetBIOS используется простое одноранговое (“плоское”) имя, без какой-либо иерархической структуры (в противоположность DNS). Подобная простота и отсутствие иерархии имени имеют и оборотную сторону — имена должны быть уникальными.
Имя NetBIOS имеет длину 16 байт.
Первые 15 — собственно имя, 16й — тип ресурса или суффикс (значение в диапазоне 00-FF, шестнадцатеричное представление). NetBIOS имя и имя компьютера (hostname) совпадают по первым 15 символам. Хранится это имя в параметре реестра с именем hostname
, который располагается в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.
С развитием сетевых технологий логическая структура сетей усложнялась, и помимо станций появились такие понятия как «рабочая группа» и «домен». Пришло осознание того, что ресурсы бывают разнотипными, а имя может быть присвоено не только станции. Опираясь на новые данные, было введено понятие «тип ресурса», который предназначался для логического разделения ресурсов по назначению, это позволило присваивать одно и то же имя нескольким ресурсам одновременно.
NetBIOS имя закрепляется не за станцией, как многие привыкли думать, а за ресурсом и только за ним.
Ресурсы динамически регистрируются сначала в операционной системе (в которой ресурс и создается), а затем [при помощи оповещений] распространяются по сети, которой принадлежит станция. Регистрация ресурса происходит в тот момент, когда в операционной системе стартует сервис (читать: приложение), использующий NetBIOS, либо авторизуется пользователь.
Типы ресурсов стандартизованы по классам и имеют следующие значения:
- Уникальное (Unique, U) — к этому имени может быть привязан только один адрес IP;
- Групповое (Group, G) — к этому имени не привязан единственный адрес, имя может содержать множественные IP-адреса; На запрос WINS-клиента об адресе всегда возвращается limited broadcast address 255.255.255.255;
- Группа Интернет (Internet Group, Special Group, I) — к этому имени может быть привязано до 25 адресов; для каждого адреса хранится свой TTL. Используется для управления именами домена в WinNT;
- Доменное имя (Domain Name, D) — к этому имени может быть привязано множество адресов;
Поскольку NetBIOS не использует номера портов, как это делает TCP/IP, адресное пространство имен должно быть способно поддерживать множество имен для каждой системы. К примеру, если на одной станции реализованы файловый сервер, служба Exchange и сервер удаленного доступа, то каждый из этих сервисов должен иметь отличное от других имя, однозначно определяющее сам сервис. Для этой цели авторы NetBIOS придумали понятие суффикса, который фактически является аналогом порта в TCP/IP. Как было указано выше, он занимает последний, 16й байт в имени и однозначно идентифицирует сервис.
Полный перечень типов общих ресурсов NetBIOS
У имен NetBIOS имеется следующий нюанс — все имена длиной менее 15 символов дополняются пробелами (код символа 20
в шестнадцатеричном представлении), а в некоторых случаях символами BE
либо BF
. Поскольку к работе над NetBIOS подключались многие разработчики, то и типов общих ресурсов существует великое множество, однако в таблице я привожу только те типы, которые используются Microsoft.
Уникальное имя (Unique name) | Суффикс | Описание |
---|---|---|
COMPUTERNAME | <00> | Регистрируется сервисом «Рабочая станция» (Workstation). Это NetBIOS-имя станции. Передается в качестве имени источника в запросе на установку NBT-сессии. Позволяет хосту подключаться к сетевым ресурсам. |
COMPUTERNAME | <01> | Регистрируется сервисом Messenger. Не во всех версиях Windows. Передается в качестве имени источника в запросе на установку NBT-сессии сервисом Messenger. |
COMPUTERNAME | <03> | Регистрируется сервисом Messenger. Это имя используется при обмене сообщениями (WinPopup) между хостами. Для этого используется SMB протокол. |
USERNAME | <03> | Регистрируется сервисом Messenger. Используется так же, как и описанное выше правило для COMPUTERNAME<03>, однако адресатом, вероятно, является пользователь. |
COMPUTERNAME | <06> | Регистрируется сервисом RAS Server. |
COMPUTERNAME | <1F> | Регистрируется сервисом NetDDE |
COMPUTERNAME | <20> | Регистрируется сервисом «Сервер» (Server). Позволяет хосту получать запросы на соединения от других узлов с целью подключения к ресурсам станции. Используется SMB протокол. |
COMPUTERNAME | <21> | Регистрируется сервисом RAS Client. |
COMPUTERNAME | <22> | Регистрируется сервисом Exchange Interchange. |
COMPUTERNAME | <23> | Регистрируется сервисом Exchange Store. |
COMPUTERNAME | <24> | Регистрируется сервисом Exchange Directory. |
COMPUTERNAME | <2B> | Регистрируется сервисом Lotus Notes Server. |
COMPUTERNAME | <30> | Регистрируется сервисом Modem Sharing Server. |
COMPUTERNAME | <31> | Регистрируется сервисом Modem Sharing Client. |
COMPUTERNAME | <42> | Регистрируется McAfee Antivirus. |
COMPUTERNAME | <43> | Регистрируется сервисом SMS Client Remote Control. |
COMPUTERNAME | <44> | Регистрируется сервисом SMS Admin Remote Control Tool. |
COMPUTERNAME | <45> | Регистрируется сервисом SMS Client Remote Chat. |
COMPUTERNAME | <46> | Регистрируется сервисом SMS Client Remote Transfer. |
COMPUTERNAME | <4C> | Регистрируется сервисом DEC Pathworks TCPIP Service. |
COMPUTERNAME | <52> | Регистрируется сервисом DEC Pathworks TCPIP Service. |
COMPUTERNAME | <6A> | Регистрируется сервисом Microsoft Exchange IMC. |
COMPUTERNAME | <87> | Регистрируется сервисом Microsoft Exchange MTA. |
COMPUTERNAME | <BE> | Агент Network Monitor. Microsoft’s Network Monitor (NetMon). |
COMPUTERNAME | <BF> | Приложение Network Monitor Client. GUI для Network Monitor (NetMon). |
DOMAINNAME/WORKGROUPNAME | <1B> | Регистрирует станцию как Domain Master Browser. Регистрация суффикса 1B отличает PDC от остальных контроллеров домена. |
DOMAINNAME | <1D> | Регистрирует станцию как Master Browser (зачастую именуется как Local Master Browser). Имя уникально для локального сегмента сети. |
Групповое имя (Group name) | Суффикс | Описание |
DOMAINNAME/WORKGROUPNAME | <00> | Регистрирует станцию как члена рабочей группы или домена. |
DOMAINNAME | <1C> | Регистрирует станцию как контроллер домена. Каждый контроллер домена регистрирует это групповое имя. |
DOMAINNAME/WORKGROUPNAME | <1E> | Регистрируется как групповое имя. Используется при выборах Master Browser. |
Forte_$ND800ZA | <20> | DCA IrmaLan Gateway Server Service |
IRISMULTICAST | <2F> | Lotus Notes. |
IRISNAMESERVER | <33> | Lotus Notes. |
[01h][02h]__MSBROWSE__[02h] | <01> | Master Browser (Local Master Browser). Групповое имя, регистрируемое всеми Master Browser в сети. Используется для поиска других LMB с целью обмена списками просмотра. |
Тип ресурса можно посмотреть командой nbtstat -a <имя_компьютера>
:
Подключение по локальной сети: Адрес IP узла: [192.168.1.199] Код области: [] Таблица NetBIOS-имен удаленных компьютеров Имя Тип Состояние —————————————————- INT1 <00> Уникальный Зарегистрирован WORKGROUP <00> Группа Зарегистрирован INT1 <20> Уникальный Зарегистрирован WORKGROUP <1E> Группа Зарегистрирован WORKGROUP <1D> Уникальный Зарегистрирован ..__MSBROWSE__.<01> Группа Зарегистрирован Адрес платы (MAC) = C8-60-00-E1-0F-FA |
Основное назначение этой команды — показать информацию из локальной таблицы NetBIOS имен для всех интерфейсов, установленных на станции. Имеет алиас — nbtstat -n.
Методы разрешения имени NetBIOS
Очевидно, что тут мы будем говорить о том, какими средствами NetBIOS удается найти соответствие имени и IP-адреса ресурса? Какие же методы определения имен доступны интерфейсу NetBIOS? Сразу обращу ваше внимание на то, что не все из перечисленных методов относятся непосредственно к стандарту NetBIOS. Я считаю, что к NetBIOS относятся только лишь: LMHOSTS, WINS, кеш имен NetBIOS, широковещательный запрос в подсети. Такие же понятия как HOSTS и DNS относятся уже к TCP/IP Direct Hosting. Но поскольку понятия «NetBIOS имя станции» и «имя хоста» довольно тесно взаимосвязаны в современных ОС Windows, то resolver (модуль, разрешающий имена) использует все доступные методы для нахождения соответствия, умело комбинируя разнородные методы определения имен.
- NetBIOS name cache (локальный кеш NetBIOS) — специальная структура в памяти процесса для записи результатов разрешения имен. Время жизни записей — 10 минут. Приложение смотрит в локальном кэше, нет ли там искомого имени. И правда, зачем нам тратить время на другие методы, если может статься, что мы недавно уже обращались к станции, и имя её содержится в локальном кеше. Локальный кеш NetBIOS можно посмотреть командой «nbtstat -r». Некоторые параметры, которые влияют на функционал NetBIOS name cache можно найти в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters.
- NetBIOS name server (WINS, NBNS). Если сказать иначе, WINS это DNS от Microsoft для NetBIOS. Станции с определенными типами узлов обращаются к WINS-серверу за разрешением имени.
- IP subnet broadcast — широковещательное сообщение в IP-подсети. Станции с определенными типами узлов формируют широковещательный запрос для разрешения имени.
- Локальный LMHOSTS файл. Аналог файла hosts для NetBIOS. Файл, в котором, в специальном формате, хранится таблица соответствия имен NetBIOS IP-адресам. Размещается в директории %SystemRoot%\System32\Drivers\Etc.
- Локальный HOSTS файл. Файл, в котором, в специальном формате, хранится таблица соответствия имен хостов (TCP/IP hostname) IP-адресам. Располагается в директории %SystemRoot%\System32\Drivers\etc. Этот метод непосредственно не относится к NetBIOS через TCP/IP, а относится уже к TCP/IP Direct Hosting. Если NetBIOS имя найти не удалось, то имя считается как TCP/IP hostname и разрешается уже методами HOSTS+DNS.
- DNS-сервер. Запрос к DNS-серверу. DNS-сервер возвращает запись о соответствии имени хоста IP-адресу.
Тип узла NetBIOS (NodeType)
Поскольку методы регистрации имен в сети у NetBIOS тоже не стояли на месте, и если изначально все сводилось, как мы уже упоминали, к широковещательным запросам, то со временем начали появляться и другие способы зарегистрировать имя (например, с использованием WINS-сервера). В связи с необходимостью разделять логику работы станций, было введено понятие NodeType (NBT-узел) для описания разницы в способах регистрации и распознавания имен. Проще говоря, разные типы узлов имеют свои обособленные алгоритмы разрешения имен в IP-адреса:
- B-node (тип 0x01, широковещательный). Для преобразования имен станций в IP-адреса используется только широковещательные сообщения. Минус этого типа заключается в том, что широковещательные запросы, обычно, режутся маршрутизаторами, поэтому имена могут быть разрешены только в пределах одного сетевого сегмента.
- P-node (тип 0x02, одноранговый). Для разрешения имен используются WINS-сервер (сервер имен NetBIOS). Сессии клиента длятся на три этапа: регистрация имени, обновление имени и освобождение имени. Если WINS не работает, то ни регистрации, ни разрешения не происходит.
- M-node (тип 0x04, смешанный, гибрид B- и P-узлов). Сначала действует как B-node, то есть для разрешения имен используются широковещательные сообщения. Если не получает ответа на широковещательный запрос, то переключается в P-node и использует WINS-сервер.
- H-node (тип 0x08, гибридный, гибрид B- и P-узлов). Сначала пытается стать P-node и действовать через WINS-сервер. Если WINS-сервер не доступен, переключается в B-node и пытается функционировать через широковещательные запросы. Переключается обратно в P-node, как только находит WINS-сервер.
Microsoft использует свою собственные, модифицированные версии типов, так называемые Microsoft-Enhanced B-node, P-node, M-node, H-node. Модификация подразумевает, помимо стандартных алгоритмов, описанных выше, использование файла LMHOSTS, функции API Winsock — gethostbyname()
, которая использует в своей логике обращение к HOSTS/DNS.
Пополнив многообразие сетевых разработок, с 1990 года начал активно внедряться протокол DHCP, и пришлось оптимизировать NetBIOS под работу с ним. Так, если в сети используется DHCP для автоматического назначения IP-адресов, то можно установить метод разрешения имен для DHCP-клиентов. Другими словами, можно назначить тип узла (nodetype), через установку опцию DHCP-сервера 046
WINS/NBT. Либо, в случае отсутствия DHCP-сервера, можно локально задать тип узла в реестре через параметр nodetype
ключа HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters.
По умолчанию, при отсутствии WINS-сервера в сети, Windows выставляет тип узла в значение «модифицированный B-node», а при наличии WINS-сервера тип узла выставляется в гибридный, H-node.
Увидеть тип узла можно посредством команды ipconfig /all, в параметре “тип узла”:
Имя компьютера. . . . . . . . . . : int1 Основной DNS-суффикс. . . . . . . : Тип узла. . . . . . . . . . . . . : Гибридный IP-маршрутизация включена . . . . : Нет WINS-прокси включен . . . . . . . : Нет |
Порядок разрешения имен NetBIOS
Это нетривиальный процесс, который во времени претерпевал большое количество изменений, связанных с введением и преобразованием протоколов, ответственных за сетевое взаимодействие. В данный момент сам процесс разрешения имен NetBIOS вызывает большое количество споров. Связано это с тем, что в сети имеется огромное количество различных источников информации, в которых приводятся довольно расплывчатые формулировки, которые зачастую неактуальны или вовсе ошибочны. Я попробую выразить свою точку зрения на вопрос разрешения имен NetBIOS в частности, и шире — на алгоритм разрешения имен в ОС Windows в общем. Надо понимать, что в Windows существуют два параллельных направления разрешения имен — через функции API Windows Sockets и через функции API NetBIOS. Код ОС , то есть приложения, сервисы, драйвера и прочее, могут использовать тот или иной API. Соответственно, сюда относятся и механизмы разрешения имен самой ОС, которые используются при обращении пользователя к сетевым ресурсам стандартными средствами, например, при использовании проводника или средства подключения сетевых дисков. Таким образом, именно от того, какой метод использует тот или иной компонент ОС и зависит, в конечном итоге, алгоритм разрешения имени.
Начиная с Windows 2000, Microsoft существенно изменила порядок разрешения имен. Это было мотивировано разделением SMB и NetBIOS на две независимые ветви кода.
Если приложение использует функции API Winsock
В этом случае, процесс, инициировавший разрешение имени, использует такие функции API Windows Sockets как: getaddressbyname
, gethostbyname
, getnameinfo
, getaddrinfo
, и последовательность разрешения имени, в этом случае, такова:
- Сравнивает искомое имя с собственным. Не я ли это?;
- Проверяется наличие записи об узле в в локальном кеше DNS-резолвера. На этом же этапе проверяются записи, присутствующие в файле hosts (%SystemRoot%\System32\Drivers\etc), поскольку они, с определенным интервалом, импортируются в кеш DNS-резолвера;
- Делается запрос к DNS на наличие записи о хосте в зоне;
- Проверяется локальный кеш имен NetBIOS (NetBIOS name cache);
- Опрашивается WINS-сервер;
- Делается широковещательный запрос;
- Проверяется наличие записи в файле LMHOSTS. Файл располагается в директории %SystemRoot%\System32\Drivers\etc;
Как мы видим, даже при использовании функций API Winsock, в некоторых случаях, в алгоритме разрешения имени вызываются функции API NetBIOS. То есть, все вышеописанные функции API в своей логике содержат ветвления, которые могут инициировать передачу управления функциям API NetBIOS. Реализовано это с целью сохранить совместимость приложений. Однако, если исходное имя, которое должно быть разрешено:
- Представляет из себя FQDN (Full Qualified Domain Name, полностью уточненное доменное имя), то есть запись вида host.domain.ru.
- Имеет длину более 15 символов.
- Имеет символ «.» в своём составе.
..то попытки разрешить имя с помощью функций API NetBIOS вообще не производится. В таком случае, вышеописанные функции в своем алгоритме по условию не вызывают функций разрешения имен API NetBIOS.
Если же имя короче 16 символов (имеет длину не более 15 символов), то в случае неудачной попытки разрешения имени с помощью HOSTS+DNS, функции API Winsock передают его в API NetBIOS (где оно дополняется пробелами) для разрешения уже логикой NetBIOS.
Если приложение использует функции API NetBIOS
В этом случае, логика разрешения имен кардинально меняется. Сперва вызывается единственная функция API NetBIOS которая имеет одноименное название Netbios
:
UCHAR Netbios( PNCB pncb ); |
Параметром данной функции является указатель на структуру NCB
, в члене ncb_command которой, с целью поиска имени, указывается код команды NCBFINDNAME. В случае ошибки выполнения функции, производится попытка разрешения уже при помощью API Winsock (описан выше).
Последовательность разрешения имен через API NetBIOS в IP-адреса зависит, как мы уже говорили выше, от типа узла.
Например, для Модифицированного H-узла (Enchanced H-node) она следующая:
- Локальный кеш имен NetBIOS;
- WINS-сервер;
- Широковещательный запрос;
- Файл LMHOSTS;
- Локальный кеш DNS. Файл hosts (записи из него включаются в локальный кеш DNS);
- DNS-сервер;
То есть, как мы видим из последовательности, используется сначала логика разрешения имен NetBIOS, а потом уже, если имеется необходимость, вызываются функции API Winsock.
Исходя из всего вышеописанного, довольно сложно составить какой-то обобщенный алгоритм разрешения имен, однако я все же постараюсь это сделать. Для наглядной демонстрации описанной логики я приведу схему, описывающую собственное понимание происходящего. Стоит, однако, отметить, что в зависимости от API, которое используется для разрешения имени, части данной схемы могут меняться местами.
На этой оптимистической ноте я и хотел бы завершить теоретическую часть обзора NetBIOS через TCP/IP. Очевидно, что на данный момент NetBIOS морально устарел и содержит впечатляющее количество недоработок. К примеру, одним из существенных недостатков безопасности NetBIOS является предоставление информации о сетевых сервисах (ресурсах) любому узлу в сети в ответ на типовой запрос, то есть отсутствуют какие бы то ни было критерии разграничения доступа. Вероятно, архитектура NetBIOS уже настолько неоптимальна, что в какой-то момент разработчики MS отказались от её доработки с целью поддержки современных сетевых стандартов. Microsoft, судя по всему, всячески пытается избавиться от протокола, и подтверждением тому служит и тот факт, что был написан аналог — PNRP (LLMNR). В следующих статьям мы познакомимся с такими часто встречающимися на практике примерами, как подключение к ресурсам посредством NetBIOS, построение объектов сетевого окружения через NetBIOS.
From Wikipedia, the free encyclopedia
«NetBEUI» and «NetBIOS Enhanced User Interface» redirect here. For specifically the protocol available in Microsoft Windows, see NetBIOS Frames. For details, see § NetBEUI.
«Network Basic Input/Output System» redirects here. For the Network I/O System, see NIOS (Digital Research).
NetBIOS () is an acronym for Network Basic Input/Output System. It provides services related to the session layer of the OSI model allowing applications on separate computers to communicate over a local area network. As strictly an API, NetBIOS is not a networking protocol. Operating systems of the 1980s (DOS and Novell Netware primarily) ran NetBIOS over IEEE 802.2 and IPX/SPX using the NetBIOS Frames (NBF) and NetBIOS over IPX/SPX (NBX) protocols, respectively. In modern networks, NetBIOS normally runs over TCP/IP via the NetBIOS over TCP/IP (NBT) protocol. This results in each computer in the network having both an IP address and a NetBIOS name corresponding to a (possibly different) host name.[citation needed] NetBIOS is also used for identifying system names in TCP/IP (Windows). Simply stated, it is a protocol that allows communication of data for files and printers through the Session Layer of the OSI Model in a LAN.
History and terminology[edit]
NetBIOS is an operating system-level API that allows applications on computers to communicate with one another over a local area network (LAN). The API was created in 1983 by Sytek Inc. for software communication over IBM PC Network LAN technology.[1] On IBM PC Network, as an API alone, NetBIOS relied on proprietary Sytek networking protocols for communication over the wire.[2]
In 1985, IBM went forward with the Token Ring network scheme and produced an emulator of Sytek’s NetBIOS API to allow NetBIOS-aware applications from the PC-Network era to work over IBM’s new Token Ring hardware. This IBM emulator, named NetBIOS Extended User Interface (NetBEUI), expanded the base NetBIOS API created by Sytek with, among other things, the ability to deal with the greater node capacity of Token Ring. A new networking protocol, NBF, was simultaneously produced by IBM to allow its NetBEUI API (their enhanced NetBIOS API) to provide its services over Token Ring – specifically, at the IEEE 802.2 Logical Link Control layer.
In 1985, Microsoft created its own implementation of the NetBIOS API for its MS-Net networking technology. As in the case of IBM’s Token Ring, the services of Microsoft’s NetBIOS implementation were provided over the IEEE 802.2 Logical Link Control layer by the NBF protocol.[3]
In 1986, Novell released Advanced Novell NetWare 2.0 featuring the company’s own emulation of the NetBIOS API. Its services were encapsulated within NetWare’s IPX/SPX protocol using the NetBIOS over IPX/SPX (NBX) protocol.
In 1987, a method of encapsulating NetBIOS in TCP and UDP packets, NetBIOS over TCP/IP (NBT), was published. It was described in RFC 1001 («Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Concepts and Methods») and RFC 1002 («Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Detailed Specifications»). The NBT protocol was developed in order to «allow an implementation [of NetBIOS applications] to be built on virtually any type of system where the TCP/IP protocol suite is available,» and to «allow NetBIOS interoperation in the Internet.»
After the PS/2 computer hit the market in 1987, IBM released the PC LAN Support Program, which included a driver offering the NetBIOS API.
There is some confusion between the names NetBIOS and NetBEUI. NetBEUI originated strictly as the moniker for IBM’s enhanced 1985 NetBIOS emulator for Token Ring. The name NetBEUI should have died there, considering that at the time, the NetBIOS implementations by other companies were known simply as NetBIOS regardless of whether they incorporated the API extensions found in Token Ring’s emulator. For MS-Net, however, Microsoft elected to name its implementation of the NBF protocol «NetBEUI» – naming its implementation of the transport protocol after IBM’s enhanced version of the API.[citation needed] Consequently Microsoft file and printer sharing over Ethernet often continues to be called NetBEUI, with the name NetBIOS commonly used only in reference to file and printer sharing over TCP/IP. More accurately, the former is NetBIOS Frames (NBF), and the latter is NetBIOS over TCP/IP (NBT).
Since its original publication in a technical reference book from IBM, the NetBIOS API specification has become a de facto standard in the industry despite originally supporting a maximum of only 80 PCs in a LAN. This limitation was generally overcome industry-wide through the transition from NBF to NBT, under which, for example, Microsoft was able to switch to Domain Name System (DNS) for resolution of NetBIOS hostnames, having formerly used the LAN segment-compartmentalized NBF protocol itself to resolve such names in Windows client-server networks.[1]
Services[edit]
NetBIOS provides three distinct services:
- Name service (NetBIOS-NS) for name registration and resolution.
- Datagram distribution service (NetBIOS-DGM) for connectionless communication.
- Session service (NetBIOS-SSN) for connection-oriented communication.
(Note: SMB, an upper layer, is a service that runs on top of the Session Service and the Datagram service, and is not to be confused as a necessary and integral part of NetBIOS itself. It can now run atop TCP with a small adaptation layer that adds a length field to each SMB message; this is necessary because TCP only provides a byte-stream service with no notion of message boundaries.)
Name service[edit]
In order to start sessions or distribute datagrams, an application must register its NetBIOS name using the name service. NetBIOS names are 16 octets in length and vary based on the particular implementation. Frequently, the 16th octet, called the NetBIOS Suffix, designates the type of resource, and can be used to tell other applications what type of services the system offers.[citation needed] In NBT, the name service operates on UDP port 137 (TCP port 137 can also be used, but rarely is).
The name service primitives offered by NetBIOS are:
- Add name – registers a NetBIOS name.
- Add group name – registers a NetBIOS «group» name.
- Delete name – un-registers a NetBIOS name or group name.
- Find name – looks up a NetBIOS name on the network.
Internet Protocol Version 6 (IPv6) are not supported by the NetBIOS name resolution protocol.[4]
Datagram distribution service[edit]
Datagram mode is connectionless; the application is responsible for error detection and recovery. In NBT, the datagram service runs on UDP port 138.
The datagram service primitives offered by NetBIOS are:
- Send Datagram – send a datagram to a remote NetBIOS name.
- Send Broadcast Datagram – send a datagram to all NetBIOS names on the network.
- Receive Datagram – wait for a packet to arrive from a Send Datagram operation.
- Receive Broadcast Datagram – wait for a packet to arrive from a Send Broadcast Datagram operation.
Session service[edit]
Session mode lets two computers establish a connection, allows messages to span multiple packets, and provides error detection and recovery. In NBT, the session service runs on TCP port 139.
The session service primitives offered by NetBIOS are:
- Call – opens a session to a remote NetBIOS name.
- Listen – listen for attempts to open a session to a NetBIOS name.
- Hang Up – close a session.
- Send – sends a packet to the computer on the other end of a session.
- Send No Ack – like Send, but doesn’t require an acknowledgment.
- Receive – wait for a packet to arrive from a Send on the other end of a session.
In the original protocol used to implement NetBIOS services on PC-Network, to establish a session, the initiating computer sends an Open request which is answered by an Open acknowledgment. The computer that started the session will then send a Session Request packet which will prompt either a Session Accept or Session Reject packet.
During an established session, each transmitted packet is answered by either a positive-acknowledgment (ACK) or negative-acknowledgment (NAK) response. A NAK will prompt retransmission of the data. Sessions are closed by the non-initiating computer by sending a close request. The computer that started the session will reply with a close response which prompts the final session closed packet.
NetBIOS name vs Internet host name[edit]
When NetBIOS is run in conjunction with Internet protocols (e.g., NBT), each computer may have multiple names: one or more NetBIOS name service names and one or more Internet host names.
NetBIOS name[edit]
The NetBIOS name is 16 ASCII characters, however Microsoft limits the host name to 15 characters and reserves the 16th character as a NetBIOS Suffix.[5] This suffix describes the service or name record type such as host record, master browser record, or domain controller record or other services. The host name (or short host name) is specified when Windows networking is installed/configured, the suffixes registered are determined by the individual services supplied by the host. In order to connect to a computer running TCP/IP via its NetBIOS name, the name must be resolved to a network address. Today this is usually an IP address (the NetBIOS name to IP address resolution is often done by either broadcasts or a WINS Server – NetBIOS Name Server). A computer’s NetBIOS name is often the same as that computer’s host name (see below), although truncated to 15 characters, but it may also be completely different.
NetBIOS names are a sequence of alphanumeric characters. The following characters are explicitly not permitted: \/:*?»<>|. Since Windows 2000, NetBIOS names also had to comply with restrictions on DNS names: they cannot consist entirely of digits, and the hyphen («-«) or full-stop («.») characters may not appear as the first or last character. Since Windows 2000, Microsoft has advised against including any full-stop («.») characters in NetBIOS names, such that applications can use the presence of a full-stop to distinguish domain names from NetBIOS names.[5]
The Windows LMHOSTS file provides a NetBIOS name resolution method that can be used for small networks that do not use a WINS server.
Internet host name[edit]
A Windows machine’s NetBIOS name is not to be confused with the computer’s Internet host name (assuming that the computer is also an Internet host in addition to being a NetBIOS node, which need not necessarily be the case). Generally a computer running Internet protocols (whether it is a Windows machine or not) usually has a host name (also sometimes called a machine name). Originally these names were stored in and provided by a hosts file but today most such names are part of the hierarchical Domain Name System (DNS).
Generally the host name of a Windows computer is based on the NetBIOS name plus the Primary DNS Suffix, which are both set in the System Properties dialog box. There may also be connection-specific suffixes which can be viewed or changed on the DNS tab in Control Panel → Network → TCP/IP → Advanced Properties. Host names are used by applications such as telnet, ftp, web browsers, etc. To connect to a computer running the TCP/IP protocol using its name, the host name must be resolved into an IP address, typically by a DNS server. (It is also possible to operate many TCP/IP-based applications, including the three listed above, using only IP addresses, but this is not the norm.)
Node types[edit]
Under Windows, the node type of a networked computer relates to the way it resolves NetBIOS names to IP addresses. This assumes that there are any IP addresses for the NetBIOS nodes, which is assured only when NetBIOS operates over NBT; thus, node types are not a property of NetBIOS per se but of interaction between NetBIOS and TCP/IP in the Windows OS environment. There are four node types.
- B-node: 0x01 Broadcast
- P-node: 0x02 Peer (WINS only)
- M-node: 0x04 Mixed (broadcast, then WINS)
- H-node: 0x08 Hybrid (WINS, then broadcast)
The node type in use is displayed by opening a command line and typing ipconfig /all.
A Windows computer registry may also be configured in such a way as to display «unknown» for the node type.
NetBIOS Suffixes[edit]
The NetBIOS Suffix, alternately called the NetBIOS End Character (endchar), is the 16th character of a NetBIOS name and indicates service type for the registered name. The number of record types is limited to 255; some commonly used values are:
For unique names:
- 00: Workstation Service (workstation name)
- 03: Windows Messenger service
- 06: Remote Access Service
- 20: File Service (also called Host Record)
- 21: Remote Access Service client
- 1B: Domain Master Browser – Primary Domain Controller for a domain
- 1D: Master Browser
For group names:
- 00: Workstation Service (workgroup/domain name)
- 1C: Domain Controllers for a domain (group record with up to 25 IP addresses)
- 1E: Browser Service Elections
Protocol stack[edit]
The following table shows a brief history of NetBIOS and its related protocols. SMB was the main protocol that used NetBIOS. SMB enables Windows File and Printer Sharing.
7 | Application layer | Windows Chat, ClipBook Viewer, Microsoft Hearts | SMB | SMB | SMB | SMB | SMB | |
6 | Presentation layer | NetDDE | ||||||
5 | Session layer | NetBIOS (The original «Network Basic Input/Output System») | NetBIOS (NetBIOS Frames, incorrectly labeled as «NetBEUI» in Windows) | NetBIOS (NetBIOS over IPX/SPX) | NetBIOS (NetBIOS over TCP/IP) | |||
4 | Transport layer | IPX/SPX | TCP/UDP | TCP/UDP | QUIC (over UDP) | |||
3 | Network layer | IPX | IP | IP | IP | |||
2 | Data link layer | IEEE 802.2 on Ethernet, Token Ring | Any link that carries IPX | Any link that carries IP | Any link that carries IP | Any link that carries IP | ||
1 | Physical layer | IBM PC Network | Ethernet, Token Ring | |||||
First supported | Windows for Workgroups 3.1 | Windows for Workgroups 3.1 | Windows NT 3.5 | Windows 2000 | Windows 11 (Server side requires Windows Server 2022 Datacenter: Azure Edition) | |||
Last supported | Windows XP (requires manual install) | Windows XP |
See also[edit]
- NetBIOS over TCP/IP (NBT)
- NetBIOS Frames (NBF)
- Server Message Block (SMB)
References[edit]
- ^ a b Sosinsky, Barrie (2009). Networking Bible. John Wiley & Sons. pp. 528. ISBN 9780470543429.
- ^ «10. Assessing Windows Networking Services — Network Security Assessment, 2nd Edition [Book]». www.oreilly.com. Retrieved 20 April 2023.
- ^ «Getaway hardware for protocols». www.networking-hardware.com. Retrieved 20 April 2023.
- ^ «[MS-WPO]: WINS Management Protocol». learn.microsoft.com. 14 February 2019.
Because the NetBIOS protocol, defined in [RFC1002], does not support the mapping between NetBIOS names and IPv6 addresses, the Remote Administrative Interface: WINS protocol applies only to IPv4 addresses. It does not apply to IPv6 addresses.
- ^ a b «Naming conventions in Active Directory for computers, domains, sites, and OUs». Microsoft. Retrieved 19 December 2017.
Further reading[edit]
- Haugdahl, J. Scott (1990). Inside NetBIOS. Architecture Technology Corp. ISBN 99914-57-34-8
- Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2004). Operating System Concepts. (7th Ed.). John Wiley & Sons. ISBN 0-471-69466-5
- Meyers, Michael (2004). «Managing and Troubleshooting Networks». McGraw-Hill. ISBN 978-0-07-225665-9
- Tamara Dean. Network+ Guide to Networks, pg. 206 (NetBEUI)
External links[edit]
- LAN Technical Reference: 802.2 and NetBIOS APIs
- Implementing CIFS (from the Samba team, published under the Open Publication License)
- NetBIOS, NetBEUI, NBF, SMB, CIFS Networking
- Open Systems Interconnection (OSI) Reference Model for NBF, NBT, and NBX
- LMHOSTS File
- NETBIOS End Characters / Suffixes – Microsoft Knowledge Base article describing list of NetBIOS Suffixes.
- [1] – Visual Basic 2010 NetBIOS API source code.
- Richard Sharpe (8 October 2002). «Just what is SMB?». Archived from the original on 2 December 2009. Retrieved 1 January 2012.