差网络环境模拟工具clumsy

来源:互联网 发布:python游戏代码示例 编辑:程序博客网 时间:2024/03/28 18:58

1、原文地址

https://mp.weixin.qq.com/s?__biz=MzA3NjY1NTk0Ng==&mid=2681738379&idx=1&sn=40edbf5d28cf880536215466ef1346c5&scene=1&srcid=0811px97tj47gXhbMFnN7
Otq#rd%E4%BD%9C%E8%80%85%EF%BC%9A%E8%85%90%E9%AA%A8%E7%81%B5%E8%8A%B1%E9%93%BE%E6%8E%A5%EF%BC%9Ahttp://www.jianshu.com/p/0c342117ccbf%E4%BE%86%
E6%BA%90%EF%BC%9A%E7%AE%80%E4%B9%A6%E8%91%97%E4%BD%9C%E6%9D%83%E5%BD%92%E4%BD%9C%E8%80%85%E6%89%80%E6%9C%89%E3%80%82%E5%95%86%E4%B8%9A%E8%BD%AC
%E8%BD%BD%E8%AF%B7%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85%E8%8E%B7%E5%BE%97%E6%8E%88%E6%9D%83%EF%BC%8C%E9%9D%9E%E5%95%86%E4%B8%9A%E8%BD%AC%E8%BD%
BD%E8%AF%B7%E6%B3%A8%E6%98%8E%E5%87%BA%E5%A4%84%E3%80%82
2、思想
clumsy能在Windows平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。
3、简介
利用封装WinodwsFilteringPlatform的WinDivert库,clumsy能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和
篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用程序在不良网络状况下的表现,clumsy都能让你
在不需要额外添加代码的情况下,在系统层次帮你达到想要的效果
4、特色

  • 下载即用,不需要安装任何东西。

  • 不需要额外设置,不需要修改你的程序的代码。

  • 系统级别的网络控制,可以适用于命令行,图形界面等任何Windows应用程序。

  • 不仅仅只支持HTTP,任何TCP,UDP的网络连接都可以被处理。

  • 支持本地调试(服务器和客户端都在localhost)

  • "热插拔",你的程序可以一直运行,而clumsy可以随时开启和关闭。

  • 实时调节各种参数,详细控制网络情况。

5、实例

下面的动画展示了clumsy作用于一个本地的基于netcat的UDP服务器/客户端的情况。仔细观察你可以看到数据根据在clumsy的影响下产生了相应的变化。


如果你基本知道了clumsy是干什么用的,不妨到下载页面选择适用于你系统的版本进行下载。

6、详细信息

clumsy首先根据用户选择的filter来拦截指定的网络数据。在filter中可以设定你感兴趣的协议(tcp/udp),端口号,是接收还是发出的端

口。你也可以通过简单的逻辑语句来进一步缩小范围。当clumsy被激活时,只有符合这些标准的网络数据会被进行处理,而你不感兴

趣的数据仍然会由系统正常传输。

当被filter的网络数据包被拦截后,你可以选择clumsy提供的功能来有目的性的调整网络情况:

  1. 延迟(Lag),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况。

  2. 掉包(Drop),随机丢弃一些数据。

  3. 节流(Throttle),把一小段时间内的数据拦截下来后再在之后的同一时间一同发出去。

  4. 重发(Duplicate),随机复制一些数据并与其本身一同发送。

  5. 乱序(Outoforder),打乱数据包发送的顺序。

  6. 篡改(Tamper),随机修改小部分的包裹内容。

        尽管当前宽带网络连接十分普及,但网络传输其本身在本质上总不是稳定的。如果你的应用程序中没有应对各种情况的处理,那么有可能一个丢失的UDP包裹都会让你的程序崩溃。正确的调试这类行为显然需要再代码结构上进行仔细的设计和处理,还会很花功夫。而且在某些封装紧密的开发环境(Unity3D自带的网络库可能是一个例子)下会更麻烦。clumsy以尽可能减轻程序员负担为目标,希望提供一个简单方便(但并不完美)的解决方案。


      此外,还有其他工具可以模拟慢网速,具体参见http://www.cnblogs.com/jinjiangongzuoshi/p/5272787.html