ser*_*ico 14 networking udp traceroute icmp
根据Stevens(TCP/IP Illustrated),traceroute程序使用增量TTL(1,2,3等)将UDP数据包发送到目标主机,以从ICMP TTL EXPIRED消息中获取中间跃点信息.
" 到达目的地 "条件是ICMP PORT UNREACHABLE消息,因为traceroute寻址一个具有高数字的随机端口(即:不太可能有人在那里听)
所以我的问题是:是否存在技术原因(缺点,RFC等) )使用UDP数据包而不是使用例如ICMP回应请求消息(增加TTL)并使用echo reply answer作为结束条件?
我知道ICMP回应应答可能会被中间的防火墙或其他网络设备过滤掉,但我想这也会发生在UDP数据包上;)
非常感谢
Sergio
ldx*_*ldx 13
它实际上是做"跟踪路由"的"旧"方法.我猜主要的动机是发送普通的UDP数据包不需要特殊的权限,因为发送ICMP数据包(原始套接字或等效的).这就是为什么eg ping通常是setuid to root,这在安全方面是一个很大的风险.
如今也traceroute支持ICMP和TCP探测数据包,因此您更有可能潜入防火墙,这些防火墙更有可能在没有考虑的情况下部署.这也意味着traceroute您的系统上也可能是setuid root.请参阅其手册页,尤其是有关可用方法的部分:http://linux.die.net/man/8/traceroute