发明名称 一种局域网DHCP数据包过滤方法
摘要 本发明公开了一种局域网DHCP数据包过滤方法,该方法通过在网卡驱动与协议驱动之间的中间层对局域网中发送到DHCP客户机的网络数据包进行过滤,过滤步骤包括网络数据包采集、网络数据包筛选、DHCP数据包分析、网络数据包处理四个步骤,从发送到DHCP客户机的数据包中逐步分离出DHCP数据包,并对DHCP数据包进行分析,接收指定DHCP服务器发送的合法数据包,丢弃非法DHCP服务器发送的数据包,从而实现DHCP客户机从指定的DHCP服务器获取IP地址,防止非法DHCP服务器为DHCP客户机分配IP地址,同时本发明还公开了一种局域网DHCP数据包过滤系统。
申请公布号 CN103888481B 申请公布日期 2016.09.28
申请号 CN201410160521.3 申请日期 2014.04.21
申请人 黑龙江中医药大学 发明人 马俊
分类号 H04L29/06(2006.01)I;H04L29/12(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 代理人
主权项 一种局域网DHCP数据包过滤方法,其特征在于,包括以下步骤:(1)网络数据包采集过程,即在DHCP客户机网卡驱动和协议驱动之间的中间层侦听并截获局域网中发送到本机的所有数据包,并对每个数据包进行逐一的采集,首先,在内存中分配一个大于或等于局域网中最大数据包长度的内存缓冲区来存放所截获的数据包,然后将所述的内存缓冲区内容清零,最后将所截获的数据包内容分块拷贝到所述的内存缓冲区中;(2)网络数据包筛选过程,即首先取出所述的内存缓冲区第13字节和第14字节的值,如果第13字节的值等于8,并且第14字节的值等于0,那么所述的数据包为IP数据包,然后取出所述的内存缓冲区第24字节的值,如果第24字节的值等于17,说明所述的IP数据包为UDP数据包,此时需要计算所述的IP数据包的长度,IP数据包长度的计算方法由如下两个公式产生:a)<img file="FSB0000155928890000011.GIF" wi="520" he="117" />b)x<sub>k+1</sub>=(x<sub>k</sub>‑(x<sub>k</sub>mod2))/2 k=(1,2,3)所述的公式中a)与公式b)中mod代表取两个数相除的余数,其中公式a)中,L<sub>ip</sub>代表所述的IP数据包的长度,k代表变量,取值范围为1到4之间的四个正整数,∑代表对其后面的多项式进行求和操作,求和项数为变量k的取值范围,x<sub>k</sub>中当k等于1时,即x<sub>1</sub>代表所述的内存缓冲区第15字节的值,x<sub>k</sub>中当k等于2时,即x<sub>2</sub>的值,由x<sub>1</sub>的值代入公式b)中得出,以此类推,x<sub>3</sub>与x<sub>4</sub>的值分别由x<sub>2</sub>与x<sub>3</sub>的值代入公式b)中得出,公式b)中变量k的取值范围为1到3之间的三个正整数;最后继续判断所述的内存缓冲区偏移量为15+L<sub>ip</sub>、16+L<sub>ip</sub>、17+L<sub>ip</sub>、18+L<sub>ip</sub>字节的值,如果所述的内存缓冲区偏移量为15+L<sub>ip</sub>字节的值等于0,并且所述的内存缓冲区偏移量为16+L<sub>ip</sub>字节的值等于67,并且所述的内存缓冲区偏移量为17+L<sub>ip</sub>字节的值等于0,并且所述的内存缓冲区偏移量为18+L<sub>ip</sub>字节的值等于68,说明所述的UDP数据包为DHCP数据包,需要进行下一步的分析,其它数据包将直接被提交到步骤(4)中等待处理;(3)DHCP数据包分析:如果所述的数据包为DHCP数据包,那么首先判断所述的内存缓冲区第27、28、29、30字节的值,查看这四个字节的值是否分别与要接收的DHCP服务器IP地址中“.”型分隔符所分开的四组数字对应相等,如果一一对应相等,则所述的DHCP数据包为合法DHCP服务器所发送的,反之为非法DHCP服务器所发送的,最后将所述的DHCP数据包提交到步骤(4)中等待处理;(4)网络数据包处理:根据步骤(2)与步骤(3)中对所述的数据包做出的分析与判断,接收发送到DHCP客户机的合法DHCP数据包和其它类型的数据包,其余的非法DHCP数据包随即被丢弃,不被DHCP客户机所接收,最后释放所述的内存缓冲区。
地址 150040 黑龙江省哈尔滨市香坊区和平路24号