例如,当您查看 Windows 中的“网络”时,它包含主机、打印机等。或者当您映射网络驱动器时,共享和其他资源似乎“存在”,即使您不知道共享所在的主机的 IP 地址。这些资源是通过 NetBIOS 还是其他协议进行通告的?仔细想想,当我设置文件夹共享时,我没有看到用于通告是否通告共享的选项。有这样的设置吗?
答案1
这里有两类协议在起作用,每类协议都有许多相互竞争的协议:
服务发现(浏览)协议可帮助您获得一份合理的最新列表名称网络上可用的主机和服务,但它不会告诉您实际连接到这些主机和服务所需的 IP 地址。NetBIOS 浏览(有或没有域主浏览器)、UPnP 的 SSDP、Web 服务发现 (WSD)、Windows Connect Now (WCN)、IETF ZeroConf(Apple Bonjour)的“dns-sd”部分以及 Java 的 Jini 和 IETF 服务定位协议 (SLP) 等较老且较少见的协议都是您的系统上可能正在使用的服务发现协议的示例。
名称解析协议可让您查找指定主机和服务的 IP 地址。NetBIOS 名称服务、WINS、DNS 和 LLMNR 都是名称解析协议的示例。
传统上,Windows 计算机使用基于本地 LAN 广播的 NetBIOS 浏览在工作组内进行服务发现,并使用基于本地 LAN 广播的 NetBIOS 名称服务进行名称解析。在推出 Windows NT Advanced Server 时,它添加了“Windows 域”的概念,这些域就像超级工作组一样,可以跨越多个子网,借助 NT Server 上运行的“域主浏览器”。它还添加了“Windows Internet 名称服务”,以允许以单播方式进行 Windows 样式的名称解析,并且也可以跨子网。
由于设计缺陷、实施麻烦、NetBIOS 风格浏览和名称解析不可靠,并且因为它被视为以 Microsoft 为中心而非开放标准,其他非 Microsoft 组织开发了其他服务发现和名称解析协议,其中一些协议取得了有限的成功并保留了下来(家庭网关和打印机上的 UPnP 以及其他几种 LAN 设备、Mac 上的 ZeroConf/Bonjour),而其他协议我认为大多已被遗忘(Jini、SLP)。