首先我们看一下四次挥手的过程鉯及状态转换图
1、为什么不是三次挥手
其实上图中第二步和第三部是可以在一次报文中完成的,但是这种情况十分少见只有当服务器街道客户端连接被重置服务器断开连接接的请求的同时连接被重置服务器断开连接接,此时服务器会将自己的确认号和序列号同时发送洇此我们不使用三次挥手的说法,尽管它真实存在
2、为什么不是五次挥手?
当客户端与服务器不再进行通信時都会以 4 次挥手的方式结束连接。本节将介绍 4 次挥手的过程
客户端向服务器端发送断开 TCP 连接请求的 [FIN,ACK] 报文在报文中随机生成一个序列号 SEQ=x,表示要断开 TCP 连接如图所示。
当服务器端收到客户端发来的断开 TCP 连接的请求后回复发送 ACK 报文,表示已经收到断开请求回复时,隨机生成一个序列号 SEQ=y由于回复的是客户端发来的请求,所以在客户端请求序列号 SEQ=x的基础上加 1得到 ACK=x+1,如图所示 服务器端在回复完客户端的 TCP 断开请求后,不会马上进行 TCP 连接的断开服务器端会先确认断开前,所有传输到客户端的数据是否已经传输完毕确认数据传输完毕後才进行断开,向客户端发送 [FINACK] 报文,设置字段值为 1再次随机生成一个序列号 SEQ=z。由于还是对客户端发来的 TCP 断开请求序列号 SEQ=x 进行回复因此 ACK 依然为 x+1,如图所示 客户端收到服务器发来的 TCP 连接被重置服务器断开连接接数据包后将进行回复,表示收到断开 TCP 连接数据包向服务器發送 ACK 报文,生成一个序列号 SEQ=x+1由于回复的是服务器,所以 ACK 字段的值在服务器发来断开 TCP 连接请求序列号 SEQ=z 的基础上加 1得到 ACK=z+1,如图所示【实例】使用 Wireshark 捕获 TCP 连接被重置服务器断开连接接数据包并进行分析。
1) 捕获到 4 次挥手包如图所示。
2) 选择第 2 个数据包如图所示。
3) 选择第 3 个数据包如图所示。
4) 选择第 4 个数据包如图所示。
用wireshark 抓包看看tcp 连接被重置服务器斷开连接接的过程. 以前书上说tcp连接被重置服务器断开连接接,4次握手可我为什么wireshark 只能抓到3个包?
百度一下别人也有类似的疑问。
在网仩搜索了很久都没有找到满意的解释由于本人要填写实验报告,结果这样子就没法填了
按照理论,TCP连接被重置服务器断开连接接时应該是这样的:
1.客户端向服务器发送FIN包
2.服务器向客户端发送ACK包
3.服务器向客户端发送FIN包
4.客户端向服务器发送ACK包
可实际上截取的包显示为
1.客户端姠服务器发送FIN包
2.服务器向客户端发送ACK-FIN包
3.客户端向服务器发送ACK包
自己画的一个tcp 连接被重置服务器断开连接接的图:
首先我们看一下四次挥手的过程鉯及状态转换图
1、为什么不是三次挥手
其实上图中第二步和第三部是可以在一次报文中完成的,但是这种情况十分少见只有当服务器街道客户端连接被重置服务器断开连接接的请求的同时连接被重置服务器断开连接接,此时服务器会将自己的确认号和序列号同时发送洇此我们不使用三次挥手的说法,尽管它真实存在
2、为什么不是五次挥手?
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。