高分讨论网络流量限制原理,来者有分,按劳分配!!!

时间:2022-12-10 19:54:05
主要讨论两方面的网络流量限制。

1、本地软件限速(重点讨论)
比较流行的软件有:NetLimiter、NetBalancer、NetPeeker等。
这些软件能够分别限制在本机运行的所有网络程序的流量,是什么原理?实现的思路?

2、局域网限速
比较流行的软件有:聚生网管、网络执法官、P2P终结者、skiller等。
这些软件能够限制局域网内机器的流量,是什么原理?实现的思路?

再就是是否可以在路由器上协商为某台机器的某个应用程序分配一定的网络流量?

谢谢!

288 个解决方案

#1


网络驱动截获住收发接口,怎么限就怎么限

#2


1.终端限速
2.交换机限速
3.网卡降速

如果是使用类似WINPCAP的方式,可以将网络数据包截获并缓冲后,进行优先级排序,优先响应发送给预设的端口的报文。

#3


该回复于2010-01-27 18:50:05被版主删除

#4


谢谢楼上几位,继续。

#5


没做过网络,up一下

#6


高分讨论网络流量限制原理,来者有分,按劳分配!!!

#7


我想要改变TCP的传送机制是不可能,除非你不用它,限制流量的话,只能在上层设置吧,比如可以设置某一收发线程的优先级,也可以设置收发缓冲区大小

#8


如果想在应用层限速
其实就是sleep而已

#9


学习

#10


 领分的

#11


to hurryboylqs:
网络驱动截获住收发接口,怎么限就怎么限

是否是在网络驱动截获到收发数据后,延迟给应用程序?

to WizardK:
1.终端限速 
2.交换机限速 
3.网卡降速 

如果是使用类似WINPCAP的方式,可以将网络数据包截获并缓冲后,进行优先级排序,优先响应发送给预设的端口的报文。

1、终端限速是什么?终端是指计算机还是应用程序?如果是计算机限速那么应用是局域网限速相关的,如果是应用程序,那么如何限?
2、交换机限速的话那就不是软件开发人员的问题了,而是网管的问题,我这儿讨论的是如何在不改变硬件环境的情况下,用软件达到让局域网内某台机器限速。
3、网卡限速的结果还是用硬件来限制某台计算机的流量,而且是限制了这台机器上的所有程序,我希望是某台机器上的某个应用程序。

可否详细介绍WINPCAP的原理。


to dong364:
to bragi523:
应用层限速只能自己限制自己吧,二位是否用过第1条中提到过的软件,那些都是可以随意限制本机上任何网络应用程序的上传和下载的流量的。


谢谢这几位兄,希望继续踊跃发言。
再就是如果版主觉得可行,是否可以考虑给本帖置顶?




#12


干扰本机,就可以在应用层等来进行限速,程序来控制

干扰局域网其他机器,就可以给他发送ARP等干扰包来影响它的网络速度等。

#13


截包,修改数据请求。

#14


楼主想做什么?

#15


gz

#16


1、本地软件限速(重点讨论) 
比较流行的软件有:NetLimiter、NetBalancer、NetPeeker等。 
这些软件能够分别限制在本机运行的所有网络程序的流量,是什么原理?实现的思路? 
答:
通过应用层的hook可以让网络数据都从你的进程里经过,这样就可以统计流量.对于如何限制你应该考虑本地防火墙的原理.对于windows,编程管理ipspec就可以调用系统层来block对应程序的网络连接

#17


不错不错;;

#18


局域网流量限制就是用的arp欺骗原理。装个arp防火墙就无效了。

#19


要想在路由器上限制应用的流量,得看你的路由器的支持程度了,不过现在基本上路由器都支持这类QoS功能,cisco的,华为的。

至于在本机上限制流量,我想,应该是在协议栈的hook上面挂载自己的函数,添加发送队列,控制数据包的发送速度吧

#20


帮顶!

#21


本地软件限速可以通过驱动程序对网络I/O进行过滤,根据进程ID来区分进程,每个进程单独计算流量,达到流量限制时将请求挂起一段时间。
局域网限速已知的方法是通过ARP欺骗,让目标主机把数据发向自己,再由自己转发出去,或者干脆让其发送到无效地址上。

#22


接分··帮顶

#23


UP

#24


我是来学习的。

#25


关注

#26


截获并区分不同程序的数据包。然后计算速度 并缓存过快的包 达到限速的目的!!!!!!

#27


顶,来学习的。

#28


不怎么懂,顶下

#29


学习了

#30


该回复于2010-01-28 09:04:37被版主删除

#31


本地,局域网限速之类的原理是完全一样的。
一般在数据链路层进行,其实就是驱动程序一部分。拿以太网驱动举例。
驱动例程记录流量,根据当前经历的时间与总流量关系确定是否要从IP队列中取数据发送。

像迅雷之类的限速,完全是应用层的事情了。

#32


补充一下。
在Linux下,可以直接改驱动,改变它的从IP队列取数据和发送的行为。重新编译即可。
像Windows不开源的东西,像libpcap(winpcap)之类,发送行为我们可以控制,不知道能不能改变从IP队列取数据的行为,如果这个也能控制的话,和开源类的OS是一样了。

#33


又看了一下回帖,限速的方法有很多,但有一点要保证,你限速后不能影响上层的行为机制。

#34


学习

#35


该回复于2010-01-28 09:04:33被版主删除

#36


看一下高手

#37


再就是是否可以在路由器上协商为某台机器的某个应用程序分配一定的网络流量?
//Panabit就可以,基于协议分析;C/S模式的带宽锁bwlock也行。不过这些都没有集成在路由里,需要单独装在一台机器上。

1、本地软件限速(重点讨论) 
比较流行的软件有:NetLimiter、NetBalancer、NetPeeker等。 
//国产的还有FluxEye、QQ医生、360流量管理、迅雷软件助手。楼主要自己做?

#38


我是来学习的!

#39


1,
简单的 IP 层过滤驱动实现,(可 google IPFilter)
复杂的网络驱动层咯,(可 google 网络驱动层)

2,
原理 ARP 欺骗
开发包,winpcap

3,
路由管不到应用程序,十万八千里
部分智能交换机可能有限速功能

#40


学习

#41


顶,
还在学习计算机网络……

#42


哈,我也是来学习的

#43


xuexi

#44


NetLimiter is client-side traffic shaping and monitoring software for the Windows operating system.[1] Unlike most traffic-shaping utilities, which are based on centrally managed hardware, NetLimiter is a software-only solution. This has the advantage of being less expensive to deploy, but can result in being more difficult to manage its use across more than one computer.[citation needed]
While it has a significant market among more technically-minded computer users, in medium-to-large networks it becomes difficult for administrators to maintain multiple copies of configuration files.[citation needed] It is, however, useful for simulating slow links between departments showing how the applications will work when deployed to slower sites.[citation needed]
It is often lumped together with other free or shareware in articles[2] that present the reader with 'essential' applications and poweruser-type utilities.[3]

#45


引用 39 楼 iamrainliang 的回复:
1,
 简单的 IP 层过滤驱动实现,(可 google IPFilter)
 复杂的网络驱动层咯,(可 google 网络驱动层)

 2,
 原理 ARP 欺骗
 开发包,winpcap

 3,
 路由管不到应用程序,十万八千里
 部分智能交换机可能有限速功能
学习了!

#46


1 在驱动层上,可以抓到所有的网络包,即IP包, 以TCP/IP为例, 在包中有一个16-bit的源端口值, 每一个用于通信的应用程序都对就着一个接收端口。在IP头中有一个16-bit 的包长度值。那么netlimiter可以计算发给每一个应用程序的包的总长度。
比如有两个EXE A和EXE B.
A使用端口100,B使用端口200.那么netlimiter可以知道在某段时间里A接收了多少字节的数,B接收了多少字节的数。想让A慢的话可以在驱动中延时一会才转发它的IRP包。

2 聚生网管用ARP欺骗,欺骗的方法也有好几种,比如他伪装成局域网中另外一台机器,那么本来应该发给该机器的数据包却跑到运行聚生的这台机器上了,它可以选择立即发给你或者延时一会儿发给你,这样就控制速度了,如果彻底不发给你,你就断网了。

3 在路由器上可以限制某一台机器中的某个应用程序的速度,我不知道现在的路由有没有能做到的,但是我觉得在理论上其实也是行得通的。因为在局域网中,每一台机器拥有的是内网IP地址,它通过路由器和外界连接,那么对于在外网上的一台机器来说,局域网内的所有机器的IP都是一样的。那么它怎么给这个局域网中的某个机器发数据呢?这个它就不知道了,它只知道把数据发到路由器,路由器再根据端口映射(这个端口和SOCKET用的端口不一样,这个端口用来标识局域网中的不同机器的)把数据转发到局域网中的目标机。所以如果路由器在记录某个机器对应某个端口时,再把某个应用程序使用的端口也记录下来的话,就能实现楼主要的功能。但是要知道某个应用程序的名字及其对应的端口,并在路由器的配置界面中显示出来,这个工作可能要在路由器和局域网机器上安装新软件以用于此信息的交换。

#47


d

#48


截取的数据包实际上发出的跟请求的大小那块显示的吧?

#49


顶一下~
有分么……

#50


学习接分来的。

局域网 限速的话,好一点的路由IP-mac绑定,机子上再设个静态网关,ARP不就没戏了?

#1


网络驱动截获住收发接口,怎么限就怎么限

#2


1.终端限速
2.交换机限速
3.网卡降速

如果是使用类似WINPCAP的方式,可以将网络数据包截获并缓冲后,进行优先级排序,优先响应发送给预设的端口的报文。

#3


该回复于2010-01-27 18:50:05被版主删除

#4


谢谢楼上几位,继续。

#5


没做过网络,up一下

#6


高分讨论网络流量限制原理,来者有分,按劳分配!!!

#7


我想要改变TCP的传送机制是不可能,除非你不用它,限制流量的话,只能在上层设置吧,比如可以设置某一收发线程的优先级,也可以设置收发缓冲区大小

#8


如果想在应用层限速
其实就是sleep而已

#9


学习

#10


 领分的

#11


to hurryboylqs:
网络驱动截获住收发接口,怎么限就怎么限

是否是在网络驱动截获到收发数据后,延迟给应用程序?

to WizardK:
1.终端限速 
2.交换机限速 
3.网卡降速 

如果是使用类似WINPCAP的方式,可以将网络数据包截获并缓冲后,进行优先级排序,优先响应发送给预设的端口的报文。

1、终端限速是什么?终端是指计算机还是应用程序?如果是计算机限速那么应用是局域网限速相关的,如果是应用程序,那么如何限?
2、交换机限速的话那就不是软件开发人员的问题了,而是网管的问题,我这儿讨论的是如何在不改变硬件环境的情况下,用软件达到让局域网内某台机器限速。
3、网卡限速的结果还是用硬件来限制某台计算机的流量,而且是限制了这台机器上的所有程序,我希望是某台机器上的某个应用程序。

可否详细介绍WINPCAP的原理。


to dong364:
to bragi523:
应用层限速只能自己限制自己吧,二位是否用过第1条中提到过的软件,那些都是可以随意限制本机上任何网络应用程序的上传和下载的流量的。


谢谢这几位兄,希望继续踊跃发言。
再就是如果版主觉得可行,是否可以考虑给本帖置顶?




#12


干扰本机,就可以在应用层等来进行限速,程序来控制

干扰局域网其他机器,就可以给他发送ARP等干扰包来影响它的网络速度等。

#13


截包,修改数据请求。

#14


楼主想做什么?

#15


gz

#16


1、本地软件限速(重点讨论) 
比较流行的软件有:NetLimiter、NetBalancer、NetPeeker等。 
这些软件能够分别限制在本机运行的所有网络程序的流量,是什么原理?实现的思路? 
答:
通过应用层的hook可以让网络数据都从你的进程里经过,这样就可以统计流量.对于如何限制你应该考虑本地防火墙的原理.对于windows,编程管理ipspec就可以调用系统层来block对应程序的网络连接

#17


不错不错;;

#18


局域网流量限制就是用的arp欺骗原理。装个arp防火墙就无效了。

#19


要想在路由器上限制应用的流量,得看你的路由器的支持程度了,不过现在基本上路由器都支持这类QoS功能,cisco的,华为的。

至于在本机上限制流量,我想,应该是在协议栈的hook上面挂载自己的函数,添加发送队列,控制数据包的发送速度吧

#20


帮顶!

#21


本地软件限速可以通过驱动程序对网络I/O进行过滤,根据进程ID来区分进程,每个进程单独计算流量,达到流量限制时将请求挂起一段时间。
局域网限速已知的方法是通过ARP欺骗,让目标主机把数据发向自己,再由自己转发出去,或者干脆让其发送到无效地址上。

#22


接分··帮顶

#23


UP

#24


我是来学习的。

#25


关注

#26


截获并区分不同程序的数据包。然后计算速度 并缓存过快的包 达到限速的目的!!!!!!

#27


顶,来学习的。

#28


不怎么懂,顶下

#29


学习了

#30


该回复于2010-01-28 09:04:37被版主删除

#31


本地,局域网限速之类的原理是完全一样的。
一般在数据链路层进行,其实就是驱动程序一部分。拿以太网驱动举例。
驱动例程记录流量,根据当前经历的时间与总流量关系确定是否要从IP队列中取数据发送。

像迅雷之类的限速,完全是应用层的事情了。

#32


补充一下。
在Linux下,可以直接改驱动,改变它的从IP队列取数据和发送的行为。重新编译即可。
像Windows不开源的东西,像libpcap(winpcap)之类,发送行为我们可以控制,不知道能不能改变从IP队列取数据的行为,如果这个也能控制的话,和开源类的OS是一样了。

#33


又看了一下回帖,限速的方法有很多,但有一点要保证,你限速后不能影响上层的行为机制。

#34


学习

#35


该回复于2010-01-28 09:04:33被版主删除

#36


看一下高手

#37


再就是是否可以在路由器上协商为某台机器的某个应用程序分配一定的网络流量?
//Panabit就可以,基于协议分析;C/S模式的带宽锁bwlock也行。不过这些都没有集成在路由里,需要单独装在一台机器上。

1、本地软件限速(重点讨论) 
比较流行的软件有:NetLimiter、NetBalancer、NetPeeker等。 
//国产的还有FluxEye、QQ医生、360流量管理、迅雷软件助手。楼主要自己做?

#38


我是来学习的!

#39


1,
简单的 IP 层过滤驱动实现,(可 google IPFilter)
复杂的网络驱动层咯,(可 google 网络驱动层)

2,
原理 ARP 欺骗
开发包,winpcap

3,
路由管不到应用程序,十万八千里
部分智能交换机可能有限速功能

#40


学习

#41


顶,
还在学习计算机网络……

#42


哈,我也是来学习的

#43


xuexi

#44


NetLimiter is client-side traffic shaping and monitoring software for the Windows operating system.[1] Unlike most traffic-shaping utilities, which are based on centrally managed hardware, NetLimiter is a software-only solution. This has the advantage of being less expensive to deploy, but can result in being more difficult to manage its use across more than one computer.[citation needed]
While it has a significant market among more technically-minded computer users, in medium-to-large networks it becomes difficult for administrators to maintain multiple copies of configuration files.[citation needed] It is, however, useful for simulating slow links between departments showing how the applications will work when deployed to slower sites.[citation needed]
It is often lumped together with other free or shareware in articles[2] that present the reader with 'essential' applications and poweruser-type utilities.[3]

#45


引用 39 楼 iamrainliang 的回复:
1,
 简单的 IP 层过滤驱动实现,(可 google IPFilter)
 复杂的网络驱动层咯,(可 google 网络驱动层)

 2,
 原理 ARP 欺骗
 开发包,winpcap

 3,
 路由管不到应用程序,十万八千里
 部分智能交换机可能有限速功能
学习了!

#46


1 在驱动层上,可以抓到所有的网络包,即IP包, 以TCP/IP为例, 在包中有一个16-bit的源端口值, 每一个用于通信的应用程序都对就着一个接收端口。在IP头中有一个16-bit 的包长度值。那么netlimiter可以计算发给每一个应用程序的包的总长度。
比如有两个EXE A和EXE B.
A使用端口100,B使用端口200.那么netlimiter可以知道在某段时间里A接收了多少字节的数,B接收了多少字节的数。想让A慢的话可以在驱动中延时一会才转发它的IRP包。

2 聚生网管用ARP欺骗,欺骗的方法也有好几种,比如他伪装成局域网中另外一台机器,那么本来应该发给该机器的数据包却跑到运行聚生的这台机器上了,它可以选择立即发给你或者延时一会儿发给你,这样就控制速度了,如果彻底不发给你,你就断网了。

3 在路由器上可以限制某一台机器中的某个应用程序的速度,我不知道现在的路由有没有能做到的,但是我觉得在理论上其实也是行得通的。因为在局域网中,每一台机器拥有的是内网IP地址,它通过路由器和外界连接,那么对于在外网上的一台机器来说,局域网内的所有机器的IP都是一样的。那么它怎么给这个局域网中的某个机器发数据呢?这个它就不知道了,它只知道把数据发到路由器,路由器再根据端口映射(这个端口和SOCKET用的端口不一样,这个端口用来标识局域网中的不同机器的)把数据转发到局域网中的目标机。所以如果路由器在记录某个机器对应某个端口时,再把某个应用程序使用的端口也记录下来的话,就能实现楼主要的功能。但是要知道某个应用程序的名字及其对应的端口,并在路由器的配置界面中显示出来,这个工作可能要在路由器和局域网机器上安装新软件以用于此信息的交换。

#47


d

#48


截取的数据包实际上发出的跟请求的大小那块显示的吧?

#49


顶一下~
有分么……

#50


学习接分来的。

局域网 限速的话,好一点的路由IP-mac绑定,机子上再设个静态网关,ARP不就没戏了?