【发布时间】:2018-08-26 13:07:07
【问题描述】:
当我 ping www.google.com 时,协议 ICMP 会进行 DNS 查找并将 echo request 发送到谷歌 IP。当 google 响应时,会发生另一个 dns 查找?
如果我这样做ping -n www.google.com 是否可以节省时间但不执行两次 dns 查找?
【问题讨论】:
当我 ping www.google.com 时,协议 ICMP 会进行 DNS 查找并将 echo request 发送到谷歌 IP。当 google 响应时,会发生另一个 dns 查找?
如果我这样做ping -n www.google.com 是否可以节省时间但不执行两次 dns 查找?
【问题讨论】:
ICMP 协议进行 DNS 查找
这是不正确的。 ICMP 与 IP 一样处理地址。当您使用名称时,应用程序(即ping 程序)将查询操作系统以将名称转换为 IP。
此映射可能以不同的方式完成,DNS 只是其中之一。在 Unix 系统上,请参阅 /etc/nsswitch.conf 文件,该文件指示应如何解决各种问题,例如主机名。通常,它至少是 /etc/hosts 文件和 DNS 查询内容的混合。
因此,一旦ping 程序(通常使用getaddringo OS 类)将名称解析为 IP 地址,它就会开始使用 ICMP 协议处理该地址。
当 google 响应时,会发生另一个 dns 查找?
不,为什么要这样?同样,当 ICMP 发生时,我们已经并且现在完全处于地址世界中,那里没有名字。
我是否可以节省时间但不执行两次 dns 查找?
是的,可能,但只有一次(DNS 使用缓存)并且差异将是微不足道的,并且在许多其他事情中通常会丢失。
但有趣的问题是你为什么会有这个问题,我的意思是你试图这样做是什么?请注意,ping(因为它使用 ICMP)是一个糟糕的故障排除工具,因为 ICMP 流量在网络中的配置通常与 IP 流量非常不同。
(并且您不应该使用 www.google.com 作为测试的锚点,例如,请查看 RIPE 锚点,但这在很大程度上取决于您在这里真正的潜在问题是什么)。
【讨论】: