NetBIOS ( / ˈ nɛ t b aɪ ɒ s / ) — аббревиатура от Network Basic Input/Output System ( Сетевая базовая система ввода-вывода) . Она предоставляет службы, связанные с сеансовым уровнем модели OSI, позволяя приложениям на отдельных компьютерах взаимодействовать через локальную сеть . Как строго API , NetBIOS не является сетевым протоколом . Операционные системы 1980-х годов (в первую очередь DOS и Novell Netware) запускали NetBIOS через IEEE 802.2 и IPX/SPX с использованием протоколов NetBIOS Frames (NBF) и NetBIOS через IPX/SPX (NBX) соответственно. В современных сетях NetBIOS обычно работает поверх TCP/IP через протокол NetBIOS через TCP/IP (NBT). NetBIOS также используется для идентификации имен систем в TCP/IP (Windows).
NetBIOS — это API уровня операционной системы, который позволяет приложениям на компьютерах взаимодействовать друг с другом через локальную сеть (LAN). API был создан в 1983 году компанией Sytek Inc. для программного взаимодействия через технологию IBM PC Network LAN. [1] В IBM PC Network , как API, NetBIOS опирался на фирменные сетевые протоколы Sytek для взаимодействия по проводам. [2]
В 1985 году IBM пошла дальше с сетевой схемой Token Ring и выпустила эмулятор NetBIOS API компании Sytek, чтобы позволить приложениям NetBIOS из эпохи PC-Network работать через новое оборудование IBM Token Ring. Этот эмулятор IBM, названный NetBIOS Extended User Interface (NetBEUI), расширил базовый NetBIOS API, созданный Sytek, помимо прочего, возможностью работать с большей пропускной способностью узлов Token Ring. Одновременно IBM выпустила новый сетевой протокол NBF , чтобы позволить своему NetBEUI API (их улучшенному NetBIOS API) предоставлять свои услуги через Token Ring, в частности, на уровне IEEE 802.2 Logical Link Control .
В 1985 году Microsoft создала собственную реализацию API NetBIOS для своей сетевой технологии MS-Net . Как и в случае с Token Ring от IBM, услуги реализации NetBIOS от Microsoft предоставлялись через уровень управления логическими связями IEEE 802.2 по протоколу NBF. [3] Однако MS-Net поставлялась только OEM-производителям и фактически не была законченным продуктом, а также не была готова к общению в сети в той форме, в которой распространялась. В ней отсутствовала реализация уровней OSI с 1 по 4 ( физический , канальный , сетевой и транспортный уровни), и ожидалось, что OEM-производитель предоставит эти реализации (в виде части NetBIOS), чтобы сделать свою версию MS-Net законченным и готовым к использованию продуктом. MS-Net получал доступ к сети через собственный вариант NetBIOS от Microsoft, который был разделен на две части: часть нижнего уровня, которую должны были предоставить OEM-производители, реализовывала вызовы NetBIOS, зависящие от уровней 1-4, в то время как часть верхнего уровня, предоставленная Microsoft, была аппаратно- и протокольно-независимой. Эта реализация NetBIOS поддерживала полный API NetBIOS, но вызывалась путем вызова прерывания x86 0x2A вместо стандартного прерывания IBM 0x5C. Зависимость от OEM-производителей в реализации частей NetBIOS имела неприятный побочный эффект, заключавшийся в том, что различные OEM-версии MS-Net и NetBIOS, как правило, не могли взаимодействовать друг с другом. [4]
В 1986 году Novell выпустила Advanced Novell NetWare 2.0, включающую собственную эмуляцию NetBIOS API. Ее сервисы были инкапсулированы в протокол IPX/SPX NetWare с использованием протокола NetBIOS over IPX/SPX (NBX).
В 1987 году был опубликован метод инкапсуляции NetBIOS в пакеты TCP и UDP , NetBIOS через TCP/IP (NBT). Он был описан в RFC 1001 («Стандарт протокола для службы NetBIOS на транспорте TCP/UDP: концепции и методы») и RFC 1002 («Стандарт протокола для службы NetBIOS на транспорте TCP/UDP: подробные спецификации»). Протокол NBT был разработан для того, чтобы «позволить реализовать [приложения NetBIOS] практически на любом типе системы, где доступен набор протоколов TCP/IP», и «разрешить взаимодействие NetBIOS в Интернете».
После того как в 1987 году на рынке появился компьютер PS/2 , IBM выпустила программу поддержки ПК с локальной сетью (PC LAN Support Program), которая включала драйвер, предлагающий API NetBIOS.
Существует некоторая путаница между названиями NetBIOS и NetBEUI. NetBEUI возникло исключительно как прозвище для улучшенного эмулятора NetBIOS 1985 года от IBM для Token Ring. Название NetBEUI должно было умереть там, учитывая, что в то время реализации NetBIOS другими компаниями были известны просто как NetBIOS независимо от того, включали ли они расширения API, найденные в эмуляторе Token Ring. Однако для MS-Net Microsoft решила назвать свою реализацию протокола NBF «NetBEUI» — назвав свою реализацию транспортного протокола в честь улучшенной версии API от IBM. [ необходима цитата ] Следовательно, общий доступ к файлам и принтерам Microsoft через Ethernet часто продолжает называться NetBEUI, а название NetBIOS обычно используется только в отношении общего доступа к файлам и принтерам через TCP/IP . Точнее, первое — это NetBIOS Frames (NBF), а второе — NetBIOS через TCP/IP (NBT).
С момента своей первоначальной публикации в техническом справочнике IBM спецификация API NetBIOS стала фактическим стандартом в отрасли, несмотря на то, что изначально поддерживала максимум 80 ПК в локальной сети. Это ограничение было в целом преодолено в отрасли за счет перехода от NBF к NBT, в рамках которого, например, Microsoft смогла перейти на систему доменных имен (DNS) для разрешения имен хостов NetBIOS , ранее использовав сам протокол NBF, разделенный на сегменты локальной сети, для разрешения таких имен в клиент-серверных сетях Windows . [1]
NetBIOS предоставляет три различные службы:
(Примечание: SMB , верхний уровень, представляет собой службу, которая работает поверх службы сеансов и службы датаграмм, и ее не следует путать с необходимой и неотъемлемой частью самого NetBIOS. Теперь она может работать поверх TCP с небольшим уровнем адаптации, который добавляет поле длины к каждому сообщению SMB; это необходимо, поскольку TCP предоставляет только службу потока байтов без понятия границ сообщений.)
Для того чтобы начать сеансы или распространять датаграммы, приложение должно зарегистрировать свое имя NetBIOS с помощью службы имен. Имена NetBIOS имеют длину 16 октетов и различаются в зависимости от конкретной реализации. Часто 16-й октет, называемый суффиксом NetBIOS, обозначает тип ресурса и может использоваться для указания другим приложениям, какой тип услуг предлагает система. [ необходима цитата ] В NBT служба имен работает на порту UDP 137 (также может использоваться порт TCP 137, но это случается редко).
Примитивы службы имен, предлагаемые NetBIOS:
Протокол Интернета версии 6 (IPv6) не поддерживается протоколом разрешения имен NetBIOS. [5]
Режим датаграммы не требует установления соединения ; приложение отвечает за обнаружение и устранение ошибок. В NBT служба датаграммы работает на порту UDP 138.
Примитивы службы датаграмм, предлагаемые NetBIOS:
Режим сеанса позволяет двум компьютерам устанавливать соединение, позволяет сообщениям охватывать несколько пакетов и обеспечивает обнаружение и восстановление ошибок. В NBT служба сеанса работает на порту TCP 139.
Примитивы сеансовой службы, предлагаемые NetBIOS:
В оригинальном протоколе, используемом для реализации служб NetBIOS в PC-Network, для установления сеанса инициирующий компьютер отправляет запрос Open, на который отвечает подтверждением Open. Затем компьютер, начавший сеанс, отправит пакет Session Request, который вызовет пакет Session Accept или Session Reject.
Во время установленного сеанса каждый переданный пакет получает ответ либо с положительным подтверждением (ACK), либо с отрицательным подтверждением (NAK). NAK вызовет повторную передачу данных. Сеансы закрываются неинициирующим компьютером путем отправки запроса на закрытие. Компьютер, начавший сеанс, ответит ответом на закрытие, который вызовет последний пакет закрытия сеанса.
Когда NetBIOS работает совместно с интернет-протоколами (например, NBT), каждый компьютер может иметь несколько имен: одно или несколько имен служб имен NetBIOS и одно или несколько имен интернет-хостов.
Имя NetBIOS состоит из 16 символов ASCII, однако Microsoft ограничивает имя хоста 15 символами и резервирует 16-й символ как суффикс NetBIOS. [6] Этот суффикс описывает тип записи службы или имени, такой как запись хоста, запись главного браузера или запись контроллера домена или другие службы. Имя хоста (или короткое имя хоста) указывается при установке/настройке сети Windows, зарегистрированные суффиксы определяются отдельными службами, предоставляемыми хостом. Чтобы подключиться к компьютеру, работающему по протоколу TCP/IP, через его имя NetBIOS, имя должно быть преобразовано в сетевой адрес . Сегодня это обычно IP-адрес (преобразование имени NetBIOS в IP-адрес часто выполняется либо широковещательными рассылками, либо сервером WINS – сервером имен NetBIOS). Имя NetBIOS компьютера часто совпадает с именем хоста этого компьютера (см. ниже), хотя и усекается до 15 символов, но может также быть совершенно другим.
Имена NetBIOS представляют собой последовательность буквенно-цифровых символов. Следующие символы явно не допускаются:\/:*?"<>|. Начиная с Windows 2000, имена NetBIOS также должны были соответствовать ограничениям на имена DNS: они не могли состоять только из цифр, а символы дефиса («-») или точки («.») не могли быть первым или последним символом. Начиная с Windows 2000, Microsoft рекомендовала не включать символы точки («.») в имена NetBIOS, чтобы приложения могли использовать наличие точки для различения доменных имен от имен NetBIOS. [6]
Файл Windows LMHOSTS предоставляет метод разрешения имен NetBIOS, который можно использовать для небольших сетей, не использующих WINS-сервер.
Имя NetBIOS машины Windows не следует путать с именем хоста Интернета компьютера (предполагая, что компьютер также является хостом Интернета в дополнение к тому, что является узлом NetBIOS, что не обязательно так). Обычно компьютер, на котором запущены протоколы Интернета (независимо от того, машина это Windows или нет), имеет имя хоста (иногда также называемое именем машины). Первоначально эти имена хранились и предоставлялись файлом hosts , но сегодня большинство таких имен являются частью иерархической системы доменных имен (DNS).
Обычно имя хоста компьютера Windows основано на имени NetBIOS и основном DNS-суффиксе, которые оба устанавливаются в диалоговом окне «Свойства системы». Также могут быть суффиксы, специфичные для подключения, которые можно просмотреть или изменить на вкладке DNS в Панель управления → Сеть → TCP/IP → Дополнительные свойства. Имена хостов используются такими приложениями , как telnet , ftp , веб-браузеры и т. д. Чтобы подключиться к компьютеру, работающему по протоколу TCP/IP, используя его имя, имя хоста должно быть преобразовано в IP-адрес , как правило, DNS-сервером. (Многие приложения на основе TCP/IP, включая три перечисленных выше, также могут работать с использованием только IP-адресов, но это не является нормой.)
В Windows тип узла сетевого компьютера относится к способу разрешения имён NetBIOS в IP-адреса . Это предполагает, что существуют IP-адреса для узлов NetBIOS, что гарантируется только при работе NetBIOS через NBT; таким образом, типы узлов являются не свойством NetBIOS как такового, а свойством взаимодействия между NetBIOS и TCP/IP в среде ОС Windows. Существует четыре типа узлов.
Тип используемого узла отображается при открытии командной строки и вводе ipconfig /all . Реестр компьютера Windows также может быть настроен таким образом, чтобы отображать «неизвестно» для типа узла.
Суффикс NetBIOS, также называемый конечным символом NetBIOS (endchar), является 16-м символом имени NetBIOS и указывает тип службы для зарегистрированного имени. Количество типов записей ограничено 255; некоторые часто используемые значения:
Для уникальных имен:
Для названий групп:
В следующей таблице представлена краткая история NetBIOS и связанных с ним протоколов. SMB был основным протоколом, который использовал NetBIOS. SMB обеспечивает общий доступ к файлам и принтерам Windows.
Поскольку протокол NetBIOS, определенный в [RFC1002], не поддерживает сопоставление имен NetBIOS и адресов IPv6, протокол удаленного административного интерфейса: WINS применяется только к адресам IPv4. Он не применяется к адресам IPv6.