我正在阅读的手册页traceroute
,我注意到它接受一个port
参数。
我以为traceroute
只适用于 ICMP。它对端口有什么作用?
答案1
Traceroute(传统模式)的工作原理是将 UDP 数据包发送到一个理论上未使用的 UDP 端口,更改每个数据包的生存时间 (TTL),以便沿途的路由器注意到它已超时并返回 ICMP 超时消息。然后 Traceroute 会打印出这些消息,直到它收到来自目标主机拒绝连接的消息。
如果默认端口正在使用中,您可以更改端口(由于数据包被默默接受,因此可以防止最后一跳起作用)。
标准 Linux 发行版的 traceroute 手册页中有大量信息。
答案2
这是为了防止 ICMP 在途中的某处被阻止。
例如,您可以使用端口 80(http),因为几乎任何防火墙都会允许它通过。