看了很多文章,发现对四次挥手的报文的标志位有一些差异。看到的主流的是
- 第一次挥手 FIN = 1 ACK = 1
- 第二次挥手 ACK = 1
- 第三次挥手 FIN = 1 ACK = 1
- 第四次挥手 ACK = 1
如果是这样的,那我想知道第一次挥手和第三次挥手为什么需要将ACK置为1,还是这个ACK只是为了确认之前的数据报文,和四次挥手关系不大。
看了很多文章,发现对四次挥手的报文的标志位有一些差异。看到的主流的是
如果是这样的,那我想知道第一次挥手和第三次挥手为什么需要将ACK置为1,还是这个ACK只是为了确认之前的数据报文,和四次挥手关系不大。
第一次挥手ACK是确认之前数据传输的包。
第三次挥手由于是服务端主动发起的FIN报文(第二次挥手报文里面ACK置1已经表示确认收到了客户端的FIN报文),所以第三次挥手可以设置ACK = 1,也可以不设置,我猜是为了规范化符合tcp协议的要求,尽量每个包都去确认,让建立连接后的所有传输的包都有ACK确认。
7 回答3.2k 阅读✓ 已解决
5 回答3.6k 阅读
1 回答1.2k 阅读