CN101702121A - Windows系统中程序网络流速控制装置 - Google Patents

Windows系统中程序网络流速控制装置 Download PDF

Info

Publication number
CN101702121A
CN101702121A CN200910193419A CN200910193419A CN101702121A CN 101702121 A CN101702121 A CN 101702121A CN 200910193419 A CN200910193419 A CN 200910193419A CN 200910193419 A CN200910193419 A CN 200910193419A CN 101702121 A CN101702121 A CN 101702121A
Authority
CN
China
Prior art keywords
data
flow speed
speed control
module
application program
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
Application number
CN200910193419A
Other languages
English (en)
Other versions
CN101702121B (zh
Inventor
刘鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Internet Security Software Co Ltd
Original Assignee
Zhuhai Kingsoft Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhuhai Kingsoft Software Co Ltd filed Critical Zhuhai Kingsoft Software Co Ltd
Priority to CN2009101934192A priority Critical patent/CN101702121B/zh
Publication of CN101702121A publication Critical patent/CN101702121A/zh
Application granted granted Critical
Publication of CN101702121B publication Critical patent/CN101702121B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种Windows系统中控制程序网络流速的装置。Windows系统中程序网络流速控制装置包括:流速控制规则设置模块,其内存储有各个应用程序的流速控制信息;内核TDI拦截模块,其在应用程序通过TCP/UDP协议访问网络时获取本地TCP/UDP端口号、应用程序ID、TCP/UDP连接的ID、连接次数、发送连接信息和接收连接信息;数据包拦截模块,其能够拦截到从操作系统网络协议层发往操作系统数据包发送层的IP数据包。本发明的有益效果是可以实现对所有应用程序的网络流速的控制,而且无需占用计算机的存储资源,同时也实现了多个应用程序网络流速的统一管理。

Description

Windows系统中程序网络流速控制装置
技术领域
本发明涉及计算机互联网软件领域,尤其涉及一种Windows系统中控制程序网络流速的装置。
背景技术
随着互联网的发展,越来越多的软件转向互联网化,大量的需要使用网络的程序程序在用户的计算机中运行,它们将在后台使用互联网进行信息收集、自动升级等工作,需要占用很多的网络带宽,并且经常给用户的网络带来非常大的瞬时流量,如果用户此时正在做浏览网页、聊天、玩网络游戏等事情,就会感觉系统很卡,用户的交互感受会非常差。因此需要一种能够限制这些自动进行网络访问的程序的流速,控制他们能够使用的最高网络带宽,保证那些用户经常使用的,需要及时响应的程序总是能够得到一定的网络带宽。
目前常用的流速控制方法中一种方法是让那些后台运行的程序在使用网络时自己控制自己的网络流量,通常一些下载软件会提供这样的功能,如BT,Flashget等常用下载软件。这种方法的局限性在于依赖于使用网络的程序自身的功能,其他没有实现流速控制的软件仍然有可能给用户带来困扰,另一个麻烦在于没有统一的管理所有的程序流速的地方,甚至都不知道有哪些程序访问了网络,即使知道了,用户必须得到一个个程序中去设置每个程序的流速控制,操作起来非常麻烦。
另外一种方法是在操作系统层监控所有的网络发送和接收操作,这样可以对所有的程序的网络访问行为进行控制,用户也有一个统一的地方进行设置,极大的方便了用户的操作。这种方法通常使用的方法是,挂钩所有网络访问的API,拦截所有访问网络的程序的发送和接收操作,发送时对于超过了流量的发送操作,先缓存发送的数据,并阻塞该程序的发送操作,等过一段时间后,满足了程序的流速限制,再将数据发送出去。接收时对于超过了流速限制的接收操作,先缓存接收的数据,并阻塞程序的接收操作,等过一段时间后,满足了程序的流速限制,再将接收的数据发给程序。使用这种方法仍然存在一定的局限性,首先它需要缓存用户程序发送的数据和接收的数据,这无疑会占用计算机的很多资源,另一方面在接收数据的时候仍然要使用操作系统提供的接收数据的方法接收数据,而在操作系统接收数据的过程中,并不能控制某个接收动作的瞬时流速,操作系统总是被动的、近可能快的接收数据,它并不能告诉数据的发送者使用较慢的速率发送数据。
发明内容
本发明的目的是克服现有技术中的不足,提供一种Windows系统中程序网络流速控制装置。该程序网络流速控制装置不仅可以实现多个程序的网络流速统一管理,而且无需占用额外的计算机的资源。Windows系统中程序网络流速控制装置,
其包括:
流速控制规则设置模块,其内存储有各个应用程序的流速控制信息,该流速信息包括应用程序的发送流速控制信息和接收流速控制信息;
内核TDI拦截模块,其在应用程序通过TCP/UDP协议访问网络时获取本地TCP/UDP端口号、应用程序ID、TCP/UDP连接的ID、连接次数、发送连接信息和接收连接信息;其中发送连接信息和接收连接信息均包含已经传输字节数,上次传输时间,传输速率限额,限额有效标志;内核TDI拦截模块,还可以根据上次传输时间、当前系统时间和本次要传输的IP数据包大小计算出本次IP数据包的传输速度;
数据包拦截模块,其能够拦截到从操作系统网络协议层发往操作系统数据包发送层的IP数据包,数据包拦截模块对拦截到的IP数据包反向解析出该IP数据包所对应的应用程序ID,如果从内核TDI拦截模块计算出的该应用程序本次IP数据包的传输速度大于流速控制规则设置模块中设置好的该应用程序的控制流速值,则该数据包被丢弃,否则发送或者接收该数据包。
本发明的有益效果是:本发明Windows系统中程序网络流速控制装置的三大模块分别完成三种主要功能,简单的说,流速控制规则设置模块中保存的是各个应用程序的流速控制信息,即各个程序的最大流速值,如果某个程序的瞬时流速超过该最大流速值是不能进行发包或收包操作的。内核TDI拦截模块是获取每个数据包的属性信息的,比如该数据包对应的应用程序、该数据包的瞬时速度等。数据包拦截模块是用于拦截数据包的,该数据包能否通过由流速控制规则设置模块和TDI拦截模块中的信息进行比对的结果来决定。这样就可以实现对所有应用程序的网络流速的控制,而且无需占用计算机的存储资源,同时也实现了多个应用程序网络流速的统一管理。
附图说明
附图1为本发明Windows系统中程序网络流速控制装置结构图;
附图2为流速控制规则设置模块的结构图;
附图3为内核TDI拦截模块的结构图;
附图4为数据包拦截模块的结构图。
具体实施方式
Windows系统中程序网络流速控制装置,
其包括:
流速控制规则设置模块,其内存储有各个应用程序的流速控制信息,该流速信息包括应用程序的发送流速控制信息和接收流速控制信息;
内核TDI拦截模块,其在应用程序通过TCP/UDP协议访问网络时获取本地TCP/UDP端口号、应用程序ID、TCP/UDP连接的ID、连接次数、发送连接信息和接收连接信息;其中发送连接信息和接收连接信息均包含已经传输字节数,上次传输时间,传输速率限额,限额有效标志;内核TDI拦截模块,还可以根据上次传输时间、当前系统时间和本次要传输的IP数据包大小计算出本次IP数据包的传输速度;
数据包拦截模块,其能够拦截到从操作系统网络协议层发往操作系统数据包发送层的IP数据包,数据包拦截模块对拦截到的IP数据包反向解析出该IP数据包所对应的应用程序ID,如果从内核TDI拦截模块计算出的该应用程序本次IP数据包的传输速度大于流速控制规则设置模块中设置好的该应用程序的控制流速值,则该数据包被丢弃,否则发送或者接收该数据包。
上述装置通过在windows操作系统底层拦截网络数据包的方式,实现对程序的流速控制,通过有选择的丢弃发送数据包和接收数据包,达到限制程序流速的目的。对被限制了流速的使用网络的程序来说,就好象计算机处于一个比较慢的网络中。这种方法的原理是,不论是数据发送的计算机和数据接收的计算机,windows操作系统都会自动根据网络协议进行数据发送和接收的速率进行调整,当检测一个程序发送的流速超过了流速限制时,自动丢弃当前发送的数据包,windows操作系统也就收不到接收数据的windows操作系统发送的接收确认回应包,它将等待一段时间再次重新发送该数据包,如果此时能够符合程序的流速限制,该数据包将被发送,重复该过程就能够达到控制发送流速的效果。接收数据包的时候,检测发个该程序的流速是否超过流速限制,自动丢弃接收的数据包,这时发送数据的windows操作系统检测不到接收确认回应包,它将等待一段时间再次重新发送该数据包,本机接收到该数据包后,如果此时符合程序的流速限制,该数据将被发给windows操作系统,重复该过程就能够达到控制接收流速的效果,因此这种方法既可以监控所有程序的网络访问,又不用缓存数据占用系统资源,并且利用windows操作系统对网络协议的支持自动调整发送和接收的速率。
下面参照附图1-4介绍上述Windows系统中程序网络流速控制装置中三个模块的详细结构。
一、控制规则设置模块,它是用来告诉用户当前应用程序流速信息和让用户设置应用程序流速控制信息的模块。它包含用户输入模块,流速控制显示模块和流速控制信息收集模块。
a)用户输入模块,是用户输入某个应用程序流速的模块,应用程序的流速控制信息由用户通过用户输入模块设定。
b)流速控制显示模块,用来显示当前正在访问网络的程序的流速和流速控制信息的界面,该模块作为本发明装置的附加功能,可以使用户直观的看到各个程序访问网络的情况,以及各个程序的网络流速设定值。
c)流速控制信息收集模块:用来收集用户设置的应用程序的流速控制信息,这些流速控制信息存储在流速控制信息表中。流速控制信息收集模块为内核TDI拦截模块提供程序流速控制的信息;并且在控制规则设置模块退出的时候负责将应用程序的流速控制信息保存起来,在控制规则设置模块下次启动时,自动读取上次保存的应用程序流速控制信息。流速控制信息表中的每项数据定义为数据一,它包含:应用程序ID、发送速率限额、发送限额有效标志、接收速率限额、接收限额有效标志。需要指出的是,流速控制信息表中一般会有多项数据一,各项数据一的值是不同的,并不是说所有的数据一都代表同一个值,下文所述的数据二到数据七也是同样的道理。
二、内核TDI拦截模块,拦截应用程序访问网络的动作,为数据包拦截模块提供是否允许某个数据包发送或接收的指令信息。它包含TCP过滤驱动模块、UDP过滤驱动模块、流速数据管理模块和流速计算模块。
a)TCP过滤驱动模块,通过实现windows操作系统标准的与TCP协议相关的TDI接口,TCP过滤驱动模块能够拦截所有通过TCP协议访问网络的应用程序建立TCP连接和结束TCP连接的请求,并且解析出这些请求所对应的本地端口号,应用程序的ID,TCP连接的ID和应用程序的路径等信息。实现标准TDI接口的方法可以参考MCROSOFT MSDN文档,此文档为本领域公知文档,在此不做赘述。
b)UDP过滤驱动模块,通过实现windows操作系统标准的与UDP协议相关的TDI接口,它能够拦截所有通过UDP协议访问网络的应用程序建立UDP连接和结束UDP连接的请求,并且解析出这些请求所对应的端口号,应用程序的ID,UDP连接的ID和应用程序的路径等信息。实现标准TDI接口的方法可以参考MCROSOFT MSDN文档。
c)流速数据管理模块,管理当前正在访问网络的应用程序的流速信息。流速数据管理模块管理了如下的数据列表:
i.TCP端口协议映射表:表示当前windows操作系统中所有通过TCP协议打开的TCP连接的端口列表和端口所对应的应用程序ID,表中每项数据定义为数据二,它包含:TCP连接的ID、本地TCP端口,应用程序ID。
ii.UDP端口协议映射表:表示当前windows操作系统中所有通过UDP协议打开的UDP连接的端口列表和端口所对应的应用程序ID,表中每项数据定义为数据三,它包含:UDP连接的ID、本地UDP端口,应用程序ID。
iii.流速控制信息表:其与所述流速控制规则设置模块中的流速控制信息表内容一致;是流速信息收集模块传递给该模块的流速控制信息。
iv.活动流速控制表:表示当前所有正在使用网络进行通信的应用程序所对应的流速控制信息列表。表中的每项数据定义为数据四,它包含:应用程序ID,连接计数(有些应用程序可能通过不同端口多次进行网络连接),发送连接信息,接收连接信息。数据四中的发送连接信息和接收连接信息都均包含已经传输字节数,上次传输时间,传输速率限额,限额有效标志;在此将已经传输字节数,上次传输时间,传输速率限额,限额有效标志这些信息定义为数据五。
d)流速计算模块,计算某个数据包发送时,应用程序当前访问网络的流速,并能给出是否超出流速限制的信息。
三、数据包拦截模块,拦截所有系统发送和接收到的IP数据包,并能够通过拦截这些IP数据包达到控制应用程序的流速的目的。数据包拦截模块包括NDIS中间层驱动模块和数据包协议解析模块。
a)NDIS中间层驱动模块,通过实现windows操作系统标准的NDIS中间层接口,实现对所有系统发送和接收的IP数据包的拦截。实现标准NDIS中间层接口的方法可以参考MCROSOFTMSDN文档。
b)数据包协议解析模块,通过解析NDIS中间层驱动模块拦截到的IP数据包,得出IP数据包所对应的网络协议,端口号和数据包的大小并得到数据六,数据六包括IP数据包ID,协议类型、协议端口号、IP数据包传输方向、IP数据包的大小、windows系统当前的时间。
下面介绍本发明Windows系统中程序网络流速控制装置的运行原理。
操作系统的网络访问体系结构从逻辑上大致可以分成如图1所示的3个部分:操作系统网络访问API层,操作系统网络协议层,操作系统数据包发送层,其中操作系统网络访问API层是操作系统提供给应用程序访问网络的API接口,应用程序使用这些API直接访问网络,而不需要担心具体的硬件环境,也不需要关心使用的通讯协议的具体细节。操作系统网络协议层为应用程序封装了大部分的标准的网络协议的实现,操作系统在这一层也不需要关心具体的硬件环境,仅仅实现通信协议,如TCP,UDP,IP等通信协议,并将封装好的数据包发送给数据包发送层。而操作系统数据包发送层则负责针对不同的硬件环境,将数据包发送到具体的硬件网络上。同时操作系统在网络协议层建立数据包与应用层序之间的映射关系,操作系统通过协议与端口建立这种映射关系,应用程序在访问网络的时候必须指定一个相应的协议类型与该协议相关的端口,如果没有指定,那么操作系统自动指定一个,就目前的标准来说,TCP与UDP协议都允许有65536个端口。
如前文所述,我们需要在操作系统将数据发送到网络上之前进行拦截,同时判断流速限制,因此我们也需要将数据包与应用程序进行关联,内核TDI拦截模块正是做这样的事情,并将应用程序如何与数据包进行映射的数据传递给数据包拦截模块。数据包拦截模块拦截到数据包后,反向解析数据包的内容,解析出数据包所对应的协议类型与端口信息,再根据内核TDI拦截模块提供的协议和端口与应用程序之间的映射关系为数据包找到对应用程序ID,根据应用程序的ID从流速控制模块中查询该应用程序的流速限制,并判断该数据包的发送和接收是否超过了限制,如果没有超过就发送或接收该数据包,否则直接丢弃该数据包。
以下是本发明Windows系统中程序网络流速控制装置的运行过程。
一、操作系统启动时,内核TDI拦截模块与数据包拦截模块启动。
二、内核TDI拦截模块启动时,启动TCP过滤驱动模块、UDP过滤驱动模块、流量数据管理模块和流量计算模块。
三、数据包拦截模块启动时,启动数据包解析模块。
四、流速控制模块启动,并且启动用户输入模块、流量控制显示模块和流量控制信息收集模块。
内核TDI拦截模块运行过程解析:
A、如果某个应用程序使用TCP协议访问网络,在该应用程序访问网络之前,windows操作系统为本次网络访问分配一个TCP连接,在windows系统中被称为套接字(SOCKET)。应用程序先使用该套接字使用windows操作系统提供的网络访问API为该TCP建立连接,此时TDI拦截模块中的TCP过滤驱动模块会拦截到应用程序建立TCP连接的请求,它能够得到本次TCP连接请求的本地TCP端口,TCP连接的ID(SOCKET所对应的windows操作系统网络连接内核对象的地址),并且能够使用windows操作系统提供的内核API根据TCP连接的ID得到本次TCP连接请求的所对应的应用程序ID(应用程序的全路径)。记得到一项数据二,并将数据二传递给流速数据管理模块。
B、流速数据管理模块得到数据二后,将数据二保存到TCP端口协议映射表中,并且根据应用程序ID在活动流速控制表中查找对应的数据项,如果找到,将数据项中的连接计数加1;如果没有找到,创建一项新的数据四,将本项新的数据四中的应用程序ID初始化为本步骤所述数据二中的应用程序ID,连接计数初始化为1,发送数据信息和接收数据信息中的传输速率以及上次发送时间初始化为零。并从流速控制信息表中查找应用程序ID对应的流速控制信息,如果查找不到流速控制信息就将本项数据四中的发送数据信息和接收数据信息中的传输限额初始化为零,限额标志都初始化为否(代表不进行流速限制);如果查找到,就将数据四中的发送数据信息和接收数据信息初始化初始化为应用程序ID所对应的数据一中的限额信息。本项数据四初始化完毕后加入到活动流速控制表中。
C、应用程序结束使用TCP协议访问网络,此时TDI拦截模块中的TCP过滤驱动模块会拦截到应用程序结束TCP连接的请求,它能够得到本次TCP连接请求的本地TCP端口,本次TCP连接请求的TCP连接的ID,并且能够使用windows操作系统提供的内核API根据TCP连接的ID得到本次TCP连接请求的所对应的应用程序ID,即得到另一项数据二,然后将该另一项数据二传递给流速数据管理模块。
D、流速数据管理模块得到所述另一项数据二后,根据另一项数据二中的TCP连接的ID查找到TCP端口协议映射表中的对应的数据项,并且从TCP端口协议映射表中删除,根据另一项数据二中的应用程序ID,在活动流速控制表中查找对应的数据项,将数据项中的连接计数减1,如果数据项中的连接计数已经为零,那么从活动流速控制表中删除该数据项。
a、如果某个应用程序使用UDP协议访问网络,在该应用程序访问网络之前,windows操作系统为本次网络访问分配一个UDP连接,在windows系统中被称为套接字(SOCKET)。应用程序先使用该套接字使用windows操作系统提供的网络访问API为该UDP建立连接,此时TDI拦截模块中的UDP过滤驱动模块会拦截到应用程序建立UDP连接的请求,它能够得到本次UDP连接请求的本地UDP端口,UDP连接的ID(SOCKET所对应的windows操作系统网络连接内核对象的地址),并且能够使用windows操作系统提供的内核API根据UDP连接的ID得到本次UDP连接请求的所对应的应用程序ID(应用程序的全路径)。于是得到数据三,并将该数据三传递给流速数据管理模块。
b、流速数据管理模块得到数据三后,将数据三保存到UDP端口协议映射表中,并且根据应用程序ID在活动流速控制表中查找对应的数据项,如果找到,将数据项中的连接计数加1;如果没有找到,创建一项数据四,将本项数据四中的应用程序ID初始化为数据一中的应用程序ID,连接计数初始化为1,发送数据信息和接收数据信息中的传输速率以及上次发送时间初始化为零。并从流速控制信息表中查找应用程序对应的流速控制信息,如果查找不到就将本项数据四中的发送数据信息和接收数据信息中的传输限额初始化为零,限额标志都初始化为否;如果查找到,就将数据四中的发送数据信息和接收数据信息初始化初始化为应用程序ID所对应的数据一中的限额信息。本项数据四初始化完毕后加入到活动流速控制表中。
c、应用程序结束使用UDP协议访问网络,此时TDI拦截模块中的UDP过滤驱动模块会拦截到应用程序结束UDP连接的请求,它能够得到本次UDP连接请求的本地UDP端口,本次UDP连接请求的UDP连接的ID,并且能够使用windows操作系统提供的内核API根据UDP连接的ID得到本次UDP连接请求的所对应的应用程序ID,即得到另一项数据三,并且将该另一项数据三传递给流速数据管理模块。
d、流速数据管理模块得到该另一项数据三后,根据另一项数据三中的UDP连接的ID查找到UDP端口协议映射表中的对应的数据项,并且从UDP端口协议映射表中删除。根据另一项数据三中的应用程序ID,在活动流速控制表中查找对应的数据项,如果找到,将数据项中的连接计数减1,如果数据项中的连接计数已经为零,那么从活动流速控制表中删除该数据项。
无论应用程序使用TCP还是UDP协议访问网络,流速数据管理模块每次更新活动流速控制表,就将新的活动流速控制表传递给流速控制规则设置模块。需要说明的是,活动流速控制表不仅在应用程序开始访问或者结束访问网络的时候更新,在应用程序访问网络过程中,随着数据包的发送和接收,活动流速控制表中的数据五中的已传输字节数和上次传输时间信息也是在改变的,这些信息的改变就反映出应用程序网络连接的流速,因此,活动流速控制表一般是只要有应用程序进行网络连接都在更新的。
流速控制规则设置模块收到活动流速控制表后,传递给流速控制信息收集模块。
流速控制信息收集模块收到活动流速控制表后,保存活动流速控制表,并且将活动流速控制表和流速控制信息表传递给流速控制显示模块。
流速控制显示模块收到活动流速控制表和流速控制信息表后,保存活动流速控制表和流速控制信息表,并且根据活动流速控制表和流速控制信息表显示当前系统中程序的流速和流速控制信息。
数据包拦截模块与所述内核TDI拦截模块交互运行过程解析:
一、NDIS中间层驱动模块启动后,当windows操作系统需要发送和接收IP数据包时,就会通知NDIS中间层驱动模块,并且将要传输的IP数据包的内容传递给NDIS中间层驱动模块。NDIS中间层驱动模块收到IP数据包后将该IP数据包传递给数据包协议解析模块,并且要求数据包协议解析模块解析IP数据包所对应的协议和端口,并且生成数据六,数据六包含:IP数据包ID,协议类型、协议端口、数据包传输方向、数据包的大小、windows系统当前的时间。然后将数据六传递给TDI内核拦截模块,要求TDI内核拦截模块传递回数据七,该数据七包含IP数据包ID、是否允许IP数据包发送或者接收标志。如果数据七中的是否允许IP数据包发送或者接收标志为是,则发送或者接收该向数据七中IP数据包ID所对应的IP数据包,否则不发送或者接收该向数据七中IP数据包ID所对应的IP数据包;也就是根据数据七的结果来允许或者拒绝该数据包的发送或者接收。
二、TDI内核拦截模块收到数据六后,将数据六传递给流速数据管理模块,并且要求流速数据管理模块返回数据七,然后将数据七返回给NDIS中间层驱动模块。
三、流速数据管理模块收到数据六后,根据数据六中的协议类型从TCP端口协议映射表或者从UDP端口协议映射表中根据数据六中的端口信息查找对应的数据项。如果能够查找到数据项,根据数据项中的应用程序ID从活动流速控制表中查找对应的数据项数据四。并且将数据四与数据六传递给流速计算模块,并要求流速计算模块返回数据七,将数据七返回给TDI内核拦截模块。
四、流速计算模块收到数据四和数据六后,首先根据数据六中的数据包传输方向确定出是发送数据还是接收数据,如果是发送数据,则从数据四中取出发送数据信息,结合数据六计算出数据七,并且根据数据六,计算出新的发送数据信息,保存到数据四中;如果是接收数据,则从数据四中取出接收数据信息,结合数据六计算出数据七,并且根据数据六,计算出新的接收数据信息,保存到数据四中;然后将数据七返回给流速数据管理模块,并且将新的数据四传递给流速数据管理模块,流速数据管理模块收到新的数据四后保存到活动流速控制表中。
流速控制规则设置模块与所述内核TDI拦截模块交互运行过程解析:
一、用户选中流速控制显示模块中的一项,并且选择设置流速控制命令,流速控制显示模块将用户选中项取出应用程序ID,从流速控制信息表中对应的数据项数据一,如果查找不到,就生成一个空的数据二,并且用应用程序ID初始化数据一;将数据一传递给用户输入模块。
二、用户输入模块收到数据一后,将根据数据一显示应用程序所对应的流速控制信息,等待用户输入控制信息,用户输入完成后,生成新的数据一,将新的数据一传递给流速控制信息收集模块。
三、流速控制信息收集模块收到用户输入模块发送的数据一后,将数据一保存在流速控制信息表中。然后将新的流速控制信息表和保存的活动流速信息表传递给流速控制显示模块,并要求流速控制显示模块重新显示出当前系统中的程序的流速信息和流速控制信息。并且将新的流速控制信息表传递给TDI内核拦截模块。
四、TDI内核拦截模块收到流速控制信息收集模块发送过来的流速控制信息表后,更新自己保存的流速控制信息表。
以上实施例描述仅用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,应涵盖在本发明的权利要求范围当中。

Claims (8)

1.Windows系统中程序网络流速控制装置,
其特征在于,包括
流速控制规则设置模块,其内存储有各个应用程序的流速控制信息,该流速信息包括应用程序的发送流速控制信息和接收流速控制信息;内核TDI拦截模块,其在应用程序通过TCP/UDP协议访问网络时获取本地TCP/UDP端口号、应用程序ID、TCP/UDP连接的ID、连接次数、发送连接信息和接收连接信息;其中发送连接信息和接收连接信息均包含已经传输字节数,上次传输时间,传输速率限额,限额有效标志;内核TDI拦截模块,还可以根据上次传输时间、当前系统时间和本次要传输的IP数据包大小计算出本次IP数据包的传输速度;
数据包拦截模块,其能够拦截到从操作系统网络协议层发往操作系统数据包发送层的IP数据包,数据包拦截模块对拦截到的IP数据包反向解析出该IP数据包所对应的应用程序ID,如果从内核TDI拦截模块计算出的该应用程序本次IP数据包的传输速度大于流速控制规则设置模块中设置好的该应用程序的控制流速值,则该数据包被丢弃,否则发送或者接收该数据包。
2.根据权利要求1所述Windows系统中程序网络流速控制装置,其特征在于,
流速控制规则设置模块,其包括一流速控制信息收集模块,流速控制信息收集模块用来收集设置好的应用程序的流速控制信息,流速控制信息存储在流速控制信息表中;流速控制信息表为所述内核TDI拦截模块提供应用程序的流速控制信息,并且在流速控制规则设置模块退出时负责将应用程序的流速控制信息保存起来,在流速控制规则设置模块下次启动时,自动读取上次保存的应用程序的流速控制信息;流速控制信息表中的每项数据定义为数据一,数据一包含:应用程序ID、发送速率限额、发送限额有效标志,接收速率限额,接收限额有效标志;
内核TDI拦截模块,其拦截应用程序访问网络的动作,为下述数据包拦截模块提供是否允许某个数据包发送或接收的指令信息;内核TDI拦截模块进一步包括:
TCP过滤驱动模块,其拦截所有通过TCP协议访问网络的应用程序建立TCP连接和结束TCP连接的请求,并且解析出这些请求所对应的本地TCP端口号,应用程序的ID,应用程序的路径和TCP连接的ID信息;所述本地TCP端口号,应用程序的ID,和TCP连接的ID信息定义为数据二;
UDP过滤驱动模块,其拦截所有通过UDP协议访问网络的应用程序建立UDP连接和结束UDP连接的请求,并且解析出这些请求所对应的本地UDP端口号,应用程序的ID,应用程序的路径和UDP连接的ID信息;所述本地UDP端口号,应用程序的ID和UDP连接的ID信息定义为数据三;
流速数据管理模块,管理当前正在访问网络的应用程序的流速信息,流速数据管理模块管理了如下的数据列表:
i.TCP端口协议映射表:表示当前windows操作系统中所有通过TCP协议打开的TCP连接的端口列表和端口所对应的应用程序ID,表中每项数据为数据二,即包含:TCP连接的ID、本地TCP端口,应用程序ID;
ii.UDP端口协议映射表:表示当前windows操作系统中所有通过UDP协议打开的UDP连接的端口列表和端口所对应的应用程序ID,表中每项数据为数据三,即包含:UDP连接的ID、本地UDP端口,应用程序ID;
iii.流速控制信息表:其与所述流速控制规则设置模块中的流速控制信息表内容一致;
iv.活动流速控制表:表示当前所有正在使用网络进行通信的应用程序所对应的流速控制信息列表;活动流速控制表中的每项数据定义为数据四,数据四包含:应用程序ID,连接计数,发送连接信息,接收连接信息;数据四中的发送连接信息和接收连接信息都均包含已经传输字节数,上次传输时间,传输速率限额,限额有效标志;已经传输字节数,上次传输时间,传输速率限额,限额有效标志这些信息定义为数据五;
流速计算模块,计算某个数据包发送时,应用程序当前当前访问网络的流速,并能给出是否超出流速限制的信息;
数据包拦截模块,其拦截所有Windows系统发送和接收到的IP数据包,数据包拦截模块包括NDIS中间层驱动模块和数据包协议解析模块;
NDIS中间层驱动模块通过实现windows操作系统标准的NDIS中间层接口,实现对所有Windows系统发送和接收的IP数据包的拦截;
数据包协议解析模块通过解析NDIS中间层驱动模块拦截到的IP数据包,得出IP数据包所对应的网络协议类型,端口号和数据包的大小并得到数据六,数据六包括IP数据包ID,协议类型、协议端口号、IP数据包传输方向、IP数据包的大小、windows系统当前的时间。
3.根据权利要求2所述Windows系统中程序网络流速控制装置,其特征在于,
所述流速控制规则设置模块还包括用户输入模块,应用程序的流速控制信息由用户通过用户输入模块设定。
4.根据权利要求3所述Windows系统中程序网络流速控制装置,其特征在于,
所述流速控制规则设置模块还包括流速控制显示模块,流速控制显示模块用来显示当前正在访问网络的程序的流速和流速控制信息,当前正在访问网络的程序的流速和流速控制信息分别由所述活动流速控制表和流速计算模块提供。
5.根据权利要求4所述Windows系统中程序网络流速控制装置,其特征在于,
所述内核TDI拦截模块与数据包拦截模块在Windows操作系统启动时启动。
6.根据权利要求4所述Windows系统中程序网络流速控制装置,其特征在于,
内核TDI拦截模块运行过程是:
A、如果某个应用程序使用TCP协议访问网络,内核TDI拦截模块中的TCP过滤驱动模块拦截到应用程序建立TCP连接的请求,并得到本次TCP连接请求的本地TCP端口,TCP连接的ID和应用程序ID,即得到一项数据二,然后将该项数据二传递给流速数据管理模块;
B、流速数据管理模块得到数据二后,将数据二保存到TCP端口协议映射表中,并且根据应用程序ID在活动流速控制表中查找对应的数据项,如果找到,将数据项中的连接计数加1;如果没有找到,创建一项数据四,将本项数据四中的应用程序ID初始化为本步骤所述数据二中的应用程序ID,连接计数初始化为1,发送数据信息和接收数据信息中的传输速率以及上次发送时间初始化为零,并从流速控制信息表中查找应用程序ID对应的流速控制信息,如果查找不到流速控制信息就将本项数据四中的发送数据信息和接收数据信息中的传输限额初始化为零,限额标志都初始化为否;如果查找到,就将数据四中的发送数据信息和接收数据信息初始化为应用程序ID所对应的数据一中的限额信息,本项数据四初始化完毕后加入到活动流速控制表中;
C、应用程序结束使用TCP协议访问网络,内核TDI拦截模块中的TCP过滤驱动模块会拦截到应用程序结束TCP连接的请求,并得到本次TCP连接请求的本地TCP端口,TCP连接的ID和应用程序ID,即得到另一项数据二,然后将该另一项数据二传递给流速数据管理模块;
D、流速数据管理模块得到另一项数据二后,根据另一项数据二中的TCP连接的ID查找到TCP端口协议映射表中的对应的数据项,并且从TCP端口协议映射表中删除,根据另一项数据二中的应用程序ID,在活动流速控制表中查找对应的数据项,将数据项中的连接计数减1,如果数据项中的连接计数已经为零,那么从活动流速控制表中删除该数据项;
a、如果某个应用程序使用UDP协议访问网络,内核TDI拦截模块中的UDP过滤驱动模块拦截到应用程序建立UDP连接的请求,并得到本次UDP连接请求的本地UDP端口,UDP连接的ID和应用程序ID,即得到一项数据二,然后将该项数据二传递给流速数据管理模块;
b、流速数据管理模块得到步骤a中所述数据二后,将步骤a中所述数据二保存到UDP端口协议映射表中,并且根据应用程序ID在活动流速控制表中查找对应的数据项,如果找到,将数据项中的连接计数加1;如果没有找到,创建一项数据四,将本项数据四中的应用程序ID初始化为数据二中的应用程序ID,连接计数初始化为1,发送数据信息和接收数据信息中的传输速率以及上次发送时间初始化为零;并从流速控制信息表中查找应用程序对应的流速控制信息,如果查找不到就将本项数据四中的发送数据信息和接收数据信息中的传输限额初始化为零,限额标志都初始化为否;如果查找到,就将数据四中的发送数据信息和接收数据信息初始化初始化为应用程序ID所对应的数据一中的限额信息,本项数据四初始化完毕后加入到活动流速控制表中;
c、应用程序结束使用UDP协议访问网络,内核TDI拦截模块中的UDP过滤驱动模块拦截到应用程序结束UDP连接的请求,并得到本次UDP连接请求的本地UDP端口,UDP连接的ID和应用程序ID,即得到另一项数据三,然后将该另一项数据三传递给流速数据管理模块;
d、流速数据管理模块得到另一项数据三后,根据另一项数据三中的UDP连接的ID查找到UDP端口协议映射表中的对应的数据项,并且从UDP端口协议映射表中删除;根据另一项数据三中的应用程序ID,在活动流速控制表中查找对应的数据项,将数据项中的连接计数减1,如果数据项中的连接计数已经为零,那么从活动流速控制表中删除该数据项;
无论应用程序使用TCP还是UDP协议访问网络,流速数据管理模块每次更新活动流速控制表,就将新的活动流速控制表传递给流速控制规则设置模块;
流速控制规则设置模块收到活动流速控制表后,传递给流速控制信息收集模块;
流速控制信息收集模块收到活动流速控制表后,保存活动流速控制表,并且将活动流速控制表和流速控制信息表传递给流速控制显示模块;
流速控制显示模块收到活动流速控制表和流速控制信息表后,保存活动流速控制表和流速控制信息表,并且根据活动流速控制表和流速控制信息表显示当前系统中程序的流速和流速控制信息。
7.根据权利要求6所述Windows系统中程序网络流速控制装置,其特征在于,
数据包拦截模块与所述内核TDI拦截模块交互运行过程是:
(1)NDIS中间层驱动模块启动后,当windows操作系统需要发送和接收IP数据包时,通知NDIS中间层驱动模块,并且将要传输的IP数据包的内容传递给NDIS中间层驱动模块,NDIS中间层驱动模块收到IP数据包后将该IP数据包传递给数据包协议解析模块,并且要求数据包协议解析模块解析IP数据包所对应的协议和端口,并且生成一项数据六,然后将该项数据六传递给TDI内核拦截模块,要求TDI内核拦截模块传递回一项数据七,该项数据七包含IP数据包ID、是否允许IP数据包发送或者接收标志,如果数据七中的是否允许IP数据包发送或者接收标志为是,则发送或者接收该向数据七中IP数据包ID所对应的IP数据包,否则不发送或者接收该向数据七中IP数据包ID所对应的IP数据包;
(2)TDI内核拦截模块收到数据六后,将数据六传递给流速数据管理模块,并且要求流速数据管理模块返回数据七,然后将数据七返回给NDIS中间层驱动模块;
(3)流速数据管理模块收到数据六后,根据数据六中的协议类型从TCP端口协议映射表或者从UDP端口协议映射表中根据数据六中的端口信息查找对应的数据项,如果能够查找到数据项,根据数据项中的应用程序ID从活动流速控制表中查找对应的数据项数据四,并且将数据四与数据六传递给流速计算模块,并要求流速计算模块返回数据七,将数据七返回给TDI内核拦截模块;
(4)流速计算模块收到数据四和数据六后,首先根据数据六中的数据包传输方向确定出是发送数据还是接收数据,如果是发送数据,则从数据四中取出发送数据信息,结合数据六计算出数据七,并且根据数据六,计算出新的发送数据信息,保存到数据四中;如果是接收数据,则从数据四中取出接收数据信息,结合数据六计算出数据七,并且根据数据六,计算出新的接收数据信息,保存到数据四中;然后将数据七返回给流速数据管理模块,并且将新的数据四传递给流速数据管理模块,流速数据管理模块收到新的数据四后保存到活动流速控制表中。
8.根据权利要求7所述Windows系统中程序网络流速控制装置,其特征在于,
所述流速控制规则设置模块与所述内核TDI拦截模块交互运行的过程是:
(1)用户选中流速控制显示模块中的一项,并且选择设置流速控制命令,流速控制显示模块将从用户选中项取出应用程序ID,从流速控制信息表中找到对应项的数据一,如果查找不到,就生成一项空的数据一,并且用该应用程序ID初始化数据一;将数据一传递给用户输入模块;
(2)用户输入模块收到数据一后,将根据数据一显示应用程序所对应的流速控制信息,等待用户输入控制信息,用户输入完成后,生成新的数据一,将新的数据一传递给流速控制信息收集模块;
(3)流速控制信息收集模块收到用户输入模块发送的数据一后,将数据一保存在流速控制信息表中,然后将新的流速控制信息表和保存的活动流速信息表传递给流速控制显示模块,并要求流速控制显示模块重新显示出当前系统中的程序的流速信息和流速控制信息,并且将新的流速控制信息表传递给TDI内核拦截模块;
(4)TDI内核拦截模块收到流速控制信息收集模块发送过来的流速控制信息表后,更新自己保存的流速控制信息表。
CN2009101934192A 2009-10-29 2009-10-29 Windows系统中程序网络流速控制装置 Active CN101702121B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101934192A CN101702121B (zh) 2009-10-29 2009-10-29 Windows系统中程序网络流速控制装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101934192A CN101702121B (zh) 2009-10-29 2009-10-29 Windows系统中程序网络流速控制装置

Publications (2)

Publication Number Publication Date
CN101702121A true CN101702121A (zh) 2010-05-05
CN101702121B CN101702121B (zh) 2013-02-06

Family

ID=42157038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101934192A Active CN101702121B (zh) 2009-10-29 2009-10-29 Windows系统中程序网络流速控制装置

Country Status (1)

Country Link
CN (1) CN101702121B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102647358A (zh) * 2012-04-24 2012-08-22 北京星网锐捷网络技术有限公司 报文发送和处理方法、装置、客户端设备和网络设备
CN102739665A (zh) * 2012-06-25 2012-10-17 成都卫士通信息产业股份有限公司 一种实现网络虚拟安全域的方法
CN103001830A (zh) * 2012-12-18 2013-03-27 上海博科资讯股份有限公司 一种计算客户端和中间层之间的网络传递速度的方法
CN105099730A (zh) * 2014-04-23 2015-11-25 北京奇虎科技有限公司 终端设备、基于终端设备的网络流量统计方法及系统
CN105099896A (zh) * 2015-09-18 2015-11-25 上海上讯信息技术股份有限公司 邮件传输方法及用于邮件传输的设备
WO2015192497A1 (zh) * 2014-06-20 2015-12-23 中兴通讯股份有限公司 通信链路的发送方法、装置及终端
WO2016169328A1 (zh) * 2015-04-24 2016-10-27 中兴通讯股份有限公司 一种实现流量控制的方法和客户端
CN106936846A (zh) * 2017-04-10 2017-07-07 北京明朝万达科技股份有限公司 一种基于wfp平台的网络访问控制方法及装置
CN106961393A (zh) * 2017-03-06 2017-07-18 北京安博通科技股份有限公司 网络会话中udp报文的检测方法及装置
CN108833559A (zh) * 2018-06-25 2018-11-16 杭州迪普科技股份有限公司 一种视频数据的缓存与分发的方法及装置
CN109005227A (zh) * 2018-07-28 2018-12-14 安徽捷兴信息安全技术有限公司 一种手机网络包与手机应用的对应方法及装置
CN111866100A (zh) * 2020-07-06 2020-10-30 北京天空卫士网络安全技术有限公司 一种控制数据传输速率的方法、装置和系统
CN115002186A (zh) * 2022-05-17 2022-09-02 深信服科技股份有限公司 网络信息采集方法、装置、电子设备及可读存储介质
CN115102884A (zh) * 2022-06-23 2022-09-23 青岛联众芯云科技有限公司 一种用于工控机应用程序的远程数据流量统计方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7260062B2 (en) * 2002-12-20 2007-08-21 International Business Machines Corporation Flow control in network devices
CN1933443A (zh) * 2006-08-18 2007-03-21 中山大学 一种高速网络中业务感知系统
US7801045B2 (en) * 2007-06-19 2010-09-21 Alcatel Lucent Hierarchical rate limiting with proportional limiting
CN101286937B (zh) * 2008-05-16 2011-01-05 成都市华为赛门铁克科技有限公司 一种网络流量控制方法、装置及系统

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102647358A (zh) * 2012-04-24 2012-08-22 北京星网锐捷网络技术有限公司 报文发送和处理方法、装置、客户端设备和网络设备
CN102739665A (zh) * 2012-06-25 2012-10-17 成都卫士通信息产业股份有限公司 一种实现网络虚拟安全域的方法
CN102739665B (zh) * 2012-06-25 2015-03-11 成都卫士通信息产业股份有限公司 一种实现网络虚拟安全域的方法
CN103001830A (zh) * 2012-12-18 2013-03-27 上海博科资讯股份有限公司 一种计算客户端和中间层之间的网络传递速度的方法
CN105099730A (zh) * 2014-04-23 2015-11-25 北京奇虎科技有限公司 终端设备、基于终端设备的网络流量统计方法及系统
CN105099730B (zh) * 2014-04-23 2018-08-10 北京奇安信科技有限公司 终端设备、基于终端设备的网络流量统计方法及系统
WO2015192497A1 (zh) * 2014-06-20 2015-12-23 中兴通讯股份有限公司 通信链路的发送方法、装置及终端
WO2016169328A1 (zh) * 2015-04-24 2016-10-27 中兴通讯股份有限公司 一种实现流量控制的方法和客户端
CN106161266A (zh) * 2015-04-24 2016-11-23 中兴通讯股份有限公司 一种实现流量控制的方法和客户端
CN105099896A (zh) * 2015-09-18 2015-11-25 上海上讯信息技术股份有限公司 邮件传输方法及用于邮件传输的设备
CN106961393A (zh) * 2017-03-06 2017-07-18 北京安博通科技股份有限公司 网络会话中udp报文的检测方法及装置
CN106961393B (zh) * 2017-03-06 2020-11-27 北京安博通科技股份有限公司 网络会话中udp报文的检测方法及装置
CN106936846A (zh) * 2017-04-10 2017-07-07 北京明朝万达科技股份有限公司 一种基于wfp平台的网络访问控制方法及装置
CN108833559A (zh) * 2018-06-25 2018-11-16 杭州迪普科技股份有限公司 一种视频数据的缓存与分发的方法及装置
CN108833559B (zh) * 2018-06-25 2020-12-29 杭州迪普科技股份有限公司 一种视频数据的缓存与分发的方法及装置
CN109005227A (zh) * 2018-07-28 2018-12-14 安徽捷兴信息安全技术有限公司 一种手机网络包与手机应用的对应方法及装置
CN111866100A (zh) * 2020-07-06 2020-10-30 北京天空卫士网络安全技术有限公司 一种控制数据传输速率的方法、装置和系统
CN115002186A (zh) * 2022-05-17 2022-09-02 深信服科技股份有限公司 网络信息采集方法、装置、电子设备及可读存储介质
CN115102884A (zh) * 2022-06-23 2022-09-23 青岛联众芯云科技有限公司 一种用于工控机应用程序的远程数据流量统计方法及装置
CN115102884B (zh) * 2022-06-23 2023-07-21 青岛联众芯云科技有限公司 一种用于工控机应用程序的远程数据流量统计方法及装置

Also Published As

Publication number Publication date
CN101702121B (zh) 2013-02-06

Similar Documents

Publication Publication Date Title
CN101702121B (zh) Windows系统中程序网络流速控制装置
US11522734B2 (en) Method for controlling a remote service access path and relevant device
CN101841470B (zh) 一种基于Linux的底层数据包的高速捕获方法
CN102739473B (zh) 一种应用智能网卡的网络检测方法
CN100550763C (zh) 网络设备的管理方法及网络管理系统
KR101028138B1 (ko) 가정 네트워크 중의 지능화 정보 가전 및 그 서브 설비에 어드레스를 분배하는 방법
US9774651B2 (en) Method and apparatus for rapid data distribution
CN106534178B (zh) RapidIO网络通用套接字的实现系统及方法
CN104052759A (zh) 一种物联网即加即用技术的实现系统
CN101150487A (zh) 一种零拷贝网络报文发送方法
CN101873337A (zh) 一种基于rt8169千兆网卡和Linux操作系统的零拷贝数据捕获技术
CN104468704B (zh) 支持内容中心网络的Web服务器系统及处理方法
CN103220285A (zh) 泛在业务环境下基于RESTful接口的接入系统
CN102158406B (zh) 面向计算机网络链路的智能选路方法
CN101158936A (zh) 一种节点之间的数据传输系统和装置及方法
CN102638487A (zh) 大型遥测地震仪高性能数据传输方法
CN104158675B (zh) 计算节点部署方法、处理节点、控制器及系统
CN108228309A (zh) 基于虚拟机的数据包发送和接收方法及装置
CN106292518A (zh) 远程plc监控和调试系统及方法
CN103368872A (zh) 数据包转发系统和方法
CN107423118A (zh) 分布式计算数据转发方法和装置
CN106131162A (zh) 一种基于iocp机制实现网络服务代理的方法
CN103002047A (zh) 一种rpc式web服务架构方法
CN101141482A (zh) 网络资源管理系统及方法
EP1109355A2 (en) Cable modem link layer bridge

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
ASS Succession or assignment of patent right

Owner name: KINGSOFT CORPORATION LIMITED

Free format text: FORMER OWNER: ZHUHAI KINGSOFT SOFTWARE CO., LTD.

Effective date: 20140902

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 519015 ZHUHAI, GUANGDONG PROVINCE TO: 100085 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20140902

Address after: Kingsoft No. 33 building, 100085 Beijing city Haidian District Xiaoying Road

Patentee after: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd.

Address before: Jinshan computer Building No. 8 Jingshan Hill Road, Lane 519015 Zhuhai Jida Lianshan Guangdong city of Zhuhai Province

Patentee before: Zhuhai Kingsoft Software Co.,Ltd.

EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20100505

Assignee: Zhuhai Kingsoft Software Co.,Ltd.

Assignor: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd.

Contract record no.: 2014990000778

Denomination of invention: Device for controlling network flow of program in Windows system

Granted publication date: 20130206

License type: Common License

Record date: 20140926

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model