路由器通常会有多个端口,而多个端口的ip可能又处在不同的网段中,以实现不同网段间的数据转发。对于特定路由拓扑的发现,探测路由的端口还是有一定价值的。
编程思路:
在已经知道路由的某个端口下,构造一个udp数据包
将数据包发送到路由的某个不可用的高端口(使路由回复端口不可达的icmp数据包)
接收数据包,分析是否有端口不可达的icmp数据包
如果有,则检测是否是同一ip返回的数据,如果ip不同,则很大程度上认为此不同的ip即为另一端口(可以多次测量,并保证数据请求的单一性)
当然此种方法存在着很大的不足:
通常情况下,路由的路径相对稳定,返回的icmp通常也就是原来的路由端口(已知)
代码说明:
只简易的实现了基本流程,没有对接收时的等待时间作限制,容易在此处卡掉
对于路由高端口的选择,也只是随机得挑了一个