nbns协议_网络协议详解1 - NBNS

d9019ad79d21e57c92078709c33ff109.png

NetBIOS 简介

NetBIOS,Network Basic Input/Output System的缩写,一般指用于局域网通信的一套API,相关RFC文档包括 RFC 1001, RFC 1002. RFC 1001主要对NetBIOS及相关协议和服务进行解释说明,RFC 1002给出了相关协议和服务的数据组包格式。

NetBIOS提供三种软件服务:

  1. NetBIOS Name service
  2. NetBIOS Datagram
  3. NetBIOS Session service

文主要描述最常见的NBNS.

NBNS 简介

NBNS是NetBIOS name service的缩写,是NetBIOS的命名服务,用于将NetBIOS名称映射到IP地址上,是NetBIOS-over-TCP(NBT)协议族的一份子。NBNS是动态DNS的一种,Microsoft的NBNS实现称为WINS。路由器可以通过发送NBNS状态请求以获取设备名,windows PC 接收到后通过WINS或将本地缓存发送命名信息给路由器。

NBNS 数据报格式

NBNS的数据报文格式在RFC 1002 Ch4.2中定义,包含以下信息

> 4.2.1 GENERAL FORMAT OF NAME SERVICE PACKETS
>   4.2.1.1 HEADER
>   4.2.1.2 QUESTION SECTION
>   4.2.1.3 RESOURCE RECORD
> 4.2.2 NAME REGISTRATION REQUEST
  4.2.3 NAME OVERWRITE REQUEST & DEMAND
  4.2.4 NAME REFRESH REQUEST
> 4.2.5 POSITIVE NAME REGISTRATION RESPONSE
  4.2.6 NEGATIVE NAME REGISTRATION RESPONSE
  4.2.7 END-NODE CHALLENGE REGISTRATION RESPONSE
  4.2.8 NAME CONFLICT DEMAND
  4.2.9 NAME RELEASE REQUEST & DEMAND
  4.2.10 POSITIVE NAME RELEASE RESPONSE
  4.2.11 NEGATIVE NAME RELEASE RESPONSE
  4.2.12 NAME QUERY REQUEST
  4.2.13 POSITIVE NAME QUERY RESPONSE
  4.2.14 NEGATIVE NAME QUERY RESPONSE
  4.2.15 REDIRECT NAME QUERY RESPONSE
  4.2.16 WAIT FOR ACKNOWLEDGEMENT (WACK) RESPONSE
> 4.2.17 NODE STATUS REQUEST
> 4.2.18 NODE STATUS RESPONSE

本文主要介绍列表中>开头的部分。

GENERL HEADER

NetBIOS数据包的通用格式如下:

1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+ ------                                                ------- +
|                            HEADER                             |
+ ------                                                ------- +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
/                       QUESTION ENTRIES                        /
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
/                   ANSWER RESOURCE RECORDS                     /
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
/                  AUTHORITY RESOURCE RECORDS                   /
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
/                  ADDITIONAL RESOURCE RECORDS                  /
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • HEADER: 头部信息,包含ID信息等
  • QUESTION ENTRIES: 请求信息
  • ANSWER RESOURCE RECORDS: 应答信息
  • AUTHORITY RESOURCE RECORDS: 授权信息
  • ADDITIONAL RESOURCE RECORDS: 额外添加信息,如注册信息、刷新信息

HEADER

下面先来看HEADER信息。

1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           NAME_TRN_ID         | OPCODE  |   NM_FLAGS  | RCODE |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             QDCOUNT           |            ANCOUNT            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             NSCOUNT           |            ARCOUNT            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • NAME_TRN_ID: Transaction ID, 可以称为交易ID,就是针对本次请求或应答对应的ID
  • OPCODE: 包的类型码,后面详述
  • NM_FLAGS: 本次操作相关的标志位,后面详述
  • RCODE: result code or request, 在应答信息中被填入,具体数值依情况而定
  • QDCOUNT: uint_16 请求信息条例数量
  • ANCOUNT: uint_16 应答信息记录数量
  • NSCOUNT: uint_16 授权资源记录数量
  • ARCOUNT: uint_16 额外资源记录数量

关于OPCODE,如下表所示:

0   1   2   3   4
+---+---+---+---+---+
| R |    OPCODE     |
+---+---+---+---+---+
  • R: 为0代表请求包,为1代表应答包
  • 1-4bit的值标志不同的操作:
  • 0 = query
  • 5 = registration
  • 6 = release
  • 7 = WACK
  • 8 = refresh

关于NM_FLAGS, 如下表所示:

0   1   2   3   4   5   6
+---+---+---+---+---+---+---+
|AA |TC |RD |RA | 0 | 0 | B |
+---+---+---+---+---+---+---+
  • AA - Authoritative Answer flag, 当OPCODE中的R为0时必须为0,在响应报文中总是被设为1
  • TC - 截断标志,当数据报长度超过576字节后,需要截断
  • RD - 仅用于请求包,应答包会复制该值;该值为1代表NBNS会迭代请求、注册和释放
  • RA - 为1代表可以递归请求、注册和释放,为0则必须迭代请求
  • B - 为1代表广播包或多播包,为0代表单播包

RARD的原文解释如下:

RA 3 Recursion Available Flag. Only valid in responses from a NetBIOS Name Server -- must be zero in all other responses. If one (1) then the NBNS supports recursive query, registration, and release. If zero (0) then the end-node must iterate for query and challenge for registration. RD 6 Recursion Desired Flag. May only be set on a request to a NetBIOS Name Server. The NBNS will copy its state into the response packet. If one (1) the NBNS will iterate on the query, registration, or release.

大致意思是,对于请求、注册和释放,包含递归发送和迭代发送两种方式。RA为1说明支持递归,为0说明只能迭代,表征的是一种能力;RD则是说明具体以什么方式发送,如果为1则代表迭代,表征的是一个具体动作,这个值在响应包中会从请求包中复制得到。

QUESTION SECTION

NBNS的请求数据段格式如下:

1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
/                          QUESTION_NAME                        /
/                                                               /
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         QUESTION_TYPE         |          QUESTION_CLASS       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • QUESTION_NAME: 被压缩的NetBIOS,编码格式如 NetBIOS-命名编码
  • QUESTION_TYPE: 请求类型
  • 0x0020 NB: NetBIOS 通用名称服务资源记录<
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值