【问题标题】:How does the ping "-n" flag work? AND does it affect response time? (Linux)ping "-n" 标志是如何工作的?它会影响响应时间吗? (Linux)
【发布时间】:2015-11-28 17:41:37
【问题描述】:

我的问题有两个方面,首先我想知道 “-n”标志如何在 Linux 中用于 ping 命令,特别是当我放置“ -n" 标志以及这如何优化查询(或加速响应,如果是的话)? 我还想知道 主机的符号名称是什么? 我需要知道才能理解 -n 标志。

我的研究:

Linux 终端的 ping 手册(man ping)说:“-n:仅数字输出。不会尝试查找主机地址的符号名称”。
从那句话中我已经有了一个疑问:我不知道主机的象征性名称是什么,而且谷歌搜索也没有帮助......

然后我用标志 -n 测试了 ping 命令,没有它,使用的主机名是 www.gmail.com,结果仅在输出的“FROM”部分有所不同:
没有-n 我得到: 来自 mia07s27-in-f165.1e100.net (216.58.219.165) 的 64 个字节
使用 -ni 得到: 来自 216.58.219.165 的 64 个字节
所以我猜测这个特定主机的符号名称是:“mia07s27-in-f165.1e100.net”,但是这是什么意思?和获取这个的过程是怎样的符号名完成了吗?

我的想法:

我有一个关于这可能如何工作的理论:
默认情况下,当我不包含“-n”标志时,ping 程序会向主机发送 Echo 请求数据包,其中会显示我没有使用“-n”标志,因此主机会以 Echo 响应包含有关其符号名称的信息的响应数据包。当我确实使用“-n”标志时,该位将变为 1(或 0,谁知道..),这将指示主机他不必包含有关他的符号名称的额外信息,这反过来会缩短 ping 响应时间,但这个时间并不重要,不会引起注意。

你们能验证我提出的这个理论吗?对吗?

【问题讨论】:

    标签: linux ping hostname


    【解决方案1】:

    我以前从未使用过 -n 标志,但它相当微不足道。符号名称是您将使用的网站的正常名称,因此可以说“google.com”。但是,众所周知,没有“google.com”之类的东西,而是与此相对应的地址(例如 192.168.10.1)。尽管您可能已经知道这一点,但执行此操作的服务使用 DNS,域名服务器。 DNS 将这些符号名称映射到数字地址。
    因此,根据手册页,-n 标志将为您节省 DNS 查询。

    刚刚在我的 Linux 发行版上,我使用 ping google.com ping 了谷歌。结果是这样的:

    PING google.com (173.194.123.6) 56(84) bytes of data.
    64 bytes from lga15s46-in-f6.1e100.net (173.194.123.6): icmp_seq=1 ttl=55 time=13.4 ms
    64 bytes from lga15s46-in-f6.1e100.net (173.194.123.6): icmp_seq=2 ttl=55 time=13.5 ms
    64 bytes from lga15s46-in-f6.1e100.net (173.194.123.6): icmp_seq=3 ttl=55 time=13.5 ms
    

    您可以看到,当您在不带 -n 选项的情况下 ping 时,您将执行 dns 查询来识别传入 Echo 请求数据包的 IP 地址。

    然后,如果您使用ping -n google.com ping google.com,您将看到如下内容:

    PING google.com (173.194.123.101) 56(84) bytes of data.
    64 bytes from 173.194.123.101: icmp_seq=1 ttl=56 time=4.02 ms
    64 bytes from 173.194.123.101: icmp_seq=2 ttl=56 time=4.07 ms
    64 bytes from 173.194.123.101: icmp_seq=3 ttl=56 time=4.01 ms
    

    这里你可以看到,使用-n,我们没有查询dns来搜索IP地址173.194.123.101代表的符号名称。此外,您可以通过时间看到,如果没有此查询,ping 时间实际上缩短了。

    【讨论】:

    • 感谢您的回答。所以你说:“符号名称是你将使用的网站的正常名称,所以我们说'google.com'”,但是检查我上面发布的内容,当我 ping 到“www.gmail.com”时,符号名称在输出是:“mia07s27-in-f165.1e100.net”,所以还不太清楚,因为我永远不会使用该名称来搜索 gmail。另一方面,我认为DNS服务默认只检索主机的IP,但你的意思是它也默认检索主机的符号名,对吗?
    • @SantiagoHitta 我编辑了答案以更详细地显示该过程。请记住,这里有几个 dns 查询。 DNS 仅包含有关哪些符号名称对应于哪些地址的信息,因此如果您有有关地址或名称的信息,则可以找到有关另一个的信息。当你 ping google 时,你正在通过 dns 查找地址,然后当 google 给你发回数据包时,你再次通过 dns 查找 google 的地址。但是,如果您使用 -n 标志,则最后一个查询是可选的。如果您有任何问题,请告诉我:)
    • 我越来越困惑了,我现在已经尝试过对许多主机进行 ping(有和没有 -n),但我之前无法观察到响应时间的差异,现在你展示一个案例响应时间缩短了 3 倍......另一方面,我不明白如果 DNS 避免进行查找,ping 响应时间怎么能更短,不应该只是第一个 ping 需要更长的时间(dns查找只进行一次,然后存储在您的缓存中)?
    • 关于主机的符号名称,正如您在示例中看到的,google.com 的符号名称是“lga15s46-in-f6.1e100.net”。所以我想 DNS 可以映射 google.com-->173.194.123.101 但是 DNS 是如何得到这个奇怪的符号名称的呢?它是否也存储在 DNS 数据库中?
    • @SantiagoHitta 您将 Google 视为一个整体实体,就好像它可以全部存在于一个 IP 上一样。 Google 拥有成百上千台执行各种功能的计算机和 IP 地址,即使在简单的 Web 请求中,DNS 查询也是多重的。通常,您向参考计算机询问域,然后向下钻取直到您拥有主机,因为您可能会通过首先找出州或省的位置,然后是邮政编码,最后是街道和房屋来解析地址。
    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 2023-03-04
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多