2015年7月22日星期三



位于OSI模型中的Session Layer
LAN上的运行不同程序的计算机提供通信服务。
是一套API,可以基于不同的协议(IPXSPXTCPIP)来进行数据交互。

WindowsEthernetToken Ring都提供了NetBIOS支持。

基于NetBIOSapp通过NetBIOS Name Service相互定位。
windowsNetBIOS名并不代表计算机名。其最长为16个字符。
机器之间通过UDP 137端口来访问NetBIOS名。

Windows Internet Naming ServiceWINS)为NetBIOS提供了名称解析服务。

NetBIOS Session基于TCP上的139端口。
Call
SendReveice
Hang-Up
应用程序同样可以使用138上的UDP端口进行无连接的通信。

NetBEUIExtended User Interface)是NetBIOS的扩充。










https://technet.microsoft.com/en-us/library/cc940063.aspx
基于TCPIP上的NetBIOS
Windows2000上实现的版本简称NetBT,其使用以下几个端口
UDP port 137 name services
UDP port 138 datagtam services
TCP Port 139               session services
细节标准可以参考RFC1001RFC1002
NetBt.sys驱动:内核模式,支持TDI接口的组件。
Workstationservice等这类服务直接基于TDI接口进行编写。传统的NetNIOS程序中的调用最终也会映射到TDI接口上,Netbios.sys驱动是完成映射功能的核心组件。
NetBT提供了一组基于TCPIP协议的应用程序编程接口,其扩充了基于NetBIOS
编写的客户端/服务器程序所能抵达的网络边界,并且使不同OS之间的交互成为可能。
Windows2000中,WorkStationServerBrowserMessagenetLogon等服务均为NetBT的客户端程序。并且直接通过调用TDI接口来与NetBT进行通信。
Windows2000中还包含了一个NetBIOS模拟器,将NetBIOS程序所发出的标准的NetBIOS请求转换为等价的TDI调用。
Windows2000与本地计算机的通信分为两类:
基于NetBTWindows2000之前的版本。
名称解析:NetBIOS Name Service     UDP 137
会话:NetBIOS Session Service         TCP 139
Direct HostingWindows2000及以后的版本。
            名称解析:DNS         TCPUDP 53
会话:(TCP 445
2000之后的版本不再使用NetBIOS来解析计算机名称,而是使用DNS,通信的数据包中也不在包含NetBIOS头。
默认情况下,这两种通信方式都是启用的。在尝试建立连接的时候,会向目标的139端口,445端口同时发出请求,在优先响应的端口上建立会话。可以禁用NetBT通信方式,强制使用Direct Hosting。(网卡的ipv4协议中,高级选项,Win选项卡,禁用NetBT




NetBIOS Names
最大长度为16字节。资源均通过该名称进行定位(解析成IP地址)。
当服务/应用程序启动,用户登录的时会自动完成名称注册(广播包?)。
NetBIOS名称有两种类型uniquegroup
Workstationserver这类服务允许用户自定义前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 serverWindows Internet Name ServiceWINS
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–Nodebroadcast):通过广播方式来完成NetBIOS name的注册与解析。
广播会增加网络的附在,且无法穿越路由,因此这种Node Type仅适合在较小的网络内使用。
P-Nodepeer-to-peer:通过NetBIOS name ServerWINS)来解析。工作在此Node Type为每台主机都配置NetBIOS name Server。如果NetBIOS name Server无法工作,网络将瘫痪。
M-Nodemixed):B+P模式,默认工作在B模式下,当B模式无法正常解析NetBIOS name,则切换到P模式下。
H-Nodehybrid):B+P模式,默认工作在P模式下。
Microsoft-enhanced

Windows2003Windows XP默认工作在B-Node下。
对于配置了WINS ServerWindows20032000XP则切换到H模式下。
Ipconfig /all的返回结果中可以查看Node Type

//TODO
多网卡主机上的NetBIOS name注册与解析
注册:
解析:

Windows2000 NetBT internet/DNS Enhancements
为了能够使用NetBTInternet上进行连接。需要提供一些名称解析的方法。
比较常见的有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 BlockSMB)设备的新接口。
其看起来就像一个完全独立的网络适配器/协议栈的组合。
TCPIP协议栈中,SMB设备默认绑定到ADDR_ANY,并且使用标准的DNS解析,其看起来就像一个标准的Windows Socket应用程序。
SMB device监听445端口。

445端口上的IPC$空连接建立过程比139端口上的IPC$空连接简单。少了NetBIOS 会话的初始化过程。

NetBT Session
1.        完成NetBIOS nameIP地址的解析。
2.        workstationserver139端口上建立起tcp连接。
3.        workstation发出session请求,server确认请求后连接建立完成。
NetBIOS session建立完成后,clientserver通过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发送消息