从网络捕获数据包是所有网络保险产品实现中十分重要的一环,它是平安产品其它功效的基础,而实现网络捕包的一个最主要的条件就是要可能接收网络上所有的数据包。要满意此前提就必须懂得数据包在网络上的传输方式。计算机网络从传输方法的角度分为两类:采用点到点衔接的网络和采用广播方式的网络。广域网中个别采取点到点连接方式,而简直所有的局域网都以广播方式作为通讯的基本,网上的站点共享信道,一个站点发出的数据包,其余站点均能收到,也就是说,任一台盘算机都可以吸收到网络中统一个共享域的所有的数据通信。
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地址。
“网络数据包捕捉技巧研讨”版权归作者所有,转载请著名出处。