CN101895529A - 一种在驱动层判断tcp/ip包所属进程的方法 - Google Patents
一种在驱动层判断tcp/ip包所属进程的方法 Download PDFInfo
- Publication number
- CN101895529A CN101895529A CN2010101888642A CN201010188864A CN101895529A CN 101895529 A CN101895529 A CN 101895529A CN 2010101888642 A CN2010101888642 A CN 2010101888642A CN 201010188864 A CN201010188864 A CN 201010188864A CN 101895529 A CN101895529 A CN 101895529A
- Authority
- CN
- China
- Prior art keywords
- tcp
- service provider
- identification number
- packet
- bag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种在驱动层判断TCP/IP包所属进程的方法,能够实现在NDIS过滤驱动中准确区分包所属的进程。其技术方案为:方法包括:当某一程序使用Windows套接字接口时,通过某一进程加载分层服务提供者;分层服务提供者获知该进程的标识号以及该进程打开的源端口;分层服务提供者根据该进程的标识号判断是否是感兴趣的进程,如果是感兴趣的进程,则向一个专用地址和端口发送UDP通知包;网络驱动接口规范的中间层驱动/过滤驱动收到UDP通知包,从中提取进程标识号、进程使用的协议、进程打开的源端口,并保存为关联表,然后丢弃UDP通知包;当该中间层驱动/过滤驱动收到本机发出的其他TCP/IP包时,判断该TCP/IP包中是否包含与关联表中的内容一致的信息,并据此确定TCP/IP包所属的进程的标识号。
Description
技术领域
本发明涉及数据包所属进程的判断方法,尤其涉及应用于网络防火墙软件、网络代理软件或者网络加速软件等领域的在驱动层判断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)。
LSP就形式上而言是用户态应用层上的一个DLL(动态链接库)。通常,WinSockSPI即Service Provider Interface(服务提供者接口),用于提供WinSock服务,分为传输提供(transport providers)和域提供(namespace proviers)两种服务提供者,LSP是SPI的一种应用。
LSP被正确安装后,一旦有应用程序调用了WinSock API,这个LSP就会在适当的时机被应用程序加载,并插在应用程序和基协议模块之间,起到过滤作用。
步骤S11:分层服务提供者获知进程的标识号(ID)以及进程所打开的源端口。
如果进程使用TCP连接一个远程机器的端口,一般会先调用WinSock API中的connect或者WSAConnect函数,而这两个函数都会在内部调用LSP中的WSPConnect函数。在发数据时,会调用WinSock API的send或者WSASend函数,这两个函数也会在内部调用LSP中的WSPSend函数。
如果进程要使用UDP向远程机器的端口发送数据包,一般会调用WinSock API中的sendto或者WSASendTo函数,这两个函数都会调用LSP中的WSPSendTo函数。
而LSP就是通过WSPConnect函数、WSPSend函数和WSPSendTo函数来获取进程打开的源端口。
步骤S12:分层服务提供者根据进程的标识号判断是否是感兴趣的进程,如果是感兴趣的进程,则向一个专用地址和端口发送UDP通知包。
感兴趣的进程是用户自行选择和预设的,专用地址和端口是预先设置的,这些地址和端口通常是正常数据传输的情况下不会使用到的地址和端口,例如1.1.1.1:1111。这一步骤的设计有如下的优点:用户态的LSP可能被加载到低权限用户程序的进程空间,用常规的打开驱动设备句柄的通信方式会因为没有权限而失败。即使有权限打开驱动设备句柄,也会使句柄被打开多次,导致在卸载NDIS过滤器时要关闭这些句柄才可以卸载。因此使用UDP协议,将端口信息发送到专用地址和端口以使NDIS过滤器可以接收这些信息。
步骤S13:网络驱动接口规范的(NDIS,Network Driver Interface Specification)中间层驱动/过滤驱动收到UDP通知包,从中提取进程标识号、进程使用的协议、进程打开的源端口,并保存为关联表,然后丢弃UDP通知包。
NT 5系统(Win2000、XP、Win2003)的网络过滤驱动称为NDIS IMD(网络驱动接口规范的中间层驱动),NT 6系统(Vista、Win2008、Win7、Win2008R2)的网络过滤驱动称为NDIS filter(网络驱动接口规范的过滤驱动)。本步骤中所保存的关联表维护的是进程到包端口的关联。
步骤S14:当该中间层驱动/过滤驱动收到本机发出的其他TCP/IP包时,判断该TCP/IP包中是否包含与关联表中的内容一致的信息,并据此确定TCP/IP包所属进程的标识号。
通过比较协议、进程打开的源端口的内容来判断该TCP/IP包中是否包含与关联表中的内容一致的信息。如果在关联表中有吻合项,则说明是感兴趣的进程发出的包,在关联表中可以进一步查到进程的ID。
上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
Claims (5)
1.一种在驱动层判断TCP/IP包所属进程的方法,包括:
当某一程序使用Windows套接字接口时,通过某一进程加载分层服务提供者;
分层服务提供者获知该进程的标识号以及该进程打开的源端口;
分层服务提供者根据该进程的标识号判断是否是感兴趣的进程,如果是感兴趣的进程,则向一个专用地址和端口发送UDP通知包;
网络驱动接口规范的中间层驱动/过滤驱动收到UDP通知包,从中提取进程标识号、进程使用的协议、进程打开的源端口,并保存为关联表,然后丢弃UDP通知包;
当该中间层驱动/过滤驱动收到本机发出的其他TCP/IP包时,判断该TCP/IP包中是否包含与关联表中的内容一致的信息,并据此确定TCP/IP包所属的进程的标识号。
2.根据权利要求1所述的在驱动层判断TCP/IP包所属进程的方法,其特征在于,在分层服务提供者获知进程打开的源端口的步骤中,其进一步包括:
分层服务提供者通过WSPConnect函数实现进程通过TCP连接远程端口,通过WSPSend函数实现进程通过TCP向远程端口发送数据包,通过WSPSendTo函数实现进程通过UDP向远程端口发送数据包,其中分层服务提供者通过WSPConnect函数、WSPSend函数以及WSPSendTo函数获知进程打开的源端口。
3.根据权利要求1所述的在驱动层判断TCP/IP包所属进程的方法,其特征在于,该专用地址和端口是预先设置的。
4.根据权利要求1所述的在驱动层判断TCP/IP包所属进程的方法,其特征在于,在判断该TCP/IP包中是否包含与关联表中的内容一致的信息的步骤中,其进一步包括:
通过比较协议、进程打开的源端口的内容来判断该TCP/IP包中是否包含与关联表中的内容一致的信息。
5.根据权利要求1所述的在驱动层判断TCP/IP包所属进程的方法,其特征在于,该分层服务提供者是处于用户态应用层的动态链接库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010188864.2A CN101895529B (zh) | 2010-05-31 | 2010-05-31 | 一种在驱动层判断tcp/ip包所属进程的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010188864.2A CN101895529B (zh) | 2010-05-31 | 2010-05-31 | 一种在驱动层判断tcp/ip包所属进程的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101895529A true CN101895529A (zh) | 2010-11-24 |
CN101895529B CN101895529B (zh) | 2014-05-21 |
Family
ID=43104596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010188864.2A Active CN101895529B (zh) | 2010-05-31 | 2010-05-31 | 一种在驱动层判断tcp/ip包所属进程的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101895529B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102438016A (zh) * | 2011-12-13 | 2012-05-02 | 北京星网锐捷网络技术有限公司 | 获知报文所属进程的方法、访问控制方法、装置及设备 |
CN102647358A (zh) * | 2012-04-24 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 报文发送和处理方法、装置、客户端设备和网络设备 |
CN102685104A (zh) * | 2011-03-16 | 2012-09-19 | 三星Sds株式会社 | 用于包过滤的基于片上系统的装置及其包过滤方法 |
CN107666474A (zh) * | 2016-07-30 | 2018-02-06 | 华为技术有限公司 | 一种网络报文处理方法、装置及网络服务器 |
CN108366074A (zh) * | 2018-03-08 | 2018-08-03 | 北京明朝万达科技股份有限公司 | 一种网络数据包防劫持方法及装置 |
CN110266732A (zh) * | 2019-07-24 | 2019-09-20 | 北京众谊越泰科技有限公司 | 一种WFP+NDISFilter组合驱动实现网络底层过滤的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1735056A (zh) * | 2004-08-10 | 2006-02-15 | 普天信息技术研究院 | 一种传输接入点及其构成的传输平台及进程间通信的方法 |
EP1234459B1 (en) * | 1999-12-16 | 2007-08-08 | Telefonaktiebolaget LM Ericsson (publ) | System and method in a gprs network for interfacing a base station system with a serving gprs support node |
US7275175B2 (en) * | 2004-07-22 | 2007-09-25 | International Business Machines Corporation | Method and apparatus for high-speed network adapter failover |
CN101211309A (zh) * | 2006-12-29 | 2008-07-02 | 中兴通讯股份有限公司 | 嵌入式系统中进程异常跟踪定位的方法 |
-
2010
- 2010-05-31 CN CN201010188864.2A patent/CN101895529B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1234459B1 (en) * | 1999-12-16 | 2007-08-08 | Telefonaktiebolaget LM Ericsson (publ) | System and method in a gprs network for interfacing a base station system with a serving gprs support node |
US7275175B2 (en) * | 2004-07-22 | 2007-09-25 | International Business Machines Corporation | Method and apparatus for high-speed network adapter failover |
CN1735056A (zh) * | 2004-08-10 | 2006-02-15 | 普天信息技术研究院 | 一种传输接入点及其构成的传输平台及进程间通信的方法 |
CN101211309A (zh) * | 2006-12-29 | 2008-07-02 | 中兴通讯股份有限公司 | 嵌入式系统中进程异常跟踪定位的方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102685104A (zh) * | 2011-03-16 | 2012-09-19 | 三星Sds株式会社 | 用于包过滤的基于片上系统的装置及其包过滤方法 |
CN102438016A (zh) * | 2011-12-13 | 2012-05-02 | 北京星网锐捷网络技术有限公司 | 获知报文所属进程的方法、访问控制方法、装置及设备 |
CN102438016B (zh) * | 2011-12-13 | 2015-07-22 | 北京星网锐捷网络技术有限公司 | 获知报文所属进程的方法、访问控制方法、装置及设备 |
CN102647358A (zh) * | 2012-04-24 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 报文发送和处理方法、装置、客户端设备和网络设备 |
CN107666474A (zh) * | 2016-07-30 | 2018-02-06 | 华为技术有限公司 | 一种网络报文处理方法、装置及网络服务器 |
CN107666474B (zh) * | 2016-07-30 | 2021-04-20 | 华为技术有限公司 | 一种网络报文处理方法、装置及网络服务器 |
US11218570B2 (en) | 2016-07-30 | 2022-01-04 | Huawei Technologies Co., Ltd. | Network packet processing method and apparatus and network server |
US11689646B2 (en) | 2016-07-30 | 2023-06-27 | Huawei Technologies Co., Ltd. | Network packet processing method and apparatus and network server |
CN108366074A (zh) * | 2018-03-08 | 2018-08-03 | 北京明朝万达科技股份有限公司 | 一种网络数据包防劫持方法及装置 |
CN108366074B (zh) * | 2018-03-08 | 2021-02-05 | 北京明朝万达科技股份有限公司 | 一种网络数据包防劫持方法及装置 |
CN110266732A (zh) * | 2019-07-24 | 2019-09-20 | 北京众谊越泰科技有限公司 | 一种WFP+NDISFilter组合驱动实现网络底层过滤的方法 |
CN110266732B (zh) * | 2019-07-24 | 2020-05-08 | 北京众谊越泰科技有限公司 | 一种WFP+NDISFilter组合驱动实现网络底层过滤的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101895529B (zh) | 2014-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101895529B (zh) | 一种在驱动层判断tcp/ip包所属进程的方法 | |
EP2676523B1 (en) | Method and system of providing internet protocol (ip) data communication in a nfc peer to peer communication environment | |
US10972432B2 (en) | Flexible network security system and method for permitting trusted process | |
US9948611B2 (en) | Packet tagging for improved guest system security | |
US10547553B2 (en) | Stateful connection tracking | |
US7644188B2 (en) | Distributing tasks in data communications | |
WO2007105051A3 (en) | Method, mobile terminal and computer program product for interworking via a card application toolkit | |
US20060182143A1 (en) | System and method for filtering communications packets on electronic devices | |
CN107360182B (zh) | 一种用于嵌入式的主动网络防御系统及其防御方法 | |
CN102195972B (zh) | 利用wfp拦截网络数据的方法 | |
US11455160B1 (en) | Simultaneous operation of a networked device using multiple disparate networks | |
CN109937563B (zh) | 用于通信网络的方法、和电子监测单元 | |
CN111245776A (zh) | 车载数据传输方法、装置、设备和存储介质 | |
CN102761534A (zh) | 实现媒体接入控制层透明代理的方法和装置 | |
US20130326541A1 (en) | Enabling legacy applications to achieve end-to-end communication with corresponding legacy device services | |
WO2005104478A3 (en) | Network interface card with rdma capability | |
CN107528923A (zh) | 一种网络适配器的数据传输方法及网络适配器 | |
US20060268867A1 (en) | TCP/IP reception processing circuit and semiconductor integrated circuit implementing the same | |
CN107547505A (zh) | 一种报文处理方法及装置 | |
CN102655476B (zh) | 一种互联网协议流转发方法,及设备 | |
CN102685243A (zh) | 一种轻量级tcp/ip协议栈的实现方法 | |
TW201114221A (en) | Method and system of smart detection and recovery | |
CN104346204B (zh) | 基于移动终端的应用软件处理方法、系统及移动终端 | |
CN103067360A (zh) | 程序网络行为识别方法及系统 | |
CN113453278B (zh) | 一种基于5g upf下的tcp包分段组包方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee |
Owner name: CHINANETCENTER CO., LTD. Free format text: FORMER NAME: SHANGHAI WANGSU SCIENCE + TECHNOLOGY CO., LTD. |
|
CP03 | Change of name, title or address |
Address after: 200030 Shanghai city Xuhui District Xietu Road No. 2899 A Kuangchi Cultural Square Building 5 floor Patentee after: ChinaNetCenter Co., Ltd. Address before: 200030 Shanghai Xietu Road No. 15 building 2669 Patentee before: Shanghai Wangsu Science & Technology Co., Ltd. |