位于OSI模型中的Session Layer。
为LAN上的运行不同程序的计算机提供通信服务。
是一套API,可以基于不同的协议(IPX/SPX,TCP/IP)来进行数据交互。
Windows为Ethernet/Token Ring都提供了NetBIOS支持。
基于NetBIOS的app通过NetBIOS Name Service相互定位。
在windows中NetBIOS名并不代表计算机名。其最长为16个字符。
机器之间通过UDP
137端口来访问NetBIOS名。
Windows Internet
Naming Service(WINS)为NetBIOS提供了名称解析服务。
NetBIOS Session基于TCP上的139端口。
Call
Send/Reveice
Hang-Up
应用程序同样可以使用138上的UDP端口进行无连接的通信。
NetBEUI(Extended User Interface)是NetBIOS的扩充。
https://technet.microsoft.com/en-us/library/cc940063.aspx
基于TCP/IP上的NetBIOS
Windows2000上实现的版本简称NetBT,其使用以下几个端口
UDP port 137 name services
UDP port 138 datagtam services
TCP Port 139 session services
细节标准可以参考RFC1001与RFC1002
NetBt.sys驱动:内核模式,支持TDI接口的组件。
Workstation/service等这类服务直接基于TDI接口进行编写。传统的NetNIOS程序中的调用最终也会映射到TDI接口上,Netbios.sys驱动是完成映射功能的核心组件。
NetBT提供了一组基于TCP/IP协议的应用程序编程接口,其扩充了基于NetBIOS
编写的客户端/服务器程序所能抵达的网络边界,并且使不同OS之间的交互成为可能。
在Windows2000中,WorkStation,Server,Browser,Message,netLogon等服务均为NetBT的客户端程序。并且直接通过调用TDI接口来与NetBT进行通信。
Windows2000中还包含了一个NetBIOS模拟器,将NetBIOS程序所发出的标准的NetBIOS请求转换为等价的TDI调用。
Windows2000与本地计算机的通信分为两类:
基于NetBT:Windows2000之前的版本。
名称解析:NetBIOS Name Service (UDP 137)
会话:NetBIOS Session Service (TCP 139)
Direct Hosting:Windows2000及以后的版本。
名称解析:DNS (TCP/UDP 53)
会话:(TCP 445)
2000之后的版本不再使用NetBIOS来解析计算机名称,而是使用DNS,通信的数据包中也不在包含NetBIOS头。
默认情况下,这两种通信方式都是启用的。在尝试建立连接的时候,会向目标的139端口,445端口同时发出请求,在优先响应的端口上建立会话。可以禁用NetBT通信方式,强制使用Direct Hosting。(网卡的ipv4协议中,高级选项,Win选项卡,禁用NetBT)
NetBIOS Names
最大长度为16字节。资源均通过该名称进行定位(解析成IP地址)。
当服务/应用程序启动,用户登录的时会自动完成名称注册(广播包?)。
NetBIOS名称有两种类型unique/group。
Workstation/server这类服务允许用户自定义前15字节。最后一个字节为保留字节,用于表示资源的类型。
通过NetBIOS Names可以分析出很多信息:
Unique NetBIOS
Names
|
pc_name
|
00
|
Workstation
|
|
pc_name
|
03
|
Messenger
|
|
pc_name
|
06
|
RAS Server
|
|
pc_name
|
1F
|
NetDDE
|
|
pc_name
|
20
|
Server
|
|
pc_name
|
21
|
RAS Server
|
|
pc_name
|
BE
|
Network Monitor
Agent
|
|
pc_name
|
BF
|
Network Monitor
App
|
|
user_name
|
03
|
Messenger
|
|
domain_name
|
1D
|
Master Browser
|
|
domain_name
|
1B
|
Domain Master
Browser
|
Group NetBIOS
Names
|
domain_name
|
00
|
Domain Name
|
|
domain_name
|
1C
|
Domain Controllers
|
|
domain_name
|
1E
|
Browser Service Elections
|
|
[01h][01h]__MSBROWSER__[01h][01h]
|
1F
|
Master Browser
|
可以看出计算机名在一部分NetBIOS名中。
NBTStat Tools:同于查询和注册NetBIOS Names
NetBIOS Name注册与解析:
解析方式
1.
NetBIOS
name cache
2.
NetBIOS
name server(Windows
Internet Name Service,WINS)
3.
IP
subnet broadcasts
4.
Static
LmHosts file
5.
Static
Hosts file
HKLM\SYSTEM\CurrentControlSet\Services\Netbt\Parameters:EnableDns
6.
DNS
Server
Node Type为计算机用来将NetBIOS名,解析为IP地址的方法。
解析的顺序根据Node type以及系统配置而定。关于节点类型的详细描述以及配置可以参考:
B–Node(broadcast):通过广播方式来完成NetBIOS name的注册与解析。
广播会增加网络的附在,且无法穿越路由,因此这种Node Type仅适合在较小的网络内使用。
P-Node(peer-to-peer):通过NetBIOS name Server(WINS)来解析。工作在此Node
Type为每台主机都配置NetBIOS
name Server。如果NetBIOS
name Server无法工作,网络将瘫痪。
M-Node(mixed):B+P模式,默认工作在B模式下,当B模式无法正常解析NetBIOS name,则切换到P模式下。
H-Node(hybrid):B+P模式,默认工作在P模式下。
Microsoft-enhanced:
Windows2003,Windows XP默认工作在B-Node下。
对于配置了WINS Server的Windows2003,2000,XP则切换到H模式下。
Ipconfig /all的返回结果中可以查看Node Type。
//TODO
多网卡主机上的NetBIOS name注册与解析
注册:
解析:
Windows2000 NetBT internet/DNS Enhancements
为了能够使用NetBT在Internet上进行连接。需要提供一些名称解析的方法。
比较常见的有LmHosts文件,WINS服务器。
连接到NetBT所指向的资源的命令
net use \\<ip address>\<share_name>
net use \\<Fully Qualitied Domain
Name>\<share_name>
net use f: \\<FQDN>\<share_name>
net use \\<ip address>\<share_name>
net view \\<ip address>
dir \\<FQDN>\<share_name>

主机名长度大于15个字符,或者其中包含.的名字,会自动走DNS解析。
名称小于15的走NetBIOS解析
在Windows2000中,如果要和其他连接其他windows2000及以上的机器,完全可以不使用NetBIOS(禁用),NetBIOS默认开启的原因是为了支持旧版本的windows系统。
Windows2000中新加入了一个被称为Server Message Block(SMB)设备的新接口。
其看起来就像一个完全独立的网络适配器/协议栈的组合。
在TCP/IP协议栈中,SMB设备默认绑定到ADDR_ANY,并且使用标准的DNS解析,其看起来就像一个标准的Windows Socket应用程序。
SMB device监听445端口。
445端口上的IPC$空连接建立过程比139端口上的IPC$空连接简单。少了NetBIOS
会话的初始化过程。
NetBT Session
1.
完成NetBIOS
name到IP地址的解析。
2.
workstation到server在139端口上建立起tcp连接。
3.
workstation发出session请求,server确认请求后连接建立完成。
NetBIOS session建立完成后,client与server通过SMB协议协商文件共享连接。两台通过NetBIOS通信的机器,使用只消耗一个NetBIOS会话。之后的文件/打印机共享,直接复用该会话。
任意一方在会话异常断开后,另一方则会负责关闭连接,清理相关资源。超市设定可以在注册表:
HKLM\SYSTEM\CurrentControlSet\Services|Netbt\Parameters:SessionKeepAlive
中进行设定。默认配置是一个小时。
当启动LmHosts文件时,如果ip地址无误,但NetBIOS名称输入错误,TCP连接一样可以建立,但是NBSS的建立过程则会出错,可能返回Error 51: Remote Computer not listening错误。
NetBIOS数据报服务。
该服务运行在UDP
138端口上。允许向unique name/group name发送消息
没有评论:
发表评论