当我对www.google.com
进行ping操作时,协议ICMP
进行DNS
查找,并将echo request
发送到Google IP。当Google响应时,会发生另一个DNS查找?
如果我做ping -n www.google.com
,可以节省时间但不执行两次DNS查找吗?
答案 0 :(得分:0)
协议ICMP进行DNS查找
这是不正确的。 ICMP就像IP一样处理地址。使用名称时,应用程序(即ping
程序)将查询操作系统,以将名称转换为IP。
此映射可能以其他方式完成,并且DNS仅是其中的一个。在Unix系统上,请参见/etc/nsswitch.conf
文件,该文件指示如何解决各种问题,例如主机名。通常,它至少是/etc/hosts
文件和DNS查询内容的混合。
因此,通常使用ping
OS类的getaddringo
程序将名称解析为IP地址后,便开始对该地址使用ICMP协议。
当Google响应时,会发生另一个DNS查找?
不,为什么要这样?再说一次,当ICMP发生时,我们已经并且现在仅处于一个地址世界中,那里没有名字。
我可以节省时间但不执行两次DNS查找吗?
是的,但是可能只有一次(DNS使用缓存),并且差异很小,在其他许多方面通常会丢失。
但是有趣的问题是,为什么会有这个问题,我的意思是,您试图尝试这种方式吗?请注意,ping
(因为它使用ICMP)是一个较差的故障排除工具,因为ICMP流量在网络中的配置通常与IP流量完全不同。
(而且您不应该使用www.google.com
作为测试的锚点,例如,可以参考RIPE锚点,但是这又很大程度上取决于您真正的根本问题是什么。)