为什么 traceroute 的 -q 参数有 10 的限制?

为什么 traceroute 的 -q 参数有 10 的限制?

traceroute 的 -q 参数设置要使用的探测次数。

在 Linux 系统上,这个数字似乎只能达到 10。如果使用更高的值,traceroute 将返回。

每跳探测不超过 10 次

在 Solaris 机器上,可以使用相同的参数,并且可以接受超过 10 个。

我想知道为什么会有这个限制。这只是任意选择吗?

答案1

你不能期望任何系统上的任何程序都会产生相同的输出。每个人都可以自由地修改源代码。

POSIX定义应用程序编程接口 (API) 以及命令行 shell 和实用程序接口,以实现与 Unix 和其他操作系统的变体的软件兼容性。

答案2

它只是在工具的源代码中定义,除其他限制外:

#define MAX_HOPS    255
#define MAX_PROBES  10
#define MAX_GATEWAYS_4  8
#define MAX_GATEWAYS_6  127
#define DEF_HOPS    30
#define DEF_SIM_PROBES  16  /*  including several hops   */
#define DEF_NUM_PROBES  3
#define DEF_WAIT_SECS   5.0
#define DEF_SEND_SECS   0
#define DEF_DATA_LEN    40  /*  all but IP header...  */
#define MAX_PACKET_LEN  65000

没有评论表明原因,所以我猜是“任意选择”。

开发人员可能认为每跳超过 10 个是没有意义的,而且可能不是一个明智的选择。

您是否正在处理高丢包率或抖动问题?即使 10 个数据包也足以确定是否存在高丢包率或抖动问题。

相关内容