五元组在数据报封装中的位置
在各种网络设备的检测技术中,经常会用到五元组的技术来定位一个传输层的会话。那么,我们在一个交换或纯路由(无NAT)的环境下做对比分析时,也可以利用五元组来快速的将不同位置处抓取的数据流关联起来,因为在交换或纯路由的环境下,数据报头的五元组信息不会被更改。
 应用层会话关联——应用层关键字段关联
由于应用层数据是端系统来处理的,因此绝大多数的中间设备在转发数据包时,仅仅会针对数据包的链路层、网络层和传输层的信息进行更改(例如更改数据包的MAC地址信息,NAT会更改数据包的IP地址信息、源端口信息等),一般不会对应用层的数据进行修改。那么,我们就可以利用这个应用层数据的一些特征进行关联。
例如,HTTP访问时的各种请求(get、post),其在经过复杂的网络时,不论其数据报头怎么变化,其应用层的请求内容总是不会变的,如下图所示:
HTTP的POST请求图示
我们就可以根据这些应用层字段对不通位置的数据报文进行关联。
另外,有些应用层协议本身就带有一些标识同一应用层会话的参数,这些参数是辅助应用程序识别应用层会话的,我们可以利用这次参数来关联我们需要分析的数据包。
例如,ping程序的数据包,其在ICMP封装结构中有identifer和sequence number两个字段,如下图所示:
ping的icmp报文结构
这两个值在网络交互过程中一般不会改变,那么,我们就可以利用这两个值来关联分析在网络不同位置处所抓取到的数据报文是否是同一数据报文。
关联分析法的应用范围
关联分析法主要在以下几种情形中应用:
 用于对比分析
在做对比分析之前,必须要把相应的数据包或者数据流关联起来,否则,就失去了可比性,因此,关联分析是对比分析的前提和基础,关联分析经常用于对比分析之前。
 用于应用交互的关联
我们在上面分析了应用层会话关联的原理,其中讲到了一些应用在应用层协议封装中会包含一些标识字段,通过这些字段,应用程序之间可以标识出不同的应用层会话。
在实际的环境中,可能由于某些原因导致应用出现异常,我们在做网络分析时,需要了解应用在数据报层面交互的所有细节,以确定可能导致故障的原因。这个时候,我们就要将应用程序服务器端与客户端交互的数据报文关联起来进行分析。
例如,如果我们要分析具体哪一个ping的数据包被丢弃了,那么,我们就可以根据ping请求与ping应答数据包结构中的identifer和sequence number字段关联出具体被丢弃的ping请求报文。