世事千帆过,前方终会是温柔和阳光。。。。
wireshark使用教程与TCP三次握手分析
一、wireshark安装教程
wireshark安装包下载地址
下载地址:链接:https://pan.baidu.com/s/17wff8ecKF2xGzEIA75Tmgg
提取码:qxxl
安装教程
下载2.6.1版本对应安装。
直接next
二、简单抓包测试
由于我本次使用的是抓取本地电脑请求baidu.com的示例。所以 打开软件以后选择 捕获以太网。。然后双击两下
.进入以下界面
接下来执行需要抓包操作。使用CMD命令 :ping www.baidu.com .获取需要捕获的ip地址信息
然后在wireshark 软件过滤拦输入 过滤条件: ip.addr == 163.177.151.110
说明:ip.addr 表示过滤出目的主机ip地址为 163.177.151.110 或者源地址为163.177.151.110 的数据包。一次简单的抓包就是这样完成了.
但是你可能会很疑惑。。还是不太使用 。接下来为你介绍一下软件的使用教程。
三、软件页面介绍
主界面如图所示
- 过滤栏:用于设置过滤条件进行数据包列表过滤。菜单路径:【分析】->【显示过滤器】
- 数据列表区【数据包列表】:显示捕获到的数据包记录。每条记录包含编号、时间戳、源地址、目标地址、协议长度。以及数据包信息。
- 数据包详细信息:点击数据包列表内任意一条记录会显示改数据包所以详细内容
选择主列表任意一行,点击可以展示如下页面。这里展示的就是一个请求数据包的详细信息
Frame对应了物理层
Ethernet II 对应了数据链路层
Internet protocol 对应网络层
Transmission control Protocol 对应传输层
Hypertext Transfer Protocol 对应应用层 【图片中未展示】
四、过滤器表达式语法
1.抓包过滤器语法和实例
抓包过滤器类型Type(host、net、port)、方向Dir(src、dst)、协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)、逻辑运算符(&& 与、|| 或、!非)
(1) 协议过滤
比较简单,直接在抓包过滤框中直接输入协议名即可。
TCP
HTTP
ICMP
(2)IP过滤
源地址或目的主机 ip为192.168.1.104
host 192.168.1.104
源地址为192.168.1.104
src host 192.168.1.104
目标地址为192.168.1.104
dst host 192.168.1.104
(3)端口过滤
tcp.port == 80
或
tcp.port in {80}
(4)逻辑运算符过滤
抓取主机地址为192.168.1.104、目的端口为80、81的数据包
ip.addr == 192.168.1.104 && tcp.port in {80 81}
抓取主机为192.168.1.104或者192.168.1.102的数据包
ip.addr == 192.168.1.104 || ip.addr == 192.168.1.102
2.显示过滤器语法和实例
(1)比较操作符
比较操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于。
(2)协议过滤
比较简单,直接在Filter框中直接输入协议名即可。注意:协议名称需要输入小写:udp、tcp、icmp
(3)ip过滤
ip.src ==192.168.1.104 显示源地址为192.168.1.104的数据包列表
ip.dst==192.168.1.104, 显示目标地址为192.168.1.104的数据包列表
ip.addr == 192.168.1.104 显示源IP地址或目标IP地址为192.168.1.104的数据包列表
#####(4)过滤端口
tcp.port ==80, 显示源主机或者目的主机端口为80的数据包列表。
tcp.srcport == 80, 只显示TCP协议的源主机端口为80的数据包列表。
tcp.dstport == 80,只显示TCP协议的目的主机端口为80的数据包列表
(5) http 模式过滤
http.request.method==“GET”, 只显示HTTP GET方法的
(6)逻辑运算符 为 and/or/not 或者【&& 、|| 、!】
过滤多个条件组合时,使用and/or。比如获取IP地址为192.168.1.104的ICMP数据包表达式为ip.addr == 192.168.1.104 and icmp
(7)按照内容格式过滤
如下我想过滤出data数据包中为abcd"内容的数据流。包含的关键词是contains 后面跟上内容。
data contains “abcd”
如果知道明确内容,和ip
ip.addr == 192.168.1.104 && data.text== ‘abcd’
更多过滤规则可参考:
wireshark过滤规则
五、TCP三次握手分析
TCP的头部格式示例图
序列号:在初次建立连接时,客户端和服务端为【本次连接】随机初始化一个序列号。【序列号用于解决网络包乱序的问题】
确认号:用于表示【接收端】告诉【发送端】对上一个数据包已经成功接收。【确认号,可以用来解决网络包丢失的问题】
标记位: SYN为1 表示希望创建连接。ACK为1,表示确认号字段有效。FIN为1表示,希望断开连接。RST为1,表示TCP连接出现异常,需要断开。SEQ请求序列号
序列号和确认号作用图例
1.tcp三次握手连接建立过程
- 服务端主动监听某个端口,处于LISTEN状态
- 第一次握手建立连接,客户端向服务端发送 SYN 报文 (SYN=1,SEQ=X,X为客户端序列号client_isn)
- 第二次握手,服务端接收到请求并允许连接,就会返回SYN+ACK报文(SEQ=Y,ACK_NUM=X+1,SYN=1,ACK=1)给客户端,告诉它确认允许连接。报文说明【SEQ为服务端序列号,即Sequence Num。ACK_NUM为确认号(Acknowledgement),ACK_NUM=X(客户端序列号)+1】
- 第三次握手,当客户端接收到服务端返回的【SYN+ACK报文】后,客户端需要再次发送确认包ACK(SEQ=X+1. ACK_NUM=Y+1)。
- 连接建立成功
2.wireshark抓包获取访问指定服务端数据包
Step1: 由于我这提前知道了需要过滤的ip,所以可以直接启动wireshark, 输入过滤条件 ip.addr== 192.168.140.82 开始抓取。你也可以自行去编写个接口测试
Step2:浏览器访问接口
192.168.140.82:10100/api/addressResolution?instId=XPOSDZ_01_INST&address=山东省济宁市任城区济宁市草桥口
Step3: 观察wireshark
观察前3行可以看到。主机192.168.73.52和192.168.140.82来回发了三次应答请求。
- 第一次由我本机73.52的49799端口请求到140.82主机的10100端口,发送syn报文
- 第二次由140.82主机的10100端口向73.52主机 发送了【SYN+ACL】报文。
- 第三次由73.52主机的49799端口向140.82主机的10100端口,发送【ACK】报文
shark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
详细说明
第一次握手数据包
点击第一条发送记录,可以看到如下界面。客户端73.52发送一个tcp到140.82服务端, 标志位SYN=1. 序列号为0,代表客户端建立链接。
数据包的关键属性如下:
SYN :标志位,表示请求建立连接
Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据
Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据
第二次握手的数据包
第二行记录可以看到。服务器140.82发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的ISN加1,即0+1=1, 如下图
数据包的关键属性如下:
Seq = 0 :初始建立值为0,表示当前还没有发送数据
Ack = 1:表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)
第三次握手的数据包
第三行记录可以看到。客户端发送了ACK确认包。SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1
数据包的关键属性如下:
ACK=1 :标志位,表示已经收到记录
Seq = 1 :表示当前已经发送1个数据
Ack = 1 : 表示当前端成功接收的数据位数,虽然服务端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)。
就这样通过了TCP三次握手,建立了连接。开始进行数据交互。
一个完整的tcp三次握手就是这样完成的。
学习抓包过程还是挺有趣的,有兴趣的小伙伴去尝试玩耍一下tcp四次挥手的抓包过程。再来一起讨论哦。
详细教程
https://zhuanlan.zhihu.com/p/350195734
关注【一起收破烂】回复【006】获取最新大厂java面试资料以及简历模型120套哦~**