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 个数据包也足以确定是否存在高丢包率或抖动问题。