为什么我的跟踪路由 (mtr) 在运行时绑定了 UDP 端口?

为什么我的跟踪路由 (mtr) 在运行时绑定了 UDP 端口?

我偶尔会审核计算机上的开放端口,以确保我完全了解我的攻击面。当我今天这样做时,我发现 mtr 正在侦听高 UDP 端口(每次运行时该端口似乎都会改变)。有谁知道为什么会这样?我简要浏览了手册并进行了一些谷歌搜索,但我找不到对此的讨论

重现步骤:

mtr 8.8.8.8在一个窗口中运行,在另一个窗口中运行sudo lsof -i udp | grep mtr

更新

为了澄清我的意思,我的监听 UDP 端口,lsof 的输出如下所示

mtr 31791 user 8u IPv4 221685 0t0 UDP *:39850

答案1

简短的回答:这就是traceroute 的工作原理。

长答案:traceroute 是通过发送初始 TTL 为 1 的 UDP 数据包(大多数 Traceroute 程序默认情况下,通常可以在命令行上修改为使用 TCP 或 ICMP)来进行的,并且它们单调增加 TTL 值。这使得原始发送者能够在 TTL 沿途过期时从每个后续路由器获取“数据包超时消息”,最终(希望)返回“数据包使其安全可靠!”。原始发送者(mtr在本例中)只是侦听这些数据包过期消息,并打印跟踪由于 TTL 过期而终止的每个位置的信息。

相关内容