【Wireshark抓包】:wireshark的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxcaifly/article/details/85339299

1.Wireshark简单介绍

抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle、wireshark,作为一个不是经常要抓包的人员,学会用Wireshark就够了,毕竟它是功能最全面使用者最多的抓包工具。

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

网络封包分析软件的功能可想像成 “电工技师使用电表来量测电流、电压、电阻” 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵的,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。

wireshark的官方下载网站: http://www.wireshark.org/

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。

wireshark是开源软件,可以放心使用。 可以运行在Windows和Mac OS上。

2.Wireshark不能做的

  1. 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。
  2. wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。

3.什么人会用到wireshark

  1. 网络管理员会使用wireshark来检查网络问题。
  2. 软件测试工程师使用wireshark抓包,来分析自己测试的软件。
  3. 从事socket编程的工程师会用wireshark来调试。
  4. 听说,华为,中兴的大部分工程师都会用到wireshark。

总之跟网络相关的东西,都可能会用到wireshark。我以前在预研Skydns的时候,经常用wireshark来分析域名解析的过程背后到底经历了什么过程,已经用来定位域名解析过程到底是卡顿在哪一步了。

4.wireshark 开始抓包准备工作

开始界面
在这里插入图片描述

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。

点击Caputre->Interfaces… 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包。
在这里插入图片描述

5.Wireshark 窗口介绍

在这里插入图片描述

WireShark 主要分为这几个界面

  1. Display Filter(显示过滤器), 用于过滤
  2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表
  3. Packet Details Pane(封包详细信息), 显示封包中的字段
  4. Dissector Pane(16进制数据)
  5. Miscellanous(地址栏,杂项)

6. Wireshark 显示过滤

在这里插入图片描述

使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。过滤器会帮助我们在大量的数据中迅速找到我们需要的信息

过滤器有两种,

  1. 显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录。
  2. 是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置。

7.保存过滤

在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102",
在这里插入图片描述

Filter栏上就多了个"Filter 102" 的按钮。
在这里插入图片描述

过滤表达式规则

主要的过滤表达式规则如下:

  1. 协议过滤:比如TCP,只显示TCP协议。
  2. IP 过滤:比如 ip.src 192.168.1.102 显示源地址为 192.168.1.102;ip.dst192.168.1.102, 目标地址为192.168.1.102。
  3. 端口过滤:tcp.port ==80, 端口为80的; tcp.srcport ==80, 只显示TCP协议的愿端口为80的。
  4. Http模式过滤:http.request.method==“GET”, 只显示HTTP GET方法的。
  5. 逻辑运算符为 AND/ OR

最常用的过滤表达式:

过滤表达式 用途
http 只查看HTTP协议的记录
ip.src 192.168.1.102 or ip.dst192.168.1.102 源地址或者目标地址是192.168.1.102
ip.addr=192.168.1.102 源地址或目标地址为192.168.1.102

8.封包列表(Packet List Pane)

封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。

你也可以修改这些显示颜色的规则, View ->Coloring Rules。

在这里插入图片描述

9.封包详细信息 (Packet Details Pane)

这个面板是我们最重要的,用来查看协议中的每一个字段。各行信息分别为:
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

10.wireshark与对应的OSI七层模型

在这里插入图片描述

11.TCP包的具体内容

从下图可以看到wireshark捕获到的TCP包中的每个字段。
在这里插入图片描述

12.实例分析TCP三次握手过程

看到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例。
三次握手过程为:
在这里插入图片描述

这图我都看过很多遍了, 这次我们用wireshark实际分析下三次握手的过程。

打开wireshark, 打开浏览器输入 http://www.cnblogs.com/tankxiao

在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",

这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图:
在这里插入图片描述

图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。

第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图:
在这里插入图片描述

第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图:
在这里插入图片描述

第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
在这里插入图片描述

就这样通过了TCP三次握手,建立了连接。

1.设置过滤条件

【1】http and ip.addr == 192.168.1.106 and tcp.port == 8080
【a】http:指定网络协议
【b】ip.addr == 192.168.1.106:指定服务器ip地址,请根据实际情况替换。
【c】tcp.port == 8080,指定端口号,请根据实际情况替换。
在这里插入图片描述

【2】点击apply
点击apply之后可过滤得到两个数据包,分别是HTTP请求和HTTP响应。
在这里插入图片描述

2.查看TCP数据流——Follow TCP Stream

【1】在任意数据包上右击,选择Follow TCP Stream
该步骤可以过滤出和该HTTP数据包有关的TCP数据包,包括TCP 3次握手,TCP分片和组装等。
在这里插入图片描述

【2】最终得到HTTP请求和响应
【a】红色背景字体为HTTP请求,蓝色背景字体为HTTP响应
【b】从User-Agent中可以看出,360浏览器兼容模式使用了IE8内核(该台计算机操作系统为XP,IE浏览器版本为8),这说明360浏览器使用了系统中的IE核。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hxcaifly/article/details/85339299