Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。

Wireshark软件安装

①软件下载路径: Wireshark安装链接按照系统版本选择下载,下载完成后,按照软件提示一路Next安装。
②大家可以选择官网下载,我下载的时候直接用的电脑管家的软件管理,它上面可以直接下载。我安装的是中文版的。
所以接下来我将用中文的讲解一个简单的转包示例

Wireshark 开始,抓包示例

先介绍一个使用wireshark工具抓取ping命令操作的示例,让读者可以先上手操作
1、打开Wireshark,主界面如下

wireshark抓java网络编程 使用wireshark抓包_wireshark抓java网络编程


2、选择菜单栏上捕获-> 选项,勾选WLAN网卡(这里需要根据各自电脑网卡使用情况选择,简单的办法可以看使用的IP对应的网卡),点击开始,启动抓包。

wireshark抓java网络编程 使用wireshark抓包_封包_02


3、wireshark启动后,wireshark处于抓包状态中。

wireshark抓java网络编程 使用wireshark抓包_抓包_03


4、执行需要抓包的操作,如ping www.baidu.com。

首先我们需要在windows下使用windows+R键启动,输入cmd,会打开一个命令行窗口,输入ping www.baidu.com

wireshark抓java网络编程 使用wireshark抓包_封包_04

5、操作完成后相关数据包就抓取到了。为避免其他无用的数据包影响分析,可以通过在过滤栏设置过滤条件进行数据包列表过滤,获取结果如下。说明:ip.addr == 39.156.66.18 and icmp 表示只显示ICPM协议且源主机IP或者目的主机IP为39.156.66.18的数据包。

wireshark抓java网络编程 使用wireshark抓包_Wireshark_05


6、ping www.baidu.com装包完成

Wireshakr抓包界面

wireshark抓java网络编程 使用wireshark抓包_Wireshark_06


WireShark 主要分为这几个界面

  1. Display Filter(显示过滤器), 用于过滤
  2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表
  3. Packet Details Pane(封包详细信息), 显示封包中的字段
  4. Dissector Pane(16进制数据)
  5. Miscellanous(地址栏,杂项)
    说明:封包列表中不同的协议使用了不同的颜色区分。协议颜色标识定位在菜单栏视图->着色规则。
  6. wireshark抓java网络编程 使用wireshark抓包_wireshark抓java网络编程_07

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

过滤器有两种,

一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录

一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在捕获 -> 捕获过滤器中设置
wireshark过滤器表达式的规则
1、抓包过滤器语法和实例

抓包过滤器类型Type(host、net、port)、方向Dir(src、dst)、协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)、逻辑运算符(&& 与、|| 或、!非)

(1)协议过滤

比较简单,直接在抓包过滤框中直接输入协议名即可。

TCP,只显示TCP协议的数据包列表

HTTP,只查看HTTP协议的数据包列表

ICMP,只显示ICMP协议的数据包列表

(2)IP过滤

host 192.168.1.104

src host 192.168.1.104

dst host 192.168.1.104

(3)端口过滤

port 80

src port 80

dst port 80

(4)逻辑运算符&& 与、|| 或、!非

src host 192.168.1.104 && dst port 80 抓取主机地址为192.168.1.80、目的端口为80的数据包

host 192.168.1.104 || host 192.168.1.102 抓取主机为192.168.1.104或者192.168.1.102的数据包

!broadcast 不抓取广播数据包

刚开始我们看一个简单的抓包分析,现在我们用wireshark工具来分析一下Tcp的三次握手

我们先了解一下什么时Tcp三次握手

wireshark抓java网络编程 使用wireshark抓包_抓包_08


开始抓包操作:

1、打开浏览器输入www.huanwei.com

2、用windows+R查看www.huawei.com的ip地址

![在这里插入图片描述](

wireshark抓java网络编程 使用wireshark抓包_封包_09


3、输入过滤条件 ip.addr == 221.178.0.151

wireshark抓java网络编程 使用wireshark抓包_wireshark抓java网络编程_10

前三个就是Tcp的三次握手1、第一次握手数据包

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图。

wireshark抓java网络编程 使用wireshark抓包_封包_11


2、第二次握手

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图

wireshark抓java网络编程 使用wireshark抓包_wireshark抓java网络编程_12


3、第三次握手

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

wireshark抓java网络编程 使用wireshark抓包_封包_13


我只讲了一下关于数据到达传输层建立连接所要经历的三次握手,后面的过程大家可以用这个软件自己分析一下!有错误的地方,还请大家帮忙指出!