用Wireshark查找网速故障

2018-11-09 01:16
网络安全和信息化 2018年2期
关键词:批处理数据包滑动

故障现象

笔者单位自2010年就购买了某公司网上阅卷系统,该系统采用服务器和客户端模式,服务器通过扫描仪将学生答题卡扫描成图片,再将图片按题分割;老师们使用不同的用户名和密码在自己的电脑上登录客户端程序,每个用户名分配不同的题目。该系统大大提高了老师们的阅卷速度。但是,这套阅卷系统在Windows 7以上系统中运行却非常慢,显示一张图片需要10秒钟以上,老师们怨声载道。

查找原因

既然是服务器和客户端模式,就必然会使用网络通信协议,我只要知道Windows 7系统对通信协议的影响,就可以查到问题的根源。于是我想到用Wireshark进行网络抓包,通过分析数据包查找问题的根源。

图1 Windows 7系统上的抓包

图2 Windows XP系统上的抓包

通过抓包发现,这套阅卷系统使用的是http协议。登录客户端时,客户端使用http协议访问服务器11次;退出客户端时,客户端使用http协议访问服务器2次。在Windows XP系统和在Windows 7系统上,客户端使用http协议访问服务器的次数是相同的,但是,Windows 7在使用http访问服务器时,却多了三个TCP传送包,这三个TCP包用时5秒多,请看图1和图2所示的截图。图1和图2中前三个数据包是客户端与服 务 器(88.91)通过TCP三次握手建立连接,然后是http请求和http应答。图1中序号18提示“tcp segment of a reassembled pdu”,意思是上层报文太大,进行了分片。通过两图的第四行可以看出,客户端POST请求的内容相同,都是GradeonNetWs.asmx。

为什么服务器回复给Windows 7系统时要分片呢?再仔细看看两图中的第一行,客户端在申请TCP连接时,自报的MSS(TCP最大报文段长度)都是1460,而Win值(滑动窗口能接受数据的长度)和WS的值却不一样,Windows 7中Win=8192、WS=256, 而 Windows XP 中Win=65535、W S=1,Windows 7中滑动窗口能接受的数据长度变小了,这一定与Windows 7的TCP滑动窗口设置有关。

原来从Vista开始,微软在TCP/IP协议栈里新加了一个叫做“Window Auto-Tuning”的功能。这个功能本身的目的是为了让操作系统根据网络的实时性能(比如响应时间)来动态调整TCP数据窗口的大小,从而达到实时优化网络性能的目的。但是,这个功能有时反而使TCP的响应变得很慢。原本一次可以接收的包可能被分解后多次接收,这就是问题的根源。

故障解决

建立一个批处理文件,比 如 aa.dat,在 文件中输入命令:netsh interface tcp set global autotuninglevel=disable。老师们只要在Windows 7系统上双击该批处理文件,就能禁用系统的TCP自动调整接收窗口大小的功能。如果要恢复原设置,只需要将disable改为normal即可。这个方法彻底解决了Windows 7网络阅卷慢的问题,从此老师们又可以享受快速阅卷的幸福了。

猜你喜欢
批处理数据包滑动
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
不装软件批处理为文件夹加锁
C#串口高效可靠的接收方案设计
一种新型滑动叉拉花键夹具
Big Little lies: No One Is Perfect
借助批处理 让Cortana变聪明
滑动供电系统在城市轨道交通中的应用
一种基于变换域的滑动聚束SAR调频率估计方法