深入了解NetBIOS名:解释、作用和用法

发布时间:2023-04-18 22:43:47 267人阅读
格局老中医(By:DDSEO)心文AI站长本文是相关深入了解NetBIOS名:解释、作用和用法于的内容
返回原页 注:内容为心文AI网的原创文章,若有被转载将发起法律诉讼!

  深入了解NetBIOS名:解释、作用和用法

  NetBIOS是一种用于本地网络之间进行通信的协议,它提供了一组API,以便应用程序在LAN上通信。在NetBIOS上,每个计算机都需要一个唯一的标识符来识别其在网络上的位置。这个唯一的标识符就是NetBIOS名。本文将深入探讨NetBIOS名的解释、作用和用法。

  一、NetBIOS名的解释

  首先,NetBIOS名由一到十六个ASCII字符组成,其中,有些字符是预定义的,有些字符是任意的。在NetBIOS中,预定义字符主要包括以下五种:

  - '?':表示任意一个字符;

  - '*':表示零个或多个字符;

  - ' ':空格,要求唯一;

  - '\0':空,表示名称结束;

  - '\01'到'\1F':控制字符,用于识别名的类型。

  其次,NetBIOS名由两部分组成,即名称和类型。名称部分是在本地网络上唯一的机器名,而类型部分则用于指定该名字的类型。通常情况下,NetBIOS名的类型有三种:

  - 文件共享(0x00):指定用于共享文件的名称;

  - 进程通信(0x20):指定用于识别本地进程的名称;

  - 服务提供程序(0x1F):一种广义的名称,它使用广播来发现网络上提供的服务。

  总之,NetBIOS名的命名规则是相对来说比较灵活的,但是具有唯一性和可区分性,能够在网络中进行唯一标识,从而方便了网络上的通信。

  二、NetBIOS名的作用

  NetBIOS名在本地网络上扮演着非常重要的角色,主要有以下几个方面。

  1. 唯一标识

  在本地网络中有很多计算机,每个计算机需要有一个唯一的标识符,这个标识符就是NetBIOS名。这样,当我们需要在网络中进行文件共享或其他操作时,就可以通过这个名字来找到对应的计算机。

  2. 文件共享

  NetBIOS名还被广泛用于文件共享。通过NetBIOS名,我们可以方便地在网络上查找其他计算机所共享的文件。为了实现文件共享,计算机需要开启“文件和打印机共享”功能,并将共享文件夹命名为NetBIOS名。

  3. 进程通信

  NetBIOS名还用于识别本地进程。本地进程可以使用唯一的NetBIOS名,以便其他进程能够更方便地找到它们。例如,如果一个应用程序需要向某个进程发送消息,就可以使用该进程的NetBIOS名来实现。

  4. 服务发现

  NetBIOS名也可以用于自动发现网络上的服务。许多服务提供程序可以通过广播自己的NetBIOS名,以便其他计算机的应用程序可以找到它们,从而使用它们提供的服务。例如,Windows中的“主浏览器”就使用广播来发布其NetBIOS名,从而让其他计算机知道它的存在。

  三、NetBIOS名的用法

  1. 注册NetBIOS名

  要使用NetBIOS名,首先需要将其注册到本地网络上,从而让其他计算机能够找到它。实现这个功能的方法是通过调用NetBIOS API中的Netbios()函数来实现。例如,我们可以通过以下代码将计算机的NetBIOS名注册到本地网络上:

  ```c++

  #include

  UCHAR name_start[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};

  struct netbios_name {

   char nb_name[16];

   char nb_type[16];

  };

  struct netbios_name name;

  memset(&name, 0, sizeof(struct netbios_name));

  memset(name.nb_name, ' ', 16);

  strcpy(name.nb_name, name_start);

  strcpy(name.nb_type, "\x20");

  Netbios( &name.nb_name[0], NCBRESET, NULL );

  Netbios( &name.nb_name[0], NCBACTION, NULL );

  struct ncbs sn;

  memset(&sn, 0, sizeof(struct ncbs));

  strcpy(sn.ncb_name, name.nb_name);

  sn.ncb_command = NCBQUICKADDNAME;

  Netbios(&sn);

  ```

  以上代码通过Netbios()函数来执行操作,其中NCBRESET和NCBACTION用于重新初始化和启用NetBIOS会话,NCBQUICKADDNAME用来将NetBIOS名注册到本地网络上。

  2. 查找NetBIOS名

  进行网络通信时需要找到请求的计算机,这时可以通过NetBIOS名进行查找。通过修改NCB查询请求结构体ncbs变量的ncb_name成员,来指定需要查找的NetBIOS名。例如,以下C++代码可以帮助我们在本地网络上查找名为“Computer”的计算机:

  ```c++

  struct ncbs sn;

  memset(&sn, 0, sizeof(struct ncbs));

  strcpy(sn.ncb_name, "Computer");

  sn.ncb_command = NCBASTAT;

  Netbios(&sn);

  ```

  3. 发送和接收信息

  一旦找到目标计算机的NetBIOS名,就可以使用NetBIOS API来发送和接收信息了。下面的C++代码演示了如何向名为“Computer”的计算机发送信息:

  ```c++

  struct ncbs sn;

  memset(&sn, 0, sizeof(struct ncbs));

  strcpy(sn.ncb_name, "Computer");

  sn.ncb_command = NCBSEND;

  sn.ncb_buffer = (PUCHAR) "Hello, Computer!";

  sn.ncb_length = strlen("Hello, Computer!");

  Netbios(&sn);

  ```

  四、总结

  本文深入探讨了NetBIOS名的解释、作用和用法。NetBIOS名可以帮助我们在本地网络中唯一标识计算机、实现文件共享、进行进程通信和自动发现网络上的服务。在使用NetBIOS名时,需要将其注册到本地网络上、查找它、发送和接收信息。通过对NetBIOS名的深入理解,可以更好地理解NetBIOS协议,从而更好地实现相关的应用程序。

展开更多