Wireshark
Wireshark(Ethereal)是一个免费的网络报文分析软件。网络报文分析软件的功能是抓取网络报文,并逐层显示报文中各字段取值。网络报文分析软件有个形象的名字“嗅探工具”,像一只猎狗,忠实地守候在接口旁,抓获进出该进口的报文,分析其中携带的信息,判断是否有异常,是网络故障原因分析的一个有力工具。网络报文分析软件曾经非常昂贵,Ethereal/wireshark 开源软件的出现改变了这种情况。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal/wireshark 是目前世界使用最广泛的网络报文分析软件之一。
Wireshark网络分析器的官网是:https://www.wireshark.org/
,目前,Wireshark的稳定发行版本为3.2.2
。
软件的基本应用
双击软件的图标,软件运行后,会显示如下的客户端界面。界面主要包含三个区域,从上到下,分别是工具区、捕获过滤器和网卡列表。在网卡列表中双击其中的一个网络设备即可开始捕获网络分组,又或单击选择一个网络设备,然后再点击工具区中的最左侧的蓝色斜三角图标,也可开始捕获网络分组。如果想停止捕获网络分组,再点击工具区上的红色正方形图标即可。
如下为捕获到的结果,结果主要分为三个区域,最上方是请求和响应列表,每一条记录表示一次请求或响应的交互。中间是对选中的“交互”进行解析后的结果。最下方是原始的数据格式。
注意事项
- 要学会使用Wireshark中的过滤器,毕竟要在大量的网络分组中寻找到自己要找的分组是非常费时费力的。下面介绍几个过滤规则:1、tcp,选出TCP协议的分组;2、http,选出HTTP协议的分组;3、ip.src ==192.168.1.102,选出源地址为192.168.1.102的分组;4、
ip.src==47.95.164.112 or ip.dst==47.95.164.112
,选出源地址和目标地址均为47.95.164.112
的分组;5、tcp.flags.syn==1
,选出TCP同步位报文段。 - 分组列表的面板中显示的信息包括:编号,时间,源地址,目标地址,协议,长度,以及分组信息。 可以看到不同的协议用了不同的颜色显示,当然也可以在
视图-->着色规则
中修改显示颜色的规则。 - OSI七层模型分别为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层;TCP/IP五层模型分别为:物理层、数据链路层、网络层、传输层和应用层。
- 在界面中间显示的是分组详细信息,在其中,可查看分组在每一层协议中对应的字段信息。在分组信息中,每一行内容会分别与TCP/IP网络模型的五层对应:Frame: 物理层的数据帧概况 -->物理层】,Ethernet II: 数据链路层以太网帧头部信息 -->【数据链路层】,Internet Protocol Version 4: 互联网层IP包头部信息–>【网络层】,Transmission Control Protocol: 传输层的数据段头部信息,此处是TCP–>【传输层】,Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议–>【应用层】
Wireshark的使用用例
1、查看本机的网络适配器列表
点击:捕获–>选项,即可打开“捕获接口”界面,如下为本机的网络适配器列表。
展开适配器,可得到其地址,如下所示
记录一次TCP三报文握手过程
先在命令行窗口中输入ipconfig
命令以查看IP地址。如下图所示,本机连接的是WiFi,其IPv4地址为:192.168.8.102。
TCP的连接建立就是一次握手,在TCP的连接建立过程中,也即在一次握手中,客户端(A)和服务器(B)之间交换了三个报文,这三个报文分别是:【A-->B】连接请求报文段(SYN=1,seq=x(x一般为0))、【B-->A】同步确认报文段(SYN=1,ACK=1,seq=y(y也一般为0),ack=x+1)、【A-->B】确认报文段(ACK=1,seq=x+1,ack=y+1)
。如下为用三报文握手建立TCP连接的示意图。
以CSDN网站为例,其网址为:https://www.csdn.net/
。在Wireshark开始捕获分组后,再在浏览器中输入CSDN的网址,让其转至CSDN首页。Wireshark在这一过程中抓到了许多分组,通过分析这些分组可知,本机的IP地址为:192.169.8.102,CSDN的IP地址为:47.95.164.112。
如下为在一次握手中,交换的第一个报文
,这个报文叫连接请求报文
,由于其首部的同步位SYN=1,所以也叫同步报文段
。通过这个报文可知,同步位SYN=1,序号seq=0,源IP地址是本机,目的IP地址是CSDN。
如下为在一次握手中,交换的第二个报文
,这个报文叫同步确认报文段
。通过这个报文可知,同步位SYN=1,确认位ACK=1,序号seq=0,确认号ack=1,源IP地址是CSDN,目的IP地址是本机。
如下为在一次握手中,交换的第三个报文
,这个报文叫确认报文段
。通过这个报文可知,确认位ACK=1,序号seq=1,确认号ack=1,源IP地址是本机,目的IP地址是CSDN。
参考
https://blog.csdn.net/budding0828/article/details/86560467?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://www.cnblogs.com/bylijian/p/8565601.html
https://www.cnblogs.com/Chilam007/p/6973990.html