为Android、iOS设备搭建模拟丢包、慢速网络模拟网络

by AlexQ (email alexq_andr@163.com)

1. 背景、目标、目的

(1) 背景:

我们在移动开发或者测试的时候,时常遇到在正常网络环境下的代码运行一切正常,一旦网络有抖动甚至网速较慢时,各种bug频发,当然我们开发中必须要提前对异常进行设计,但是必要的测试还是很需要的。由于iOS的开发工具XCode已经具备此功能,重点在于Android设备,当然我们的解决方案适用于各种移动设备以来的移动网络测试。

(2) 目的:

不论是Android还是iOS设备,连接到我们提供的模拟环境后,可以通过配置控制网络条件,满足包括下行速度、下行丢包率、下行延迟、上行速度、上行丢包率、上行延迟、DNS延迟的设置、以及可抓包。

(3) 目标:

为移动设备提供可以模拟丢包、慢速等网络条件的稳定可复用的网络环境。

2. 方案

通常的方案主要包括:1.Facebook网络环境模拟工具ATC、2.包括wireshark、Fiddler、Charles等抓包工具提供代理、3.模拟器、4.以及我们使用的以“Network Link Conditioner”为核心的方案。

个人经过试验方案1太过复杂而且还需要特定版本的的无线路由器;方案2只能针对http、https进行,对于tcp、udp无效;方案3稳定性兼容性都不高。

自然我们的方案4要优于1、2、3啦。进入正题。

3. 环境

[x]必要:OSX设备:MacBook等;
[x]必要:USB以太网接入HUB一台、以及可以提供上网接入的网线;
[x]必要:安装XCode(我个人是8.3.2版本)
[x]必要:Network Link Conditioner.prefPane
[x]必要:移动设备一台,用来测试网络

4. 实现

(1) 安装 Network Link Conditioner

由Apple官方提供:developer_apple,新版本此工具被集成到Additional_Tools_for_XcodeAdditional_Tools_for_Xcode_8.2,网上很多是使用XCode7.3以及之前的版本Hardware_IO_Tools_for_Xcode,务必确认安装正确的版本,否则控制功能点击是无效的。

我是用的XCode version:8.3.2,选择Additional_Tools_for_Xcode_8.2

下载:

安装:进入Hardware文件夹,点击Network Link Conditioner.prefPane进行安装

结果:这就是设置和控制面板了

(2) MacBook切换到AP模式,提供热点

使用USB以太网接入Hub链接网线和mac设备

点击“系统偏好设置” ——》 “共享”进行如下设置

此部分内容网络上教程较多,如果不是很熟悉可以自行搜索“Mac怎么设置wifi热点,Mac做wifi热点”之类的内容。

(3) 测试以及抓包

以上两步完成之后,环境就准备好了,手机链接Mac提供的网络,另外在“Network Link Conditioner”面板中使用某一个或者自定义一个网络环境即可。

我使用wireShark进行抓包,成功,各种类型的协议一览无余。

5. 参考

Mac模拟慢速网络 - Network Link Conditioner

Mac怎么设置wifi热点,Mac做wifi热点

2017-06-15 17:35109