NetBIOS
NetBIOS (Network Basic Input/Output System) — это программный интерфейс (API) и сетевой протокол, предназначенный для организации взаимодействия между приложениями на компьютерах в локальной вычислительной сети (LAN). Основная функция NetBIOS — предоставление прикладным программам набора команд для идентификации устройств, установления сеансов связи и передачи данных, абстрагируясь от деталей низкоуровневых сетевых технологий. Исторически NetBIOS разрабатывался как надстройка над протоколами NetBEUI, IPX/SPX и TCP/IP, что делает его независимым от транспортного уровня.
История
NetBIOS был создан корпорацией IBM в 1983 году в рамках проекта по разработке сетевой операционной системы для персональных компьютеров. Первоначально он был реализован как часть IBM PC Network и использовался в связке с протоколом NetBEUI (NetBIOS Extended User Interface). В 1985 году Microsoft лицензировала NetBIOS для своей операционной системы MS-DOS, что привело к его широкому распространению в среде IBM PC-совместимых компьютеров.
С развитием сетей на основе протокола TCP/IP в 1990-х годах возникла необходимость адаптации NetBIOS к работе поверх IP. Для этого был разработан протокол NBT (NetBIOS over TCP/IP), описанный в RFC 1001 и RFC 1002. Это позволило использовать NetBIOS в глобальных сетях и в среде Windows, где он стал основой для служб файлового обмена и принтеров (SMB/CIFS) до появления Active Directory.
В операционных системах Windows, начиная с Windows 2000, Microsoft постепенно сместила акцент на использование DNS и Active Directory, однако поддержка NetBIOS сохранялась для обратной совместимости. В современных версиях Windows (например, Windows 10 и 11) NetBIOS по умолчанию отключен в новых сетях, но может быть включён администратором.
Архитектура и протоколы
NetBIOS определяет три основные службы, каждая из которых использует отдельный транспортный протокол при работе поверх TCP/IP:
Служба имён (Name Service)
Служба имён отвечает за регистрацию и разрешение NetBIOS-имён. Каждому устройству в сети присваивается уникальное 16-байтовое имя (NetBIOS name), где первые 15 байт — это имя компьютера или группы, а 16-й байт — тип службы (например, 0x00 для рабочей станции, 0x20 для сервера). Для разрешения имён используется широковещательный запрос (Broadcast) или сервер WINS (Windows Internet Name Service). Протокол службы имён работает через UDP-порт 137.
Служба дейтаграмм (Datagram Service)
Служба дейтаграмм обеспечивает ненадёжную передачу небольших сообщений (до 512 байт) без установления соединения. Она используется для широковещательных рассылок и простых уведомлений. Протокол работает через UDP-порт 138.
Служба сеансов (Session Service)
Служба сеансов обеспечивает надёжную двунаправленную передачу данных между двумя узлами с установлением логического соединения (сеанса). Она гарантирует доставку сообщений в правильном порядке. Протокол работает через TCP-порт 139.
NetBIOS-имена
NetBIOS-имя — это уникальный идентификатор устройства в сети, состоящий из 16 байт. Первые 15 байт (символов) обычно содержат имя компьютера (например, «COMPUTER1»), а последний байт указывает на тип службы. Имя может быть:
- Уникальным — принадлежит только одному устройству в сети.
- Групповым — может быть зарегистрировано на нескольких устройствах (например, для рабочих групп).
Разрешение NetBIOS-имён в IP-адреса может выполняться несколькими способами:
- Широковещательный запрос (B-node) — устройство отправляет широковещательный пакет на все узлы сети. Эффективен только в небольших сегментах.
- Точечный запрос к WINS-серверу (P-node) — устройство обращается к централизованному серверу WINS.
- Смешанный режим (M-node) — сначала выполняется широковещательный запрос, затем — к WINS.
- Гибридный режим (H-node) — сначала запрос к WINS, затем — широковещательный.
Применение
Файловый обмен и печать
В историческом контексте NetBIOS являлся основой для работы протокола SMB (Server Message Block), который обеспечивал доступ к файлам и принтерам в сетях Windows. До появления Active Directory и DNS, NetBIOS был единственным способом разрешения имён для SMB.
Сетевые игры
Многие старые многопользовательские компьютерные игры (например, Doom, Quake, Age of Empires) использовали NetBIOS для обнаружения серверов и установления соединений в локальной сети.
Администрирование
NetBIOS-имена используются в утилитах командной строки, таких как nbtstat (для просмотра NetBIOS-таблиц и разрешения имён) и net view (для просмотра списка компьютеров в сети).
Критика и уязвимости
NetBIOS имеет ряд недостатков, которые привели к его постепенному вытеснению:
- Отсутствие шифрования — все данные передаются в открытом виде, что делает протокол уязвимым для перехвата.
- Широковещательный шум — в больших сетях широковещательные запросы создают избыточный трафик.
- Уязвимости безопасности — NetBIOS-имена могут быть подделаны (spoofing), что позволяет злоумышленникам перехватывать сеансы или получать доступ к сетевым ресурсам. Известны атаки типа «человек посередине» (MITM) на службу сеансов.
- Ограниченная масштабируемость — максимальное количество устройств в сети NetBIOS ограничено из-за широковещательного механизма разрешения имён.
В связи с этими проблемами, в корпоративных сетях NetBIOS часто отключают в пользу DNS и Active Directory. В операционных системах Windows, начиная с Windows Vista, NetBIOS по умолчанию отключён для новых сетевых подключений.
Современное состояние
В современных сетях NetBIOS считается устаревшим протоколом. Microsoft рекомендует отключать его в средах, где не требуется обратная совместимость с Windows NT 4.0 или Windows 9x. Вместо NetBIOS используются:
- DNS — для разрешения имён.
- SMB over TCP/IP (порт 445) — для файлового обмена, что исключает необходимость в NetBIOS.
- Active Directory — для централизованного управления и аутентификации.
Тем не менее, NetBIOS продолжает использоваться в некоторых legacy-системах, а также в небольших домашних сетях, где не требуется высокая безопасность.
Интересные факты
- NetBIOS-имена могут содержать только символы ASCII (буквы, цифры и дефис), максимальная длина — 15 символов.
- Протокол NetBIOS был разработан до появления модели OSI, поэтому его функции частично пересекаются с уровнями модели OSI (сеансовым и транспортным).
- Утилита
nbtstat -a <ip-адрес>позволяет получить NetBIOS-таблицу удалённого компьютера, что может быть использовано для сбора информации о сети.
Источники
- RFC 1001 — «Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Concepts and Methods»
- RFC 1002 — «Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Detailed Specifications»
- Microsoft Docs — «NetBIOS over TCP/IP»
- IBM — «NetBIOS: An Overview»
- Таненбаум Э., Уэзеролл Д. — «Компьютерные сети» (5-е издание)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →