研究网络数据包捕获技术

时间:2020-10-06 14:02:48 计算机毕业论文 我要投稿

研究网络数据包捕获技术

摘要:分析了数据包捕获概念和基本原理,以及在共享和交换网络下捕获数据包的实现方法;重点介绍了常见的包捕获机制。


关键词:数据包;捕获;以太网
  
  1 数据包捕获概述
  
  计算机网络在传输数据时,为了保证所有共享网络资源的计算机都能公平、迅速地使用网络,通常把数据分割成若干小块作为传输单位进行发送,这样的传输单位我们通常称之为包,也叫“数据包”。目前有两种方法可以从网络中捕获数据包,一种是采用专用硬件,另一种是利用普通计算机与网络连接的通用硬件?网络适配器,即网卡,由软件来完成数据包的捕获。虽然由软件来捕获数据包的方法在性能上比不上专用硬件,但其实现成本相对更低,且易于修改和更新。基于以上原因,采用软件的捕获方法得到了广泛的使用和认同。
  从网络捕获数据包是所有网络安全产品实现中非常重要的一环,它是安全产品其它功能的基础,而实现网络捕包的一个最重要的条件就是要能够接收网络上所有的数据包。要满足此条件就必须了解数据包在网络上的传输方式。计算机网络从传输方式的角度分为两类:采用点到点连接的网络和采用广播方式的网络。广域网中一般采用点到点连接方式,而几乎所有的局域网都以广播方式作为通信的基础,网上的站点共享信道,一个站点发出的数据包,其他站点均能收到,也就是说,任一台计算机都可以接收到网络中同一个共享域的所有的数据通讯。
  
  2 以太网捕获数据包的实现原理
  
  在以太网上通讯的每张网卡上都拥有一个全球唯一的物理地址,也叫MAC地址。该地址是一个48比特的二进制数。在以太网卡中内建有一个数据包过滤器。该数据包过滤器的作用是保留以本身网卡的MAC地址为通讯目的的数据包和广播数据包,丢弃所有其它无关的数据包,以免CPU对无关的数据报作无谓的处理。这是以太网卡在一般情况下的工作方式。因此在正常情况下,一个合法的网络接口应该只响应这样的两种数据包(帧):
  (1)帧的目标地址具有和本地网络接口相匹配的硬件地址。
  (2)帧的目标地址是“广播地址”(代表所有的接口地址),格式为“FF?FF?FF?FF?FF?FF”。
  在接收到上面两种情况的数据帧时,网卡通过CPU产生中断,操作系统进行中断处理后将帧中包含的数据传送给上层系统进行进一步处理。在其他情况下数据帧将被丢弃而不作处理。
  要想捕获到流经网卡的不属于本主机的数据,必须绕过系统正常工作的处理机制,直接访问网络底层。我们可以把网卡的状态设为“混杂”(promiscuous)模式,当网卡工作在这种“混杂”模式时,该网卡就具备了“广播地址”,它对所接收到的每一个帧都产生一个硬件中断以提醒操作系统处理流经该网卡上的每一个报文包。操作系统通过直接访问链路层,截获相关数据,由应用程序而非上层协议(如IP层、TCP层)对数据过滤处理,这样就可以捕获到流经网卡的所有数据。
  
  3 共享和交换以太网下的捕包
  
  首先从TCP/IP模型的角度来看数据包在局域网内发送的过程:当数据由应用层自上而下地传递时,在网络层形成IP数据报,再向下到达数据链路层,由数据链路层将IP数据报分割为数据帧,增加以太网包头,再向下一层发送。需要说明的是,以太网的包头中包含着本机和目标设备的MAC地址,也就是说,数据链路层的数据帧发送时,是依靠48bits的'以太网地址而非IP地址来确认的,以太网的网卡设备驱动程序不会关心IP数据报中的目的IP地址,它所需要的仅仅是MAC地址。
  3.1 在共享以太网中捕包
  共享式以太网的典型代表是使用10Base?5的总线型网络和以集线器(HUB)为核心的星型网络。集线器工作在物理层。在使用集线器的以太网中,集线器将很多以太网设备集中到一台中心设备上,这些设备都连接到集线器中的同一物理总线结构中。从本质上讲,以集线器为核心的以太网同原先的总线型以太网无根本区别,集线器并不处理或检查其上的通信量,仅通过将一个端口接收的信号重复分发给其他端口来扩展物理介质。所有连接到集线器的设备共享同一介质,其结果是它们也共享同一冲突域、广播和带宽。因此集线器和它所连接的设备组成了一个单一的冲突域。如果一个节点发出一个广播信息,集线器会将这个广播传播给所有同它相连的所有节点,因此它也是一个单一的广播域。