下载页
http://jagt.github.io/clumsy/cn/download

项目的代码可以在github上获取,在下载页面有编译好的版本。强烈建议在使用前花点时间阅读一下文档,来 了解 clumsy 的功能和限制。

目前的实现中有一些难以绕过的限制和问题,列表如下:

回送的输入数据包(Loopback inbound packets)无法被重新注入。
仔细想想你就会发现我们没有很好的方法来区分一个回送数据包到底是被发出还是被接收到,因为它们的目标和来源 IP 地址都是本机。事实上 clumsy 底层的 WinDivert,以及其基于的 Windows Filtering Platform 把所有的回送数据包统统认为是输出 (Outbound) 数据包。这里需要记住的是,当你在本机上处理回送数据包的时候,你不能把 “inbound” 设置在 filter 条件中,最简单的方法就是在条件中简单的加上 “outbound”。另一件容易出问题的事情是,你本机的 IP 不仅仅只有 127.0.0.1 一个,还有类似路由器分配给你机器的 IP 也是属于你的本机 IP。
回送数据包会被处理两次。
因为所有的回送数据包都被认为是输出数据包,clumsy 会重复处理它们两次。一次是在发出的时候,一次是在接受到的时候。一个简单的例子是简单的把 filter 设置为 outbound,然后在 clumsy 中设置 500ms 的延迟并开启,之后在命令行里 ping localhost。这时你会发现延迟是 1000ms。当然你可以仔细的设置 filter 条件通过设置端口来只捕捉一部分的回送数据包,但是这样会比较麻烦。最简单的做法就是记住这个问题,然后设置参数的时候做相应的计算。
输入数据包的重新注入有些问题。
根据上面的描述,回送的输入包裹无法被重新注入。问题是现在有些来自包裹虽然其地址不是本机的 IP,其偶尔也会被认为是输入包裹。这种情况如果被捕捉到是无法进行重新注入的。这个问题仅仅影响非回送数据包,所以如果你仅仅是在本机上调试服务器和客户端那么是不会有这个问题的。未来版本的目标是准确的重现这个问题并进行修复。
无法根据进程来进行数据包过滤。
全系统级的数据包捕获虽然被列在了功能里,实际上是在当前的实现下,没法找到一个合适且稳定的方法来进行根据进程的数据包捕获。
如何使用

首先请根据你系统的版本(32位或64位)下载 clumsy 最新版本。注意如果你安装的是64位的系统那么一定要下载64位的 clumsy。另一件重要的事实 clumsy 需要管理员权限才能正常工作。双击打开 clumsy 的话会弹出 UAC 对话框。如果没有的话请右键点击 clumsy.exe 选择"以管理员身份运行"。如果一切正常,你应该能看到如下图的界面:

笔者最近因为需要在局域网内模拟一个实际情况(即存在丢包、延迟等情况)。网上搜了很多工具,大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Clumsy。

Clumsy是基于C语言开发的一款开源网络模拟工具。它能在Windows平台下人工造成不稳定的网络状态,应用它可以方便调试应用程序在极端网络状态下的表现。

Clumsy 首先根据用户选择的filter来拦截指定的网络数据。在 filter中可以设定你感兴趣的协议(tcp/udp),端口号,是接收还是发出的端口。你也可以通过简单的逻辑语句来进一步缩小范围。当 Clumsy 被激活时,只有符合这些标准的网络数据会被进行处理,而你不感兴趣的数据仍然会由系统正常传输。当被 filter 的网络数据包被拦截后,你可以选择 Clumsy 提供的功能来有目的性的调整网络情况,下面是Clumsy提供的功能介绍。

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

(2)丢包(Drop):随机丢弃一些数据;

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

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

(5)乱序(Out of order):打乱数据包发送的顺序;

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

图1是Clumsy界面(此时丢包率为50%)。

图1:Clumsy 0.2 运行页面

在局域网(正常情况下,零丢包)环境下,通过ping测试,不同丢包率下的实际丢包率。结果如下:

因此从一定程度上证明了该工具的效果很好,延迟也有测试,效果明显。

ffplay -x 900 -y 720 -fflags nobuffer -max_delay 5 -i rtsp://xxxx

测试丢包10%

丢包50%

Clumsy-Windows下网络环境模拟工具相关推荐

  1. Clumsy 弱网络环境模拟工具使用介绍

    Clumsy 弱网络环境模拟工具使用介绍 by:授客 QQ:1033553122 简介 利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时 ...

  2. Windows下网络数据报的监听和拦截技术

    Windows下网络数据报的监听和拦截技术是一个比较古老的话题,应用也很广泛,例如 防火墙等等.这篇小文只是对该技术的一个总结,没有新技术,高手免看:) 要监听和拦截Windows下的数据报,基本可以 ...

  3. Windows 下连接mysql工具NavicatForMysql

    Windows 下连接mysql工具NavicatForMysql 一.软件介绍 Navicat for MySQL是一款强大的 MySQL 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖 ...

  4. windows下的linux工具,Windows下的Unix/Linux工具集:UnxUtils

    最近用dos命令多了些,感觉方便得多,对付一些老机器特别有效~只是可惜dos命令功效有限,如果能使用到linux系统上类似grep,sed,cat这样命令就完美了~ 果然和想得差不多,网上还真有&qu ...

  5. 2个 windows 下的网络测试工具

    环境 windows 10 64bit tcping tcproute 简介 TCPing 和 TCProute 都是 windows 下的用于测试 TCP 连接的工具,它们可以帮助用户确定网络连接的 ...

  6. windows下网络流量监控

    今天做性能测试,分析得出测试遇到的瓶颈是本机的网络流量的限制.安装loadrunner软件的机器是windows XP的,网卡是百兆,那流量最大为10M.现在要监控下是否已经达到瓶颈.Windows下 ...

  7. windows下网络丢包模拟软件(Network Emulator for Windows Toolkit)

    最近公司有一个直播的测试项目,需要模拟各种网络环境下的直播状态,最后找到一款这样的软件(如果有遇到更好的软件,望和网友多多交流) 介绍一款windows下的网络模拟器,可以模拟各种丢包或延迟的网络(N ...

  8. 测试工具:Windows下超强日志工具BareTail

    最近写了一些测试工具,经常希望能动态的查看日志文件,试了好些文本编辑文件如Emeditor.Vim等,一直没找到合适. 我希望支持的功能有: 支持大文件读取,速度要快 自动加载新的内容,直接定位到最后 ...

  9. windows下apk查看工具的原理

    游戏出了版本之后,提供给渠道,有部分渠道会修改包名(当他们内部系统做出调整后,可能会改包名),这个时候我又需要知道包名.之前没办法,试图反编译apk,发现失败了.然后就安装apk到手机上,手机上再下载 ...

最新文章

  1. AngularJS 杂项知识点
  2. 【Linux多线程】三个经典同步问题
  3. java分页查询oracle_Java中实现Oracle分页查询
  4. JavaFX——JavaFX概览
  5. [python爬虫] selenium爬取局部动态刷新网站(URL始终固定)
  6. MyBatis整合Spring的实现(2)
  7. python中continue用法案例_Python continue语句实例用法
  8. 计算机科学研究方向介绍
  9. 获取屏幕,浏览器,网页高度宽度
  10. GitHub 撤销 commit
  11. Spark On YARN内存分配
  12. Raki的读paper小记:LOOKING BACK ON LEARNED EXPERIENCES FOR CLASS/TASK INCREMENTAL LEARNING
  13. 硬件设计规范化 - 原理图和 PCB 的版本号命名规则
  14. 局域网网络流量监控_LINUX常见性能监控工具总结
  15. MATLAB矩阵转置
  16. 相亲也内卷?被程序员的相亲规划整不会了......
  17. vue图片时间轴滑动_Vue之时间轴组件
  18. 《Cocos Creator游戏实战》你画我猜中的画板功能
  19. 【Renesas RA6M4开发板之UART与Serial studio串口交互】
  20. 诺奖罗杰.彭罗斯的量子意识及其他(含朱清时-科学与佛学 77分钟视频)

热门文章

  1. 使用TortoiseGit pull时,提示Please, commit your changes or stash them before you can merge.
  2. UVM: callback机制 uvm_callback和uvm_callbacks
  3. 递归树: 如何借助树来求解递归算法的时间复杂度
  4. 零点起飞学Photoshop CS6图像处理
  5. FPGA学习笔记(八):ASK调制解调的仿真
  6. x86汇编_PTR运算符_笔记_9
  7. 配好代理IP池 爬遍全球都不怕
  8. 高分子PEG,Biotin-PEG-amine,Biotin-PEG-NH2,生物素-聚乙二醇-氨基
  9. matlab灰度图孔洞填充,一种深度图像空洞的自动填充方法与流程
  10. 基于好奇心的神经网络算法自监督预测算法