[发明专利]一种在驱动层判断TCP/IP包所属进程的方法有效
申请号: | 201010188864.2 | 申请日: | 2010-05-31 |
公开(公告)号: | CN101895529A | 公开(公告)日: | 2010-11-24 |
发明(设计)人: | 郑明 | 申请(专利权)人: | 上海网宿科技股份有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 施浩 |
地址: | 200030 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 驱动 判断 tcp ip 所属 进程 方法 | ||
技术领域
本发明涉及数据包所属进程的判断方法,尤其涉及应用于网络防火墙软件、网络代理软件或者网络加速软件等领域的在驱动层判断TCP/IP包所属进程的方法。
背景技术
网络驱动接口规范的过滤驱动(NDIS filter,Network Driver InterfaceSpecification)位于Windows系统的内核驱动层,能够对数据链路层的包进行过滤和处理。
在网络技术中,需要能够在NDIS过滤驱动中准确区分TCP/IP包所属的进程。现有的方法是通过PsGetCurrentProcessId函数来获得当前活动的数据包所属的进程号。但是网络包的发送和接收存在一定的随机性,NDIS过滤驱动所在层和应用层逻辑上相隔也较远,导致用过滤驱动处理网络包时调用PsGetCurrentProcessId函数获得的PID不一定是当前活动的数据包所属进程号。。在实际测试中经常得到PID是0的结果,这显然不适合某些带有计费性质或者要求准确度的场合。
发明内容
本发明的目的在于解决上述问题,提供了一种在驱动层判断TCP/IP包所属进程的方法,能够实现在NDIS过滤驱动中准确区分包所属的进程。
本发明的技术方案为:本发明揭示了一种在驱动层判断TCP/IP包所属进程的方法,包括:
当某一程序使用Windows套接字接口时,通过某一进程加载分层服务提供者;
分层服务提供者获知该进程的标识号以及该进程打开的源端口;
分层服务提供者根据该进程的标识号判断是否是感兴趣的进程,如果是感兴趣的进程,则向一个专用地址和端口发送UDP通知包;
网络驱动接口规范的中间层驱动/过滤驱动收到UDP通知包,从中提取进程标识号、进程使用的协议、进程打开的源端口,并保存为关联表,然后丢弃UDP通知包;
当该中间层驱动/过滤驱动收到本机发出的其他TCP/IP包时,判断该TCP/IP包中是否包含与关联表中的内容一致的信息,并据此确定TCP/IP包所属的进程的标识号。
根据本发明的在驱动层判断TCP/IP包所属进程的方法的一实施例,在分层服务提供者获知进程打开的源端口的步骤中,其进一步包括:
分层服务提供者通过WSPConnect函数实现进程通过TCP连接远程端口,通过WSPSend函数实现进程通过TCP向远程端口发送数据包,通过WSPSendTo函数实现进程通过UDP向远程端口发送数据包,其中分层服务提供者通过WSPConnect函数、WSPSend函数以及WSPSendTo函数获知进程打开的源端口。
根据本发明的在驱动层判断TCP/IP包所属进程的方法的一实施例,该专用地址和端口是预先设置的。
根据本发明的在驱动层判断TCP/IP包所属进程的方法的一实施例,在判断该TCP/IP包中是否包含与关联表中的内容一致的信息的步骤中,其进一步包括:
通过比较协议、进程打开的源端口的内容来判断该TCP/IP包中是否包含与关联表中的内容一致的信息。
根据本发明的在驱动层判断TCP/IP包所属进程的方法的一实施例,该分层服务提供者是处于用户态应用层的动态链接库。
本发明对比现有技术有如下的有益效果:本发明通过分层服务提供者获知进程ID和进程打开的源端口,将用户感兴趣的进程的ID、协议和打开的源端口以UDP通知包的方式发送到一个专用的地址和端口,网络驱动接口规范的中间层驱动/过滤驱动通过这个专用的地址和端口获取进程ID、协议和打开的源端口等信息,并根据这些信息建立一张关联表,当后续收到本机发出的其他TCP/IP包时,只需判断TCP/IP包中是否包含与关联表中的内容相一致的信息,据此来确定TCP/IP包所属进程。
附图说明
图1是本发明的在驱动层判断TCP/IP包所属进程的方法的实施例的流程图。
图2示出了上述实施例的实现示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1示出了本发明的在驱动层判断TCP/IP包所属进程的方法的实施例,图2是其实现的示意图。请同时参见图1和图2,下面是对本实施例方法中各个步骤的详细描述。
步骤S10:当某一程序使用Windows套接字接口(WinSock API)时,通过某一进程加载分层服务提供者(LSP,Layered Transport Service Providers)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海网宿科技股份有限公司,未经上海网宿科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010188864.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:液体排出头的制造方法
- 下一篇:护骨胶囊在预防继发性骨质疏松的新用途