Clumsy-Windows下网络环境模拟工具

article/2025/10/6 23:42:23

下载页
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%
在这里插入图片描述


http://chatgpt.dhexx.cn/article/HgqPXnI5.shtml

相关文章

Clumsy

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

clumsy使用简介(模拟弱网)

前提:使用过Fiddler弱网模式的小伙伴,应该都体会过,模拟弱网的时候,只是均匀的慢,但是实际场景可能是网络会波动的,而clumsy不但能设置延迟,还能设置节流、重发、乱序等模式,有助于我…

使用 clumsy 模拟极端网络状况

clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。 简介 利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包…

clumsy使用简介

前提:使用过Fiddler弱网模式的小伙伴,应该都体会过,模拟弱网的时候,只是均匀的慢,但是实际场景可能是网络会波动的,而clumsy不但能设置延迟,还能设置节流、重发、乱序等模式,有助于我…

clumsy 弱网测试工具

clumsy工具介绍 clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。下面根据工作中遇到过的实际场景介绍一下clumsy工具的使用方法 场景:测试客户端下载文件失败,客户端对这种异常情况做出的处…

弱网测试工具—— clumsy

clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。 简介 利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包…

ClickOnce是什么?如何使用?

ClickOnce是一种部署方式,主要解决C/S软件版本更新后,所有客户端都要重新安装的问题。 场景:假如,你的客户有1000个,你的服务端更新后,这1000个客户都要重新安装,难道要员工一个一个的电话通知客…

@click与V-on:click

问题:为什么click是V-on:click的简写,两个效果却不同,click不能打印触发的事件? 原因:语法糖 链接:https://segmentfault.com/a/1190000010159725

VB.net小技巧——ClickOnce应用程序版本号自动递增

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VB.net小技巧——ClickOnce应用程序版本号自动递增 ClickOnce应用程序每次在更新版本的时候,我都会在主窗口的标题添加当前版本号,但是因为每次都要手…

js中click()与onclick()的区别

由一个简单示例到 js中click()与onclick()的区别 之前朋友在学习js的时候遇到一个有意思的问题。 先贴一份代码说一下代码构成 这里是html结构 <ul><li><input type"checkbox" name"" id"" class"che" checked />全…

click和on click区别

click和onclick的区别 onclick是绑定事件&#xff0c;告诉浏览器在鼠标点击时候要做什么&#xff1b;click本身是方法&#xff0c;作用是触发onclick事件&#xff0c;只要执行了元素的click()方法&#xff0c;就会触发onclick事件 click可以理解为一次简单的触发&#xff0c;…

ClickOnce发布

ClickOnce是.NET中集成的一种发布技术,它最大的好处就是可以实现自动更新。我们在开发WinForm/WPF等C/S架构的程序时需要自动更新功能,就可以通过ClickOnce快速部署实现。 一、发布设置 在VS中右键项目属性,选择发布选项卡,打开如下图的界面。 安装模式和设置区域,可以设…

.click()与on('click',function())

之前遇到过一次.click()无效,改成on绑定click就好了的情况,看了几篇博客后,发现是自己对click()和on的理解不够,没太在意,最近又遇到了,所以写下这篇博客加深印象。 $(选择器).click(fn):当选中的选择器被点击时触发回调函数fn。只针对与页面已存在的选择器。而.J_del这…

Click(点击)

Click <button id"btn" onclick"threeFn()">点我</button>点击事情方式 // 第一种 通过点击事件btn.onclick function () {alert(这是第一种点击方式);};监听点击事件 // 第二种 监听点击事件btn.addEventListener(click, function () {al…

clickonce 使用总结

1.部署 C#Winform程序如何使用ClickOnce发布并自动升级&#xff08;图解&#xff09;_shaojinbo的专栏-CSDN博客 补充 vs2015 clickOne 项目发布流程 包括自动更新 教你怎么在IIS中添加网站教你怎么在IIS中添加网站 https://jingyan.baidu.com/article/6181c3e0d45bad152e…

快速创建软件安装包-ClickOnce

大家好&#xff0c;我是沙漠尽头的狼。 .NET是免费&#xff0c;跨平台&#xff0c;开源&#xff0c;用于构建所有应用的开发人员平台。 今天介绍使用ClickOnce制作软件安装包&#xff0c;首先我们先了解什么是ClickOne。 1. 什么是ClickOnce 以下段落摘自微软文档&#xff1a…

视频教程-SharePoint 搜索教程-其他

SharePoint 搜索教程 大家好&#xff0c;我是霖雨&#xff0c;从2010年开始致力于SharePoint相关的技术研究&#xff0c;精通SharePoint环境搭建、实施、开发、运维、排错等相关技术&#xff0c;从2014年至今连续获评微软有价值讲师SharePoint方向MVP&#xff0c;在CSDN博客发表…

Office 365 轻松上手指南 - SharePoint Online (五)

2.7.2.2. 验证差旅报销工作流经验 场景一&#xff1a;部门主管拒绝申请 步骤1 用员工帐户&#xff08;demomicrosoft.com&#xff09;登录Office 365&#xff0c;然后依次点击“SharePoint”—“工作组网站”—“差旅报销”“新建项目”&#xff0c;如图&#xff1a; 步骤2 将…

SharePoint 2016 图文安装教程

安装完毕SQL Server&#xff0c;就可以开始安装SharePoint 2016 准备工具了&#xff0c;打开镜像文件&#xff0c;点击准备工具的可执行文件&#xff0c;如下图&#xff1a; 准备工具的向导&#xff0c;如下图&#xff1a; 所有准备工具&#xff0c;需要安装这么一系列软件&…

SharePoint Online 列表modern UI手把手教程如何使用及问题

目录 快速上手 目前问题 快速上手 默认界面 默认的Modern UI在双击单个条目后会自动出现在右边&#xff0c; 自定义界面&#xff08;Power Apps&#xff09; 在列表上方点击PowerApps会出现下拉菜单&#xff0c;点击自定义表单即可进入PowerApps界面自定义 目前问题 HTML…