一、引言
Wireshark作为一款开源免费且支持中文界面的网络抓包工具,相较于浏览器内置的Network面板和Fiddler等HTTP/HTTPS分析工具,其优势在于能够深入到底层网络协议(如TCP/IP)的解析与观察。通过Wireshark,用户可以清晰地看到网络数据包中的每一个字段,包括TCP的三次握手过程等,从而加深对网络协议的理解和应用。对于希望深入学习网络协议或进行网络故障排查的专业人士而言,Wireshark无疑是不可或缺的工具之一。当然,对大部人而言, wireshark 是学习网络协议最好的工具,同时也是辅助排查网络问题的利器。
二、安装使用
Wireshark开源地址:https://github.com/wireshark/wireshark
Wireshark下载地址:https://www.wireshark.org/download,这里有它的历史版本。根据需要自行下载,一路默认“下一步”安装大法就可以了。
开始抓包主页面

**WireShark 主要分为这几个界面

- Display Filter(显示过滤器),用于过滤
- Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表意义不一样
- Packet Details Pane(封包详细信息), 显示封包中的字段
- Dissector Pane(16进制数据)
显示过滤器![[图片]](https://i-blog.csdnimg.cn/direct/1f74433d817d4413846ab010818676eb.png)
使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
过滤器有两种:
一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录,显示过滤器也可以保存起来,方便下次使用。显示过滤器是指捕获了所有经过网卡的封包,然后在显示的时候进行过滤显示。明显,如果流量过大会导致捕获的内容过多,筛选变得卡顿。所以,我们可以在捕获阶段的时候就过滤掉无用的流量。
一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置比如像下面这样:
- tcp、udp 前者表示只显示tcp,后者表示只显示udp。也可以!tcp,表示显示除了tcp之外的。还可以tcp or udp,表示显示tcp和udp。
- host 192.168.1.110 ,表示只捕获ip地址为192.168.1.110的封包(这里的语法和显示过滤器不一样,请注意)
- dst port 80 or port 443、not port 53,表达端口的过滤(这里的语法和显示过滤器不一样,请注意)
过滤表达式的规则
![[图片]](https://i-blog.csdnimg.cn/direct/ebd6b6bb5ba24102854fd03d6eddba71.png)
- 协议过滤
比如TCP,只显示TCP协议。 - IP 过滤
比如 ip.src 192.168.1.102 显示源地址为192.168.1.102,
ip.dst192.168.1.102, 目标地址为192.168.1.102 - 端口过滤
tcp.port ==80, 端口为80的
tcp.srcport == 80, 只显示TCP协议的愿端口为80的。 - Http模式过滤
http.request.method==“GET”, 只显示HTTP GET方法的。 - 逻辑运算符为 AND/ OR
着色规则
封包列表有各种不同的背景色。其不同颜色代表不同意义。淡蓝色代码udp协议,红字黑底代表有问题的
封包。更多具体规则可 识图->着色规则
![[图片]](https://i-blog.csdnimg.cn/direct/e5e1dca609124b7bb8627fd03de1b3ef.png)
封包列表(Packet List Pane)
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。
![[图片]](https://i-blog.csdnimg.cn/direct/f229150ca69242d388219f0b26c3970e.png)
封包详细信息(Packet Detail Pane)
**这个面板最重要的,用来查看协议中的每一个字段。
各行信息分别为:
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议wireshark与对应的OSI七层模型
![[图片]](https://i-blog.csdnimg.cn/direct/74dc12cc777b4b7e83bc977d25ca3d87.png)
TCP包具体内容

从上面的图我们可以发现,应用层到传输层再到网络层到以太网层,其对应的数据包也在对应的往前
移。
我们可以想象一下,应用层数据往上传递,每经过一层就包上一个新得信封。等数据送到目的主机,然
后每往下一层就拆一个信封,最后拆到应用层也就是最开始得数据了。
![[图片]](https://i-blog.csdnimg.cn/direct/e1a8338c1bd24cea8bba627e9b33962b.png)
到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例
TCP三次握手

![[图片]](https://i-blog.csdnimg.cn/direct/63a07e5e327c4eb88b857a74b2259ac1.png)
三、常见问题
1.抓取localhost(环回地址)
localhost走的其实是npcap loopback adapter网卡(环回网卡),Wireshark抓包其实就是对网卡抓包。所以,Wireshark肯定是可以对localhost等环回地址进行抓包,只要捕获的时候选中网卡即可。

2.https的抓包
*因为HTTPS是HTTP的基础下加入SSL加密层,所以Wireshark抓到是密文。也就看不到请求参数和响
应结果,甚至连url链接都是密文。
要想在Wireshark抓包明文数据,可进行如下操作:
1、windows电脑配置环境变量 SSLKEYLOGFILE D:testssl.txt

2、Wireshark 编辑 - 首选项 - Protocols - TLS 最后一个选中D:testssl.txt。

如果是HTTP2可以进行http2.headers.method == "GET"或http2.headers.method == “POST”,如果是
HTTP可以进行http.request.method == "GET"过滤。
3.UDP协议的抓包
Wireshark除了可以抓包TCP同样也可以对UDP进行抓包,抓取方式和TCP方式大同小异。
![[图片]](https://i-blog.csdnimg.cn/direct/c7d859158bfc4473b83c1af55a26824c.png)
四、网络抓包补充
nc命令验证网络
服务端启动端口监听:nc -u -l 8189
客户端发送数据:echo “Hello” | nc -u 112.26.133.44 8189 -w 2
tcpdump抓包
tcpdump -i any port 8189 or port 8191 -w udp4.157.pcap
tcpdump -n -x -i any -s0 port 8189 or port 5191
可以同时抓取多个端口的,但是建议一次只抓取一个端口的包,因为出现过徽商银行客户网络老师将两个端口的映射地址配置反的案例,同时抓取两个端口导致无法及时发现问题。

2772

被折叠的 条评论
为什么被折叠?



