最近学习了wireshark抓包软件,利用它简单测试了一下网络的性能,希望有想学习的程序猿们做个参考
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。
启动软件
启动桌面软件图标,我使用的是Wireshark 2.4.3 64bit版本
捕获报文基本分析实验
- 打开程序后,选择Capture(捕获)—Start(开始),或者使用Ctrl +E键。
- 一小段时间过后,再次进入Capture(捕获)菜单,然后选择Stop(停止)或者Ctrl+E键。
-
停止捕获后,在对话框下可以看到缓冲器中的所有实际“数据”。分析该卷标结构及其内容。如图3.1所示
3.1 解码窗口
看出解码窗口分为三部分,最上面是捕获的报文,中间是报文的解码,最下面是报文的二进制码,即发送的最原始内容。我们可以看出捕获到的报文有UDP,SSL,TCP等协议,解码表对应每一个层次的协议进行解码分析。
数据包的分析
IP数据包协议分析:如图3.2所示
IP协议报头打开IP的标签,可以看到有IP协议报头的详细解码,其中IP协议报头长度为20个字节。其中从上图得到的数据分析如下:
第一部分,Version=4,表示IP协议的版本号为4,即IPV4,占4位,Header Length=20 Bytes,表示IP包头的总长度为20个字节,该部分占4个位。所以第一行合起来就是一个字节。
第二部分Differentiated Services Field=OX00,表示服务类型为0。用来描述数据报所要求的服务质量。Total Length=78Bytes,表示该IP包的总长度为78个字节。该部分占两字节。Identification=11736,表示IP包识别号为11736。该部分占两个字节。
第三部分Flags,表示片标志,占3个位。各位含义分别为:第一个“0”不用,第二位为不可分片位标志位,此处值为“x”表示该数据表不允许分片。第三位为是否最后一段标志位,此处“0”表示最后一段。Fragment Offset=0,表示片偏移为0个字节。该部分占13位。 Time to Live=64,表示生存时间TTL值为64,占1字节。Proctol=17(UDP),表示协议类型为UDP,协议代码是6,占1字节。
第四部分Header Checksun=0XC926(validation disabled),表示IP包头校验和为C926,括号内的validation disabled表示此IP数据包禁止校验。该部分占两字节。Source Address=[192.168.1.39],表示IP数据包源地址为:172.168.1.39,占四字节。Destination Address=[192.168.1.41],表示IP数据包目的地址为:192.168.1.41,占四字节。
捕获并分析地址解析协议(ARP)
1)选择Capture(捕获)――Options (选项)。
2)在Options (选项中,选择)Capture Filter(定义过滤器)。
3)从协议列表中选择Ethernet type 0x0806 (ARP)。
4)已经定义了过滤器,可以按Start来捕获流量。
5)停止捕获并打开代码窗口。看到捕获到的帧
6)分析捕获到的结果(即解释数据包的内容和协议具体实现过程)。
第一个ARP数据包详情
从如图3.3所示可以看出,可以分析ARP的工作过程:首先,在本局域网上的所有主机上运行的ARP进程都收到本机发送的ARP请求分组(从目标地址为Broadcast可以看出)。其次,从摘要中,PA=[192.168.1.39],可以看出ARP请求地址为192.168.1.39,而此IP地址的网络设备在ARP请求分组中见到自己的IP地址,就向本机发送ARP响应分组,并写于自己的硬件地址。至于在此ARP分组的其余的所有主机都不会理睬这个ARP请求分组。从以上可以分析,ARP请求分组是广播的,但ARP响应分组是单一的,即一对一。
一下对第一个ARP包进行分析。
Destination,6个字节,可以看出ARP包是采取广播方式。
Source,6个字节,值为4437e6d3959b,这个MAC地址为发起该ARP的主机接口的MAC地址,即源MAC地址。
Ethertype,2个字节,是协议类型,0806代表ARP类型,表示该帧是ARP帧。
Hardware type,2字节,是硬件类型。我们用的是标准以太网,值为1H(0001)。
Protocol type,长度2字节,是协议类型,我们用的是IP协议,IP对应的值为800,所以显示值为0800.
Hardware size,1字节,记录硬件地址长度,这个值告诉处理该帧的程序,读取硬件地址时读到哪里结束。因为使用到网卡的MAC地址,而MAC地址的长度为6字节,所以这里显示长度为6。
Protocol size,1字节,为协议长度,这个值告诉处理该帧的程序,读取协议地址时读到哪里结束。这次通信使用IPV4协议,而IPV4为4字节,所以该字段的值就是4。
Opcode,2字节,为操作类型,ARP请求为1,ARP响应为2,图中是0001,所以这是一个ARP请求。
Sender MAC address,6字节,用来定义发送者站的物理地址长度,这里为发送者MAC地址,该地址用来告诉本次操作的对方,是哪个MAC地址对它进行了操作。
Sender IP address,4字节,用来定义发送站的逻辑地址长度,这里为发送者IP地址,该地址用来告诉本次操作的对方,是哪个IP地址对它进行了操作。
Target MAC address,6字节,用来定义目标的物理地址长度,这里为接收者MAC地址,用来告诉本次操作的对方,是哪个MAC地址应该接收并处理该帧。
Target IP address,4字节,用来定义目标的逻辑地址,这里为接收者IP地址,用来告诉本次操作的对方,是哪个MAC地址应该接收并处理该帧。
网络数据流量的分析
图形化数据分析 IO Graphs
操作界面测试结果曲线图
这里是分析一个实时视频上传服务的抓包数据,过滤条件:tcp.analysis.flags,表示设备和服务器之间的数据链路。连接时间12:57:20,断开时间13:04:00。而这中间可以明显看到13:00:00-13:01:20数据包的传输最多,具体原因查看具体时间段内的数据交互。
图形化数据分析 Time/Sequence Graph
操作界面测试结果曲线图
横坐标代表了时间偏移量,纵坐标代表着tcp数据包中的seq值得变化,途中可以明显发现0-18s的数据seq没有任何变化,代表数据从192.168.1.41:54753 到 61.135.169.121:443在此时间段内没有任何数据,但是发现18-20s内突然接收大量数据。
异常数据统计分析
测试结果测试结果
同样是对刚刚的数据包进行分析,可也统计得出警告数据包,不仅可以得到注意数据包统计,还有聊天数据包,这里也是帮助我们进行数据性能分析的重要工具。
网络存在的问题
在线一段时间观看电影,并用wireshark测试网络中的流量情况。
经过测试,得到以下结果。如图5.1和5.2所示
测试结果界面
测试结果曲线图
通过图5.1我们不难发现,在数据传输的过程中Wireshark抓取的数据包全部TCP的数据包,而其他的数据包均没有抓取到。再通过图5.2的曲线图,我们可以更加清楚的看到,TCP数据包的曲线以及和总数据包的曲线重叠在一起,而其它的数据包的曲线未零。这表明,TCP的数据包以及几乎占用了整个带宽,这就使的其它的数据因为堵塞,而无法通过,造成了网络性能的急剧下降。于此同时,实验室其他同学的网速也会变得非常缓慢。
作者有话说:看似很难很难的网络性能分析其实用软件分析起来也变得不难理解,但是,要说网络拓扑图,交换机之类的概念我还是一个懵逼的状态(=_=)希望这篇文章对有需求的程序猿有帮助~
网友评论