我有一台远程机器,它通常与我正在使用的机器位于同一个本地网络上,我可以使用域名或本地 IP 地址来引用它。我引用它的方式会影响延迟或吞吐量吗?
例如,当我想通过 ssh 连接到这台机器时,最近我一直在使用一个 shell 脚本,该脚本首先检查我是否在同一个本地网络上,如果是,则使用本地 IP 地址,如果不是,则使用域名。当两台机器都在同一个本地网络上时,这个脚本是否会以某种方式加快连接速度?
答案1
什么能造成差异的原因在于不同的 IP 地址和不同的 IP 地址路由。实际情况是否如此取决于您的设置。
尝试host remote_machine_name
查看它解析到哪个 IP 地址。如果是不是与本地 IP 地址相同(例如,因为远程计算机位于具有 NAT 的公共地址后面,并且因为remote_machine_name
解析为该公共地址),并且如果 traceroute 确实显示了此地址通过外部网络的跳数,那么是的,使用本地 IP 地址更快,可能值得编写一个脚本来检查这一点。
另一个解决方案是设置 DNS,以便在可访问时返回本地 IP 地址等。
答案2
如果您通过主机名引用计算机,则本地计算机将需要执行 DNS 查找才能找到 IP 地址。理论上,这会导致少量延迟,但您永远不会注意到。它发生在不到一秒钟的时间内。成功查找后,它将在您的本地计算机上缓存 86,400 秒(1 天),或直到重新启动。简而言之,您的脚本真的没有必要。