网络测量和拓扑发现

拓扑发现的方法主要包括两大类:
1、基于中间路由器协作的使用类traceroute工具进行目标网络拓扑识别。
2、不要求中间路由器协作(但要求网络端节点进行网络端到端路径级测量协作),基于层析成像技术的统计学方法。

本文主要讨论前者。
前者测量方法直接简便且生成的拓扑精度高,后者还主要在理论研究层面上。

互联网的拓扑目前主流的方式是从三个层级去进行描述,分别是IP接口级,路由器级,AS级

在IP接口级层面,主要用类Traceroute方法的路由器追踪技术。
此类方法主要是利用IP报头中的TTL字段或者路由记录选项以及ICMP协议中的路由查询功能。
1、利用TTL字段,通常用比IP层稍高的协议来实现
1)基于UDP的traceroute:
     依次发送TTL字段递增的UDP数据包,沿途每个路由器会首先将其减1,如果为0,则回复ICMP超时报文(类型11)。到达目的主机时,为了避免该主机不提供UDP服务而将数据包丢弃且不返回任何信息。Traceroute设计时故意发送至大于30000的目的端口号(UDP协议规定端口号必须小于30000)迫使目标主机返回“端口不可达”的ICMP报文,源端以此作为追踪结束标志。
2)基于ICMP的Traceroute:
    与方法1类似,但源端发送的是一个ICMP类型为8的Echo Request(回显请求)查询报文。中间路由依然返回超时报文,但目的主机回复的是类型为0的ICMP应答报文。
3)基于TCP的SYN
    用此方法来穿透屏蔽掉ICMP的防火墙

常用算法:

2、利用P路由记录选项字段
    将类型为8的ICMP封装在开启路由记录IP数据包里,这个数据包每经过一个路由器,路由器就会在此数据包的IP选项里加入它的地址(通常是出口端口的IP)。到达目的后,目的主机生成一条类型为0的ICMP数据报,这个数据报被封装在新的IP数据包里,新的IP数据包的Options字段中拷贝了刚才收到的IP数据包中的Options字段。

由于IP包头的长度限制,此方法最多只能记录9条记录
关于IP的RR(路由记录)选项可以查看此文:http://blog.csdn.net/chrissata/article/details/21730857


别名解析和匿名路由识别

1、基于探测来判定两个潜在的IP地址是否属于同一台路由器。

1)利用ip包头的16位标识字段。这个标识字段是由源主机产生的,并由一个计数器来维护,每发送一个数据报就加1,RFC规定这个标识和源IP地址必须惟一地定义这个数据报。当这个数据报被分片时,标识就被复制到所有的分片中。而在同一台主机或者路由器上,所有的端口共享上述计数器。所以,当我们对同一路由器的不同端口发送探测报文时,我们可以在不同端口回复的响应报文里获得连续的标识。例如:MIDAR

2)对目标路由器进行诱答的方法,如向目标主机的高数值端口发送UDP探测报文,目标在收到探测报文后,会返回一个ICMP的端口不可达差错报告报文。如果探测地址与返回报文中的源地址不一致的话,那么可以判定这两个IP地址是属于同一台路由器的。

2、基于分析的方法,例如:基于DNS命名习惯等。

你可能感兴趣的:(Network)