前段时间,我们团队的几乎所有工作站(Windows XP SP2)在访问网络共享时都出现了间歇性但频繁的延迟。通常,第一次访问一段时间未访问的共享会导致工作站几乎冻结长达 30 秒。然后一切又开始正常工作。
使用 Sysinternals 的 TCPView,我看到在延迟期间,有一个连接到netbios-ssn文件服务器上的端口处于SYN_SENT。
第一次尝试:
禁用TCP/IP 上的 NetBIOS用于内联网网络适配器。
问题解决了,但我不喜欢操纵我们集中管理的内部网网络配置。
第二次尝试:
禁用TCP/IP 上的 NetBIOS仅适用于 VMWare 网络适配器(VMNet1 用于仅主机通信)。
问题又解决了!
我的问题:
- 为什么TCP/IP 上的 NetBIOS一个网络适配器上的 TCP/IP 会干扰另一个网络适配器上的 NetBIOS 吗?
- 该问题是否特定于 VMWare 网络适配器?
- 还有人见过这种现象吗?
附加信息:
- VMWare Workstation 版本 6.0.3
- 当我开始认真分析问题时,已经不可能找出问题出现时我们的系统发生了什么改变。
答案1
来自微软TCP/IP 上的 NetBIOS:
多主计算机的 NetBIOS 名称注册和解析
NetBT 只绑定到每个物理网络接口的一个 IP 地址。从 NetBT 的角度来看,只有当计算机具有以下特征时,它才是多宿主计算机:多个网络适配器安装。当从多宿主计算机发送名称注册数据包时,它将被标记为多宿主名称注册,以便它不会与同一台计算机中另一个接口注册的相同名称发生冲突。
如果多主计算机收到广播 NetBIOS 名称查询,所有 NetBT 和接口绑定接收查询的客户端会以其地址作出响应,默认情况下,客户端会选择第一个响应并连接到响应者提供的地址。
问题似乎是由于查询了所有接口而导致的。通过减少符合条件的接口数量,您显然可以避免被视为多宿主计算机,从而加快该过程。