网络监控系统在获取网络数据后立即对网络数据进行协议分析,为实际的应用功能提供相关的数据。
网络监控系统中的协议分析的具体繁简程度是由网络监控的应用目的决定的。但是不管其应用目的是什么,其协议分析的基础都是TCP/IP协议。首先面对的就是网络以太帧,经过处理成为IP数据包,而后根据实际的需要进行进一步的分析过滤得到TCP或UDP的数据包,在根据具体的应用协议对于数据包的内容进行重新的拼接,整合恢复成实际的数据。以上简单叙述的是基于内容进行监控的实现过程,而对流量进行监控的网络监控应用而言其实现远没有这么复杂,只需要对于协议进行简单的分析,获取数据包的类型、总长度,有时候还需要获取通信相关的IP地址等信息。
网络协议分析的基础就是TCP/IP协议,网络协议是分层实现的,因此在网络监控系统中进行协议分析必然也是分层进行的。
TCP/IP通常被认为是一个四层的协议系统,如图7-3所示。
|
图7-3 TCP/IP协议族的四个层次 |
每一层负责不同的功能,因此在开发网络监控系统应用的时候,就需要根据需要对于不同的层次进行分析。
(1)链路层,有时也称为数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口。链路层的网络数据称为以太帧,可以从链路层的数据中获取通信双方计算机的MAC地址。
(2)网络层,有时也叫互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。在这一层可以获取网络通信双方的IP地址和网络数据包的总长度。
(3)运输层,这一层主要为两台计算机上的应用程序提供端到端的通信。在TCP/IP协议族中,又两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台计算机提供高可靠的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认收到并分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此它可以忽略所有细节。而UDP则为应用层提供一种非常简单的服务。它只是把数据报分组从一台主机发送到另一台,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。在网络监控系统的实现中,如果需要对于应用协议进行分析,必须先要对于运输层的协议进行分析,在执行这个工作的时候,就可以根据要分析的具体协议对于运输层的数据进行处理,例如当网络监控系统仅仅需要对于HTTP数据进行监控的时候,在运输层协议分析的时候就可以将多余的UDP数据过滤掉,这样就减少了实际的数据处理量。
(4)应用层,负责处理特定的应用程序的细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用层程序,HTTP、FTP(文件传输协议)、SMTP(简单邮件传输协议)、Telnet(远程登录)、SNMP(简单网络管理协议)等。
所以,要对于HTTP通信进行监控,需要从链路层进行协议分析,解析以太帧、IP数据包和TCP数据包直到HTTP应用协议。在操作系统中网络数据从进入到到达应用程序之前的内核部分的处理都是在操作系统的协议栈中进行的,网络监控系统完成的功能就是包括了协议栈和应用程序。对于HTTP通信的监控需要经过如图7-4所示的过程。具体的协议解析过程就是一层一层拆去包头对于数据进行整合。
|
图7-4 数据在网络监控系统中的拆包整合过程示意图 |
总之,网络监控的实现原理就是TCP/IP协议,但是和操作系统中的协议栈的实现不同的是,网络监控主要是单向的数据拆包整合的过程,而且,从应用的实际出发网络监控中的协议分析过远比实际的操作系统的协议栈简单。
【责任编辑: 董书 TEL:(010)68476606】 |