我对这些事情还不太熟悉,但有点困惑。当我使用路由器检查主机名时,
host 192.168.1.1
它返回“路由器“——与其他主机名不同,为什么这个主机名不以.local结尾?
经过进一步检查,当我运行时ping ttrouter
它返回“ttrouter.lan*,为什么它使用“.lan“后缀,为什么当我连接到它时我只需输入”http://ttrouter“ 代替 ”ttrouter.lan”其中我必须输入 .local 来获取其他主机名。
我知道这不是一个令人惊讶的问题,但我想了解有关主机名的更多信息,并且对这个主题感到困惑。
谢谢你的帮助。
答案1
设备的主机名通常也是设备名称。在 Windows PC 上,计算机名称是主机名。在某些家用路由器上,您也可以设置路由器的主机名。.local 和 .lan 是本地、不可路由的域。
主机名最常用于 DNS(域名系统)将 IP 地址映射到域名,但也可以用于将主机名映射到 IP 地址。主机名后面的部分是域,以点 [.] 分隔。
在互联网上,你对 .com 域名很熟悉。DNS 可以让你通过输入以下代码访问 SuperUser 的网站https://superuser.com进入浏览器,而不是https://151.101.193.69。DNS 远比这复杂得多,网上有很多资源讨论 DNS 的工作原理。在互联网上,我们通常处理子域(超级用户是 com 域的子域)和别名,而不是主机名,但很多原则是相同的。
在局域网中,PC 会保留已知 DNS 条目的缓存,而我们的本地路由器也充当网络的 DNS 服务器。借助 Windows 网络和我们的路由器 DNS 缓存,我们可以直接使用 LAN 中的客户端主机名,而不是它们的 IP 地址。通常不需要包含 .local 域来访问 PC,可以直接使用其主机名浏览 Windows 网络中的计算机。
在 LAN 上,使用 .local 和 .lan 域是因为它们是“不可路由”域。这意味着发往这些域的流量将不会在 Internet 上转发。
Windows PC 默认是 .local 域的一部分,因此可以通过浏览 .local 在本地网络上访问它,而无需在网络中进行任何进一步设置。
您的路由器制造商已将路由器上的默认域配置为 .lan。如果您的本地网络的 DHCP 选项中也配置了此域,则您的 PC 也可以通过 .lan 访问。您可以在路由器上将此域更改为 .local。
在命令提示符中运行ipconfig /all
将为您提供有关网络适配器上的网络和域的更多详细信息。
答案2
*.lan
名称由路由器的内置 DNS 服务器处理,该服务器注册您的设备在其 DHCP 租约请求中提供的所有名称。
路由器还会在其 DHCP 租约响应中公布此后缀,因此当您尝试查找不带任何点的域名(例如“ttrouter”)时,您的操作系统会自动添加后缀。
(对于家用路由器,制造商通常会选择他们喜欢的不存在的顶级域名——您的路由器恰好使用“.lan”,但其他一些路由器则使用“.home”或“.cpe”或“.homelan”。而企业网络通常使用他们的真实的域名。
同时,*.local
名称使用 mDNS 协议直接在设备之间解析,完全不需要路由器参与。但是,它们只在以下设备之间起作用:支持mDNS,但并非所有操作系统都支持。这主要是 macOS 和 Linux 的问题。(例如,Windows PC 去年才开始获得内置的 mDNS 支持,而且即使在 Windows PC 上,它仍然默认处于禁用状态。)
大多数家用路由器实际上根本不响应 mDNS,这就是无法解析“ttrouter.local”的原因。