半月月前,我用Python写了一个工具,可以测试网络的纯丢包率以及探测网络路径中的队列情况,经过一些使用者的反馈,还算比较好用,关于这个工具,请参见《 动手写一个探测网络质量(丢包率/RTT/队形等)的工具》。
        但是我觉得这个少了关于乱序度的测试功能,于是补充之。其实,在Linux的TC工具上,除了队列,丢包率,延迟之外,乱序度也是一个非常重要的配置参数,不过请记住,Linux不是全部,对于程序员而言,除了抓包之外,了解一点Linux之外的东西,比如Cisco,运营商之类的,还是必要的。我至今依然记得网吧的网管搞定了一个东软高级专家搞不定的问题的场景,这很正常,因为虽然网吧的网管可能没什么基础知识,程序员同样也没有,网管的优势在于,人家善于使用工具。两个领域,方法论自然不同。
        事实上关于乱序的测试统计非常简单,这基于一个预期,就是“应答序列号一定大于等于发送序列号”,一旦不满足这个预期,说明有数据包乱序,在这个程序中,我主要统计两个变量, 第一是总的乱序度数量,另一个是总的乱序次数。
统计逻辑如下:
变量: 1).当前应答的最高序列号hseq;2).当前应答的序列号seq;3).乱序度reorder;4).乱序次数reorder_cnt。
1>.如果seq大于等于hseq,则更新hseq为seq;
2>.否则计算delta=hseq-seq,redorder+=delta,reorder+=1。

这样在程序的最后会统计出整个网络的乱序情况。详细情况请看代码:

#!/usr/local/bin/pythonimport sys
import time
from time import sleep,ctimeimport signal
import threading
from scapy.all import *target = sys.argv[1]
tot = int(sys.argv[2])
tot_per = int(sys.argv[3])
vl = int(sys.argv[4])
flt = "host " + target + " and icmp"handle = open("/dev/null", 'w')out_list = []
in_list = []global pos
global curr
global tot_reorder
global reorderpos = 0
curr = 0
tot_reorder = 0
reorder = 0def output():global posglobal currglobal tot_reorderglobal reorderall = out_list + in_listall.sort(lambda x,y:cmp(x[3],y[3]))for item in all:print item[0], item[1], item[2], item[3]*10sys.stdout.flush()handle.write("\nReorder:" + str(reorder) + " Reorder cnt:" + str(tot_reorder) + "\n")os._exit(0)def signal_handler(signal, frame):handle.write("\nExit:" + ctime() + '\n')output()class ThreadWraper(threading.Thread):def __init__(self,func,args,name=''):threading.Thread.__init__(self)self.name=nameself.func=funcself.args=argsdef run(self):apply(self.func,self.args)def printrecv(pktdata):global posglobal currglobal tot_reorderglobal reorderif ICMP in pktdata and pktdata[ICMP]:seq = str(pktdata[ICMP].seq)if seq == tot_per + 2:returnif str(pktdata[IP].dst) == target:handle.write('*')handle.flush()out_list.append(('+', 1, seq, time.clock()))else:if vl == 2:handle.write('.')else:handle.write('\b \b')handle.flush()in_list.append(('-', 0, seq, time.clock()))curr = int(seq)if curr >= pos:pos = currelse:delta = pos - currtot_reorder += 1reorder += deltadef checkstop(pktdata):if ICMP in pktdata and pktdata[ICMP]:seq = str(pktdata[ICMP].seq)if int(seq) == tot_per + 2 and str(pktdata[IP].src) == target:handle.write("\nExit:" + ctime() + '\n')output()return Truereturn Falsedef send_packet():times = 0global posglobal currwhile times < tot:times += 1send(IP(dst = target)/ICMP(seq = (0, tot_per))/"test", verbose = 0, loop = 1, count = 1)pos = 0curr = 0#out_list.append(('++++++++', 1, -1, str(time.clock())))send(IP(dst = target)/ICMP(seq = tot_per+2)/"bye", verbose = 0)def recv_packet():sniff(prn = printrecv, store = 1, filter = flt, stop_filter = checkstop)def startup():handle.write("Start:" + ctime() + '\n')send_thread = ThreadWraper(send_packet,(),send_packet.__name__)send_thread.setDaemon(True)  send_thread.start()recv_thread = ThreadWraper(recv_packet,(),recv_packet.__name__)recv_thread.setDaemon(True)  recv_thread.start()signal.pause()if __name__ == '__main__':if vl != 0:handle.close()handle = sys.stderrsignal.signal(signal.SIGINT, signal_handler)startup()

相关的更新已经更新到了 github

Python网络质量测试工具增加乱序统计相关推荐

  1. 世纪前线网络质量测试工具 是什么_内推 | 大厂需要什么样的人才?看看这些JD就知道啦...

    还在等 "金三银四" 吗?别等啦,好职位现在就来啦.霍格沃兹测试学院最近收到一些不错的内推岗位,将会持续公布给大家,先来看看第一批职位吧. 1 腾讯-高级测试开发工程师(深圳) 薪 ...

  2. 世纪前线网络质量测试工具 是什么_成为一名软件测试工程师有什么前途?

    作为软件质量控制中重要的一环,软件测试工程师基本上处于地位高.待遇高的地位(注:我说的是真正意义上的软件测试工程师,不是那些"点点点"的测试员).同时软件测试的人才需求缺口越来越大 ...

  3. 世纪前线网络质量测试工具 是什么_【案例分享】利用手持式测试工具对建筑控制系统快速排障的方法...

    有人说智能楼宇是巨无霸行业, 其实一点都不为过. 截止去年, 全球40%的人口居住在城市中, 而中国这一比例达到了60%. 随着时代的发展,越来越多的建筑物正在部署智能控制系统,以此作为提高能源效率. ...

  4. 世纪前线网络质量测试工具 是什么_企业网络安全最佳实践指南(六)

    本系列文章共分为8篇,主要分享作者自身在企业网络安全建设和运维保障过程中的经验总结,包括网络安全管理.网络安全架构.网络安全技术以及安全实践等,力求全方位阐述企业在网路安全中的方方面面,为企业网络安全 ...

  5. 世纪前线网络质量测试工具 是什么_软件测试行业必备的高薪技能是什么?

    测试中的非功能测试其实范围比较广,性能.稳定性.鲁棒性.安全性等都可以放进这个范畴.如果真的细究起来,那真的就多了.非功能测试,一般比功能测试门槛高些,多数还是需要掌握一两种留意的测试工具,配合代码能 ...

  6. 世纪前线网络质量测试工具 是什么_卓拙科技 | 为全球用户打造更快、更稳定、更安全的的网络环境...

    成都IT内推圈成立于2016年,专注成都IT互联网领域的招聘与求职;覆盖精准IT人群10W+,通过内推圈推荐且已入职人数超过5000+,合作公司均系成都知名或靠谱公司.此公众号每天7:30AM准时推送 ...

  7. 世纪前线网络质量测试工具 是什么_6.1.1 测试工具分类

    工具,顾名思义,是指工作时所需用的器具,后引申为达到.完成或促进某一事物的手段.工具是一个相对概念,因为其概念不是一个具体的物质,所以只要能使物质发生改变的物质,相对于那个能被它改变的物质而言就是工具 ...

  8. 世纪前线网络质量测试工具 是什么_HTTP API测试工具大全,后端开发必备神器。...

    API测试的主要任务是看被开发的应用程序接口,是否符合期望,能否可靠的服务,能否提供API所预定的功能,然后就是测试性能如何,接口的安全性如何. 接下来我们就来看看,目前最流行的测试应用程序接口的工具 ...

  9. 世纪前线网络质量测试工具 是什么_上海控安发布汽车信息安全评估工具箱:一款标准化、自动化的安全测试工具...

    汽车网联化和智能化导致车载网络更为开放和复杂,面临着严峻的信息安全风险和挑战,汽车安全测试工作备受重视. 安全测试行业现状及痛点: • 工程师主要通过人为分析进行测试建模,对整车或零部件进行信息安全测 ...

最新文章

  1. 想知道什么是“成员变量”吗?
  2. JAVA数组的定义及用法
  3. python网页运行环境_Python小牛叔Web开发1:安装Visual Studio Code配置Python运行环境...
  4. 娓娓道来Promise
  5. 深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么?
  6. struts2漏洞修复
  7. Hbase CallQueueTooBigException 异常处理
  8. MVC进阶学习--HtmlHelper控件解析(五)
  9. 计算机二级2018VB题库百度云,计算机二级vb题库2017
  10. 在Mac下使用PanDownload完美下载BD云盘资源
  11. 金融科技发展布局之服务渠道建设
  12. s3c2410 2.6.22.1内核移植
  13. java计算机毕业设计喜枫日料店自助点餐系统源码+系统+数据库+lw文档+mybatis+运行部署
  14. NEERC 2014 D题 Damage Assessment
  15. 【win10】win10右键快速访问等文件夹导致资源浏览器崩溃的处理方法
  16. Codeforces 869 A.The Artful Expedient(博弈论)
  17. Vera++ 默认Rules文件功能解读
  18. 更新后谷歌浏览器皮肤背景自动变成黑色模式
  19. 我心目中的未来计算机300字,我心目中的现代化作文300字
  20. 三招让windows硬盘资料隐身

热门文章

  1. 典型偏差与非典型偏差理解
  2. 分享:微软网络电视Internet TV方面的一些消息
  3. javascript网站跳转代码
  4. 【转】微软UI自动化测试的技术演变
  5. Python中的bisect模块
  6. 2015-2016 ACM-ICPC, Central Europe Regional Contest (CERC 15) F.Frightful Formula(大数NTT)
  7. IE 6下测试有scriptManager控件的页面,内存不断增长
  8. 支付宝支持firefox了,请安装插件
  9. Delphi Android 取App的名称。
  10. 详解vue-router 中的导航钩子