1.网络异常的分类

在系统的运行过程中,可能会遇到各种各样的网络问题,其中主要可能出现的问题有

网络延迟:当网络信息流过大时,可能导致设备反应缓慢,造成数据传输延迟;

网路掉包:网路掉包是在数据传输的过程中,数据包由于各种原因在信道中丢失的现象;

网络节流:当数据传输量达到网络带宽上限时,数据包可能会被设备拦截下来在之后发出;

网络重发:当网络不稳定是可能会导致发送端判断数据包丢失导致部分数据包重发;

数据乱序:当数据传输有可能出现数据包到达接收端时间不一致,导致数据包乱序问题;

数据篡改:数据传输的过程中可能出现数据被连接篡改的情况。

2.Windows下网络异常的模拟方法

Windows下可以使用clumsy来进行网络异常的模拟

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

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

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

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

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

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

乱序(Out of order),打乱数据包发送的顺序。

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

在测试时,该工具的filtering使用默认即可,Presets选择localhost ipv4 all,然后配置相应的功能单击start按钮,等待按钮变成stop以及按钮旁边出现小绿点时,工具则启用成功。

使用工具模拟网路延时,网络延时3000ms

使用工具模拟网络掉包,随机将10%的数据包丢弃

使用工具模拟网络节流,将10%的数据节流1000ms

使用工具模拟网络重发,将10%的数据集重发两次

使用工具模拟网络乱序,将10%的数据乱序

使用工具模拟网络篡改,篡改10%的数据

测试的过程中可以检查业务处理是否正确,比如检查数据库数据是否正确,数据库与文件库是否一致,文件库是否出现较多的垃圾文件,垃圾文件是否有清理机制等等。

3.Linux下的网络异常模拟方法

netem 是Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如 Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian 等等。 tc 是Linux系统中的一个工具,全名为 traffic control(流量控制)。tc 可以用来控制 netem 的工作模式,也就是说,如果想使用 netem ,需要至少两个条件,一个是内核中的 netem 功能被包含,另一个是要有 tc 。

模拟网络异常方法:

1.首先查看网卡,可使用ifconfig命令查看

[root@localhostnetwork-scripts]# ifconfig

eno16777736: flags=4163 mtu 1500

inet 192.168.75.132 netmask 255.255.255.0 broadcast 192.168.75.255

inet6fe80::20c:29ff:fe7c:8d22 prefixlen 64 scopeid 0x20

ether 00:0c:29:7c:8d:22 txqueuelen 1000 (Ethernet)

RX packets 19535 bytes2592045 (2.4 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 31019 bytes38969412 (37.1 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

红字表明的就是网卡的设备号

2.模拟网络异常可通过以下命令,其中eth0可根据自己的网卡设备号进行替换:

网络延迟

tc qdisc add dev eth0 rootnetem delay 100ms

该命令将 eth0 网卡的传输设置为延迟 100 毫秒发送。

模拟更真实的情况,延迟值可能会有一定的波动性,可以使用以下命令来模拟

Tc qdisc add dev eth0 root netem delay 100ms 10ms

该命令将 eth0 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送

网络丢包

tc qdisc add dev eth0 root netem loss 1%

该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包。

数据包重复

tc qdisc add dev eth0 root netem duplicate 1%

该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包 。

数据包损坏

tc qdisc add dev eth0 root netem corrupt 0.2%

该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损坏的数据包 。

数据包乱序

tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%

该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟10 秒。

查看已经配置的网络条件

tc qdisc show dev eth0

如果需要删除已配置的条件,则将以上命令中的add更改为del即可。

如果你有疑问欢迎加微信咨询:

https://u.wechat.com/MDHWBbNbJRv36gtFwfExkEo (二维码自动识别)

也可以关注我的公众号想我提问:

http://weixin.qq.com/r/EEzl-dLE5Y_arZae9xkC (二维码自动识别)

网络异常模拟测试方法相关推荐

  1. linux read timed out,【转】网络异常模拟 read timed out

    开发或者产品的过程中,同学们一定遇到过connection timed out和socket read timed out两种和网络相关的异常.今天我们并不分析引起这些异常的原因,也不谈发生异常以后的 ...

  2. 如果MySQL事务中发生了网络异常?

    一 前言 在我们运维MySQL的时候,总会遇到各种情况导致程序和MySQL之间的会话异常中断,比如 假如强制关闭应用 假如client机器突然崩溃宕机/断电 假如网络发生抖动/网卡发生故障 机房级别断 ...

  3. 使用enterTextInWebElement处理qq授权页报“网络异常,请稍后再试”的解决方法

    robotium4.0之后支持处理WebElement,从此第三方的web页有更简单的解决方法. 上周五我很愉快的处理完新浪微博和腾讯微博的授权页之后,这周一处理qq的授权页,发现使用robotium ...

  4. 99%的程序都没有考虑的网络异常

    本文由云+社区发表 绝大多数程序只考虑了接口正常工作的场景,而用户在使用我们的产品时遇到的各类异常,全都丢在看似 ok 的 try catch 中.如果没有做好异常的兼容和兜底处理,会极大的影响用户体 ...

  5. 基于机器学习的网络异常流量识别系统——数据篇

    数据集 获取数据集的两个方案(网络异常流量) 一.自己配置虚拟机爬取数据(有条件的可以直接搞服务器上的数据) 缺点:很耗时而且爬的还没有什么普适性,电脑不行直接挂,我就是( ̄▽ ̄)" 自己用 ...

  6. SDN 云数据中心网络异常行为的智能处理实践

    火炉山蚁群 ┃ 一群自研转型的背锅侠 摘要:云数据中心的网络异常行为不仅对网络设备造成严重业务负荷,同时也显著影响云用户使用感知.云计算环境中的共享资源模式和云用户迥然不同的业务形态,使得云网络分析和 ...

  7. Ubuntu16.04 下的网易云出现网络异常、无法播放,界面无响应问题的统一解决

    能够在Linux系统下体验到原生界面的网易云音乐是件不错的事情,但是它总是经常性的出现网络异常,界面无响应的问题 为了听歌的体验,进行深入探究: 首先通过终端启用网易云音乐:sudo netease- ...

  8. 阿拉德之怒显示服务器错误,阿拉德之怒网络异常怎么办 安装失败怎么办

    阿拉德之怒安装失败怎么办,网络异常怎么办,玩家在玩阿拉德之怒的时候,由于手机和服务器等等原因,会出现阿拉德之怒安装失败或者网络异常等等情况,影响游戏体验,那么怎么办呢,今天369手游网小编将给大家带来 ...

  9. 使用NetFlow分析网络异常流量

    一.前言 近年来,随着互联网在全球的迅速发展和各种互联网应用的快速普及,互联网已成为人们日常工作生活中不可或缺的信息承载工具.然而,伴随着互联网的正常应用流量,网络上形形色色的异常流量也随之而来,影响 ...

最新文章

  1. 蚂蚁金服大佬自述:保持学习力,永远胜过不切实际的一夜暴富幻想!
  2. 计算机组成原理小论文参考文献,急!···跪求.《计算机组成原理》--论文--一篇...
  3. python php 通信,Python和php通信乱码问题解决方法
  4. CPython对象模型:string(留坑待填)
  5. 2016年第七届蓝桥杯 - 省赛 - C/C++大学A组 - F. 寒假作业
  6. 数据库原理及应用【一】引言
  7. 汽车熄火是什么原因?
  8. 【Java基础篇】集合排序
  9. 5月16日亮相!华硕ZenFone 6新旗舰曝光:无刘海全面屏加持
  10. 吃掉那只青蛙_每日可交付成果–吃青蛙的艺术
  11. linux的文件系统简单介绍
  12. windows终止处理程序( __try __finally) 简单解析
  13. Chrom安装Axure插件浏览原型图
  14. excel常用快捷键excel快捷键汇总
  15. 多线程(Thread的类的运用-Runnable类的使用/多线程的注意点)
  16. 全新型App开放框架—Clouda
  17. KubernetsPod分析
  18. 利用pyecharts实现中国省与市之间的跳转
  19. Python随机生成均匀分布在单位圆内的点
  20. BLUP育种值如何计算准确性

热门文章

  1. Matlab simulink 代数环问题
  2. Yolov5可以看到虽然有结果图片,但是并没有框出识别结果
  3. 小程序与h5的相互跳转
  4. 管理费用负数报不了怎么办_管理费用发生额是负数怎么办
  5. linux ps -ef和ps -aux,关于Linux中ps -aux的深入理解
  6. prometheus联邦集群
  7. python用可变参数求积_流畅的python读书笔记-第八章-对象引用、可变性和垃圾回收...
  8. 流畅的python 对象引用 可变性和垃圾回收
  9. yolov5---detect.py注释解析
  10. Android:判断手机运营商