当前位置:   article > 正文

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

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中定义,包含以下信息

  1. > 4.2.1 GENERAL FORMAT OF NAME SERVICE PACKETS
  2. > 4.2.1.1 HEADER
  3. > 4.2.1.2 QUESTION SECTION
  4. > 4.2.1.3 RESOURCE RECORD
  5. > 4.2.2 NAME REGISTRATION REQUEST
  6. 4.2.3 NAME OVERWRITE REQUEST & DEMAND
  7. 4.2.4 NAME REFRESH REQUEST
  8. > 4.2.5 POSITIVE NAME REGISTRATION RESPONSE
  9. 4.2.6 NEGATIVE NAME REGISTRATION RESPONSE
  10. 4.2.7 END-NODE CHALLENGE REGISTRATION RESPONSE
  11. 4.2.8 NAME CONFLICT DEMAND
  12. 4.2.9 NAME RELEASE REQUEST & DEMAND
  13. 4.2.10 POSITIVE NAME RELEASE RESPONSE
  14. 4.2.11 NEGATIVE NAME RELEASE RESPONSE
  15. 4.2.12 NAME QUERY REQUEST
  16. 4.2.13 POSITIVE NAME QUERY RESPONSE
  17. 4.2.14 NEGATIVE NAME QUERY RESPONSE
  18. 4.2.15 REDIRECT NAME QUERY RESPONSE
  19. 4.2.16 WAIT FOR ACKNOWLEDGEMENT (WACK) RESPONSE
  20. > 4.2.17 NODE STATUS REQUEST
  21. > 4.2.18 NODE STATUS RESPONSE

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

GENERL HEADER

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

  1. 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
  2. 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
  3. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4. | |
  5. + ------ ------- +
  6. | HEADER |
  7. + ------ ------- +
  8. | |
  9. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  10. | |
  11. / QUESTION ENTRIES /
  12. | |
  13. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  14. | |
  15. / ANSWER RESOURCE RECORDS /
  16. | |
  17. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  18. | |
  19. / AUTHORITY RESOURCE RECORDS /
  20. | |
  21. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  22. | |
  23. / ADDITIONAL RESOURCE RECORDS /
  24. | |
  25. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 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 1 2 2 2 2 2 2 2 2 2 2 3 3
  2. 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
  3. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4. | NAME_TRN_ID | OPCODE | NM_FLAGS | RCODE |
  5. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  6. | QDCOUNT | ANCOUNT |
  7. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  8. | NSCOUNT | ARCOUNT |
  9. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 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,如下表所示:

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

关于NM_FLAGS, 如下表所示:

  1. 0 1 2 3 4 5 6
  2. +---+---+---+---+---+---+---+
  3. |AA |TC |RD |RA | 0 | 0 | B |
  4. +---+---+---+---+---+---+---+
  • 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 1 2 2 2 2 2 2 2 2 2 2 3 3
  2. 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
  3. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4. | |
  5. / QUESTION_NAME /
  6. / /
  7. | |
  8. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  9. | QUESTION_TYPE | QUESTION_CLASS |
  10. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • QUESTION_NAME: 被压缩的NetBIOS,编码格式如 NetBIOS-命名编码
  • QUESTION_TYPE: 请求类型
  • 0x0020 NB: NetBIOS 通用名称服务资源记录</
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/426976
推荐阅读
相关标签
  

闽ICP备14008679号