Menu Fermer

NetBIOS dans Windows (NetBT)

NetBIOS (Network Basic Input/Output System) est un protocole de communication très ancien que l’on a retrouvé sous différentes formes comme NetBIOS sur IEEE 802.2 et IPX/SPX en utilisant respectivement les protocoles NetBIOS Frames (NBF) et NetBIOS sur IPX/SPX (NBX).
Dans les réseaux modernes, NetBIOS fonctionne normalement sur TCP/IP via le protocole NetBIOS over TCP/IP (NBT) depuis Windows 2000.

Dans Windows, NetBIOS over TCP/IP abrégé en NBF est un protocole utilisé notamment dans le partage de fichiers à travers NetBIOS Over TCP/IP (NetBT).
Le but de NetBIOS est de permettre à des applications situées sur des ordinateurs distincts de communiquer et d’établir des sessions pour accéder à des ressources partagées, telles que des fichiers et des imprimantes, et de se retrouver sur un réseau local (LAN).
C’est donc un protocole de gestion de session et de transport de données.

Officiellement, ce protocole n’est plus supporté depuis Windows Vista mais il est encore actif par défaut dans Windows 10 et Windows 11.

Dans ce tutoriel, je vous donne toutes les explications sur le fonctionnement de NetBIOS Over TCP/IP (NetBT) dans Windows.

NetBIOS dans Windows (NetBT)
Created with GIMP

Qu’est-ce que NetBIOS et NetBIOS Over TCP/IP (NetBT) ?

NetBIOS, abréviation de Network Basic Input/Output System, est une norme de l’industrie des réseaux. Elle a été créée en 1983 par Sytek.
NetBIOS est une interface de programmation d’application (API) standard au niveau de la couche session du modèle de référence Open Systems Interconnect (OSI), de sorte que les applications utilisateur peuvent utiliser les services des piles de protocoles réseau installées. Une application qui utilise l’API de l’interface NetBIOS pour la communication réseau peut être exécutée sur toute pile de protocoles prenant en charge une interface NetBIOS.

De nos jours, on la retrouve essentiellement par le protocole NetBIOS sur TCP/IP dans les systèmes Windows.
NetBIOS sur TCP/IP est spécifié par les RFC 1001 et RFC 1002 publiés en 1987.

Ce protocole de gestion de session et de transport de données NetBIOS est également un protocole qui fonctionne au niveau des couches Session et Transport et qui fournit des commandes et un support pour les services suivants :

  • Enregistrement et vérification des noms de réseau
  • Établissement et fin de session
  • Transfert fiable de données de session orienté connexion
  • Transfert de données de datagramme sans connexion non fiable
  • Surveillance et gestion des protocoles et des adaptateurs
  • NetBIOS sur TCP/IP (NetBT) envoie le protocole NetBIOS sur le protocole de contrôle de transmission (TCP) ou le protocole de datagramme utilisateur (UDP)

Ainsi, chaque ordinateur du réseau possède à la fois une adresse IP et un nom NetBIOS correspondant à un nom d’hôte (éventuellement différent).
NetBIOS est également utilisé pour identifier les noms de système dans TCP/IP (Windows). En d’autres termes, il s’agit d’un protocole qui permet la communication de fichiers et d’imprimantes via la couche session du modèle OSI dans un réseau local.

NetBIOS : comment ça marche

Lorsque NBT est exécuté, chaque ordinateur peut avoir plusieurs noms : un ou plusieurs noms de service de nom NetBIOS et un ou plusieurs noms d’hôte Internet.
Pour cela, le protocole s’article autour de trois services :

  • Services de noms (NBNS) : fournit un mécanisme d’enregistrement et de libération des noms NetBIOS. Les noms NetBIOS sont des adresses de point final ; chaque nom représente une application ou un service fonctionnant sur un nœud du réseau
  • Services de sessions : assure un transport fiable, de point à point.
  • Services de datagramme : fournit un transport sans connexion et non fiable pour les messages (datagrammes) de monodiffusion, de multidiffusion et de diffusion.
Architecture NetBIOS sur TCP/IP

Tous les nœuds NetBT utilisent des processus d’enregistrement de noms, de résolution de noms et de libération de noms pour gérer les noms NetBIOS sur un réseau IPv4.

Services de noms (NBNS)

Le nom NetBIOS comporte 16 caractères ASCII, mais Microsoft limite le nom d’hôte à 15 caractères et réserve le 16e caractère comme suffixe NetBIOS. Ce suffixe décrit le type de service ou d’enregistrement de nom tel que l’enregistrement d’hôte, l’enregistrement de navigateur principal ou l’enregistrement de contrôleur de domaine ou d’autres services.
Le nom d’hôte (ou nom d’hôte court) est spécifié lors de l’installation/la configuration du réseau Windows, les suffixes enregistrés sont déterminés par les services individuels fournis par l’hôte. Afin de se connecter à un ordinateur exécutant TCP/IP via son nom NetBIOS, le nom doit être résolu en une adresse réseau.
Aujourd’hui, il s’agit généralement d’une adresse IP. Le nom NetBIOS d’un ordinateur est souvent le même que le nom d’hôte de cet ordinateur, bien que tronqué à 15 caractères, mais il peut aussi être complètement différent.

Le fichier LMHOSTS de Windows fournit une méthode de résolution des noms NetBIOS.
Sur un réseau LAN, la résolution du nom NetBIOS en adresse IP est souvent effectuée par des diffusions ou par un serveur WINS – NetBIOS Name Server.

Services de sessions

Les sessions NetBIOS sont établies entre deux noms. Par exemple, lorsqu’un service de station de travail Windows 2000 établit une connexion de partage de fichiers avec un service de serveur Windows 2000 en utilisant NetBIOS sur TCP/IP, la séquence d’événements suivante se déroule :

  • Le nom NetBIOS du processus serveur est résolu en une adresse IP
  • Une connexion TCP est établie entre la station de travail et le serveur, en utilisant le port TCP 139

La station de travail envoie une demande de session NetBIOS au nom du serveur via la connexion TCP. En supposant que le serveur soit à l’écoute de ce nom, il répondra par l’affirmative et une session sera établie.

Une fois la session NetBIOS établie, le client et le serveur négocient la connexion de partage de fichiers avec le protocole Server Message Block (SMB).
Le réseau Microsoft n’utilise qu’une seule session NetBIOS entre deux noms à un moment donné. Toute connexion supplémentaire de partage de fichiers ou d’impression établie après la première est multiplexée sur la même session NetBIOS.

Services de datagramme NetBIOS

Les datagrammes sont envoyés d’un nom NetBIOS à un autre sur le port UDP 138.
Le service de datagrammes permet d’envoyer un message à un nom unique ou à un nom de groupe.
Les noms de groupe peuvent correspondre à une liste d’adresses IP ou à une diffusion.

Par exemple, la commande net send /d:mondomain test envoie un datagramme contenant le texte “test” au nom de groupe MONDOMAIN.
Le nom MONDOMAIN se résout en une diffusion de sous-réseau IP, de sorte que le datagramme est envoyé avec les caractéristiques suivantes :

Quels sont les ports utilisés par NetBIOS

NetBIOS ne fonctionne qu’en IPv4 et ne supporte pas IPv6.
Cela vient du fait qu’il est très ancien et ne plus maintenu.

Voici les ports utilisées par le protocole NetBIOS :

  • Port UDP 137 (services de noms)
  • Port UDP 138 (services de datagramme)
  • Port TCP 139 (services de session)

De ce fait, il est considéré comme étant dans la couche 5 du modèle OSI.

SMB et NetBIOS dans le modèle OSI (port, transport, session, ...)

Dans les versions modernes de Windows, NetBIOS est directement intégré à SMB et la communication se fait exclusivement sur le port 445.

NetBIOS et NetBT dans SMB dans les versions récentes de Windows

NetBIOS Over TCP/IP (NetBT) dans Windows 10 et Windows 11

NetBIOS est toujours présent dans les versions modernes de Windows, telles que Windows 7, Windows 8, Windows 10 et Windows 11.
Mais il n’est plus essentiel.
La résolution de nom peut se faire par DNS ou via le protocole Link-Local Multicast Name Resolution (LLMNR).

Toutefois, NetBIOS est encore actif par défaut dans les versions récentes de Windows telles que Windows 1 ou Windows 11.
Microsoft ne l’a toujours pas retiré probablement pour une compatibilité descendante avec Windows et certains appareils comme les NAS.

Tout d’abord, on trouve la présence de NetBIOS à travers les pilotes NetBIOS.sys et Netbt.sys.

Le pilote Netbt.sys est un composant en mode noyau qui prend en charge l’interface TDI (Transport Driver Interface).
Les services tels que la station de travail et le serveur utilisent directement l’interface TDI, tandis que les applications NetBIOS traditionnelles voient leurs appels mappés en appels TDI par le biais du pilote Netbios.sys.
L’utilisation de TDI pour faire des appels à NetBT est une tâche de programmation plus difficile, mais peut fournir des performances plus élevées et une liberté par rapport aux limitations historiques de NetBIOS.

Les pilotes NetBIOS.sys et Netbt.sys dans Windows 10/11

La clé du registre Windows HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters permet de configurer NetBT comme le maintien de sessions (SessionKeepAlive), le numéro de port (NameServerPort), configuration de timeout, …

Les paramètres NetBT dans le registre Windows

Un administrateur réseau peut désactiver facilement NetBIOS dans Windows en suivant ce tutoriel :

La commande nbtstat dans Windows

nbtstat est la commande pour afficher les statistiques du protocole NetBIOS sur TCP/IP (NetBT), les tables de noms NetBIOS pour l’ordinateur local et les ordinateurs distants, et le cache de noms NetBIOS.
Cette commande permet également de rafraîchir le cache de noms NetBIOS et les noms enregistrés auprès de Windows Internet Name Service (WINS). Utilisée sans paramètres, cette commande affiche des informations d’aide.

Voici deux exemples d’utilisation de la commande nbtstat.

Pour voir quels noms NetBIOS un ordinateur a enregistrés sur NetBT, tapez ce qui suit à partir d’une invite de commande :

nbtstat -n

Windows vous permet de réenregistrer les noms NetBIOS auprès du serveur de noms après le démarrage d’un ordinateur. Pour réenregistrer les noms NetBIOS, tapez ce qui suit à partir d’une invite de commande :

nbtstat -RR