NetBIOS sur TCP/IP

NetBIOS fournit trois services distincts :

  • Service de noms pour l’enregistrement et la résolution de noms (ports : 137/udp et 137/tcp)
  • Service de distribution de datagrammes pour la communication sans connexion (port : 138/udp)
  • Service de session pour la communication orientée connexion (port : 139/tcp)

NBT met en œuvre tous ces services.

Service de nomEdit

Dans NetBIOS, chaque participant doit s’enregistrer sur le réseau en utilisant un nom unique d’au plus 15 caractères. Dans les réseaux anciens, lorsqu’une nouvelle application voulait enregistrer un nom, elle devait diffuser un message disant « Quelqu’un utilise-t-il actuellement ce nom ? » et attendre une réponse. Si aucune réponse ne lui parvenait, elle pouvait supposer que le nom n’était pas utilisé. Cependant, le délai d’attente était de quelques secondes, ce qui faisait de l’enregistrement du nom un processus très long, car le seul moyen de savoir qu’un nom n’était pas enregistré était de ne recevoir aucune réponse.

NBT peut mettre en œuvre un référentiel central, ou service de noms, qui enregistre tous les enregistrements de noms. Une application voulant enregistrer un nom contacterait donc le serveur de noms (qui a une adresse réseau connue) et demanderait si le nom est déjà enregistré, en utilisant un paquet « Name Query ». Cette méthode est beaucoup plus rapide, car le serveur de noms renvoie immédiatement une réponse négative si le nom n’est pas déjà dans la base de données, ce qui signifie qu’il est disponible. Le service de nom, selon les RFC 1001 et 1002, est appelé NetBIOS Naming Service ou NBNS. Microsoft WINS est une implémentation de NBNS. Il convient de dire qu’en raison du développement constant de la façon dont le service de nom gère les conflits ou les fusions, les « noms de groupe » varient d’un fournisseur à l’autre et peuvent même être différents par version, par exemple avec l’introduction d’un service pack.

Les formats de paquets du service de nom sont identiques à ceux du DNS. Les principales différences sont l’ajout des paquets de requête NetBIOS « Node Status », d’enregistrement dynamique et de marquage de conflit. Ils sont encapsulés dans UDP. Une implémentation ultérieure inclut une partie optionnelle Scope du nom, rendant le nom NetBIOS hiérarchique comme le DNS, mais cela est rarement utilisé.

En outre, pour démarrer une session ou envoyer un datagramme à un hôte particulier plutôt que de diffuser le datagramme, NBT devra déterminer l’adresse IP de l’hôte avec un nom NetBIOS donné ; ceci est fait en diffusant un paquet « Name Query », et/ou en l’envoyant au serveur de nom NetBIOS. La réponse comportera l’adresse IP de l’hôte portant ce nom.

NBNS est l’un des premiers services d’enregistrement de nom distribué dynamique correct de pair à pair. Le protocole NBNS a été discrédité par Microsoft : il a gagné une mauvaise réputation pour être « bavard », inondant les réseaux de trafic d’enregistrement dynamique sur de multiples protocoles (IPX/SPX, NBF et TCP/IP) alors que les gens configuraient mal leurs machines et leurs réseaux. Les principes mis en œuvre dans NBNS ont été réimplémentés de nombreuses fois, notamment dans des systèmes tels que ZeroConf et MobileIP.

Service de distribution de datagrammesEdit

Le mode datagramme est « sans connexion » ; les datagrammes NetBIOS sont envoyés sur UDP. Un datagramme est envoyé avec un paquet « Direct Unique » ou « Direct Group » s’il est envoyé à un nom NetBIOS particulier, ou un paquet « Broadcast » s’il est envoyé à tous les noms NetBIOS du réseau.

Service de sessionEdit

Le mode session permet à deux ordinateurs d’établir une connexion pour une « conversation », permet de traiter des messages plus importants et fournit une détection et une récupération des erreurs.

Les sessions sont établies en échangeant des paquets. L’ordinateur qui établit la session tente d’établir une connexion TCP au port 139 de l’ordinateur avec lequel la session doit être établie. Si la connexion est établie, l’ordinateur établissant la session envoie alors sur la connexion un paquet « Session Request » avec les noms NetBIOS de l’application établissant la session et le nom NetBIOS vers lequel la session doit être établie. L’ordinateur avec lequel la session doit être établie répondra par une « réponse de session positive » indiquant qu’une session peut être établie ou par une « réponse de session négative » indiquant qu’aucune session ne peut être établie (soit parce que cet ordinateur n’écoute pas les sessions établies à ce nom, soit parce qu’aucune ressource n’est disponible pour établir une session à ce nom).

Les données sont transmises au cours d’une session établie par des paquets de message de session.

Le TCP gère le contrôle de flux et la retransmission de tous les paquets de service de session, ainsi que la division du flux de données sur lequel les paquets sont transmis en datagrammes IP suffisamment petits pour tenir dans les paquets de la couche de liaison.

Les sessions sont fermées en fermant la connexion TCP.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *