Windows系统中程序网络流速控制装置的制作方法

文档序号:7715735阅读:380来源:国知局
专利名称: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接口的方法可以参考MCR0S0FT 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,连接计数初始化为l,发送数据信息和接收数据信 息中的传输速率以及上次发送时间初始化为零。并从流速控制信息表中查找应用程序ID 对应的流速控制信息,如果查找不到流速控制信息就将本项数据四中的发送数据信息和接 收数据信息中的传输限额初始化为零,限额标志都初始化为否(代表不进行流速限制);如 果查找到,就将数据四中的发送数据信息和接收数据信息初始化初始化为应用程序ID所对应的数据一中的限额信息。本项数据四初始化完毕后加入到活动流速控制表中。
C、应用程序结束使用TCP协议访问网络,此时TDI拦截模块中的TCP过滤驱动模 块会拦截到应用程序结束TCP连接的请求,它能够得到本次TCP连接请求的本地TCP端口 , 本次TCP连接请求的TCP连接的ID,并且能够使用windows操作系统提供的内核API根据 TCP连接的ID得到本次TCP连接请求的所对应的应用程序ID,即得到另一项数据二,然后 将该另一项数据二传递给流速数据管理模块。 D、流速数据管理模块得到所述另一项数据二后,根据另一项数据二中的TCP连接 的ID查找到TCP端口协议映射表中的对应的数据项,并且从TCP端口协议映射表中删除, 根据另一项数据二中的应用程序ID,在活动流速控制表中查找对应的数据项,将数据项中 的连接计数减l,如果数据项中的连接计数已经为零,那么从活动流速控制表中删除该数据 项。 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,连接计数初始化为l,发送数据信息和接收数据信息中的传输速率以及 上次发送时间初始化为零。并从流速控制信息表中查找应用程序对应的流速控制信息,如 果查找不到就将本项数据四中的发送数据信息和接收数据信息中的传输限额初始化为零, 限额标志都初始化为否;如果查找到,就将数据四中的发送数据信息和接收数据信息初始 化初始化为应用程序ID所对应的数据一中的限额信息。本项数据四初始化完毕后加入到 活动流速控制表中。 c、应用程序结束使用UDP协议访问网络,此时TDI拦截模块中的UDP过滤驱动模 块会拦截到应用程序结束UDP连接的请求,它能够得到本次UDP连接请求的本地UDP端口 , 本次UDP连接请求的UDP连接的ID,并且能够使用windows操作系统提供的内核API根据 UDP连接的ID得到本次UDP连接请求的所对应的应用程序ID,即得到另一项数据三,并且 将该另一项数据三传递给流速数据管理模块。 d、流速数据管理模块得到该另一项数据三后,根据另一项数据三中的UDP连接的 ID查找到UDP端口协议映射表中的对应的数据项,并且从UDP端口协议映射表中删除。根 据另一项数据三中的应用程序ID,在活动流速控制表中查找对应的数据项,如果找到,将数 据项中的连接计数减l,如果数据项中的连接计数已经为零,那么从活动流速控制表中删除 该数据项。 无论应用程序使用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内核拦截模块收到流速控制信息收集模块发送过来的流速控制信息表后,更新自己保存的流速控制信息表。 以上实施例描述仅用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,应涵盖在本发明的权利要求范围当中。
权利要求
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,连接计数初始化为l,发送数据信息和接收数据信息中的传输速 率以及上次发送时间初始化为零,并从流速控制信息表中查找应用程序ID对应的流速控 制信息,如果查找不到流速控制信息就将本项数据四中的发送数据信息和接收数据信息中 的传输限额初始化为零,限额标志都初始化为否;如果查找到,就将数据四中的发送数据信 息和接收数据信息初始化为应用程序ID所对应的数据一中的限额信息,本项数据四初始化完毕后加入到活动流速控制表中;C、 应用程序结束使用TCP协议访问网络,内核TDI拦截模块中的TCP过滤驱动模块会 拦截到应用程序结束TCP连接的请求,并得到本次TCP连接请求的本地TCP端口 , TCP连接 的ID和应用程序ID,即得到另一项数据二,然后将该另一项数据二传递给流速数据管理模 块;D、 流速数据管理模块得到另一项数据二后,根据另一项数据二中的TCP连接的ID查找 到TCP端口协议映射表中的对应的数据项,并且从TCP端口协议映射表中删除,根据另一项 数据二中的应用程序ID,在活动流速控制表中查找对应的数据项,将数据项中的连接计数 减l,如果数据项中的连接计数已经为零,那么从活动流速控制表中删除该数据项;a、 如果某个应用程序使用UDP协议访问网络,内核TDI拦截模块中的UDP过滤驱动模 块拦截到应用程序建立UDP连接的请求,并得到本次UDP连接请求的本地UDP端口 , UDP连 接的ID和应用程序ID,即得到一项数据二,然后将该项数据二传递给流速数据管理模块;b、 流速数据管理模块得到步骤a中所述数据二后,将步骤a中所述数据二保存到UDP 端口协议映射表中,并且根据应用程序ID在活动流速控制表中查找对应的数据项,如果找 到,将数据项中的连接计数加1 ;如果没有找到,创建一项数据四,将本项数据四中的应用 程序ID初始化为数据二中的应用程序ID,连接计数初始化为l,发送数据信息和接收数据 信息中的传输速率以及上次发送时间初始化为零;并从流速控制信息表中查找应用程序对 应的流速控制信息,如果查找不到就将本项数据四中的发送数据信息和接收数据信息中的 传输限额初始化为零,限额标志都初始化为否;如果查找到,就将数据四中的发送数据信息 和接收数据信息初始化初始化为应用程序ID所对应的数据一中的限额信息,本项数据四 初始化完毕后加入到活动流速控制表中;c、 应用程序结束使用UDP协议访问网络,内核TDI拦截模块中的UDP过滤驱动模块拦 截到应用程序结束UDP连接的请求,并得到本次UDP连接请求的本地UDP端口 , UDP连接 的ID和应用程序ID,即得到另一项数据三,然后将该另一项数据三传递给流速数据管理模 块;d、 流速数据管理模块得到另一项数据三后,根据另一项数据三中的UDP连接的ID查找 到UDP端口协议映射表中的对应的数据项,并且从UDP端口协议映射表中删除;根据另一项 数据三中的应用程序ID,在活动流速控制表中查找对应的数据项,将数据项中的连接计数 减l,如果数据项中的连接计数已经为零,那么从活动流速控制表中删除该数据项;无论应用程序使用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内核拦截模块收到流速控制信息收集模块发送过来的流速控制信息表后,更新 自己保存的流速控制信息表。
全文摘要
本发明涉及一种Windows系统中控制程序网络流速的装置。Windows系统中程序网络流速控制装置包括流速控制规则设置模块,其内存储有各个应用程序的流速控制信息;内核TDI拦截模块,其在应用程序通过TCP/UDP协议访问网络时获取本地TCP/UDP端口号、应用程序ID、TCP/UDP连接的ID、连接次数、发送连接信息和接收连接信息;数据包拦截模块,其能够拦截到从操作系统网络协议层发往操作系统数据包发送层的IP数据包。本发明的有益效果是可以实现对所有应用程序的网络流速的控制,而且无需占用计算机的存储资源,同时也实现了多个应用程序网络流速的统一管理。
文档编号H04L12/56GK101702121SQ200910193419
公开日2010年5月5日 申请日期2009年10月29日 优先权日2009年10月29日
发明者刘鹏 申请人:珠海金山软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1