[發明專利]一種在驅動層判斷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.szxzyx.cn/pat/books/201010188864.2/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:液體排出頭的制造方法
- 下一篇:護骨膠囊在預防繼發性骨質疏松的新用途





