详解三次握手ACK和Ack,理解透彻参数意义

在三次握手发送的数据包中有两个ACK值(Acknowledgement),人们习惯一个大写,一个小写来加以区分。
其实ACK也好,ack也好,只不过是个代号而已,叫他张三也行,叫他李四也没事,没有任何影响,因为咱们不会改动那个东西。就算是把名字记反了,对咱们也没有任何影响,大家知道三次握手的数据包里有这么两个东西就行了。
一个是确认值(Acknowledgement),为1便是确认连接。
另一个是确认编号(Acknowledgement Number),即接收到的上一次远端主机传来的seq然后+1,再发送给远端主机。提示远端主机已经成功接收上一次所有数据。
本人有轻度强迫症,能搞清楚的问题我不喜欢迷迷糊糊的,再加上这个问题想搞清楚其实很简单,所以用wireshark抓包看了一下,然后通过抓包我把我的理解说出来跟大家讨论讨论,我哪里理解的不对希望大家及时帮我改正错误。


三次握手的数据包,红框内为第一次握手时IP为192.168.56.1的请求端(请求连接端)发送的seq,值为0(实际中此值不一定为0)


红框内为第二次握手时IP为192.168.56.130的服务端(被请求连接端)发送的seq,因为是服务端发给请求端的一个新的seq,所以值为0(实际中此值不一定为0)
蓝框内为Ack(Acknowledgement Number确认编号)即我理解的小写的ack,值为第一次握手时请求端发送来的seq+1即0+1=1


红框内为第三次握手时IP为192.168.56.1的请求端(请求连接端)发送的seq,因为第一次握手时它发送给服务端的seq为0(黄框内),在上次的基础上+1,值就是1。
蓝框内的Ack(Acknowledgement Number确认编号)还是我理解的小写的ack,值为第二次握手时请求端发来的seq+1,即绿框中的seq+1,值为1

那么问题来了,那个起确认连接作用的确认值即我理解的那个大写的ACK在哪呢?


在这里。

展开看一下:

对照网上找到的关于第二次握手的标志位的一张图可以看出:
确认位即ACK,为1即为确认进行连接
同步位即SYN,从第一次握手时,此位就为1

下面是网上找到的三次握手的标志图,供参考:

第一次握手的标志位
我们可以看到标志位里面只有个同步位,也就是在做请求(SYN)

第二次握手的标志位
我们可以看到标志位里面有个确认位和同步位,也就是在做应答(SYN + ACK)

第三次握手的标志位
我们可以看到标志位里面只有个确认位,也就是再做再次确认(ACK)

至此问题结束

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在TCP的三次握手四次挥手中,seq和ack是用来进行序列号和确认号的传递和确认的。在三次握手中,客户端发送SYN报文段给服务端,其中的seq字段表示客户端的初始序列号。服务端收到后,会回复一个SYN+ACK报文段,其中的ack字段表示服务端确认客户端的序列号,并且在自己的seq字段中设置自己的初始序列号。最后,客户端再回复一个ACK报文段,其中的ack字段表示客户端确认服务端的序列号。这样,三次握手完成了连接的建立。\[1\] 在四次挥手中,当客户端想要关闭连接时,会发送一个FIN报文段给服务端,其中的seq字段表示客户端的序列号。服务端收到后,会回复一个ACK报文段,其中的ack字段表示服务端确认客户端的序列号。然后,服务端也会发送一个FIN报文段给客户端,其中的seq字段表示服务端的序列号。最后,客户端再回复一个ACK报文段,其中的ack字段表示客户端确认服务端的序列号。这样,四次挥手完成了连接的关闭。\[2\] 总结起来,seq字段用于传递发送方的序列号,ack字段用于确认接收方已经收到的序列号。通过这样的序列号和确认号的交互,TCP可以保证可靠的数据传输和连接的建立与关闭。 #### 引用[.reference_title] - *1* *3* [两张动图-彻底明白TCP的三次握手四次挥手](https://blog.csdn.net/qzcsu/article/details/72861891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [一文搞懂TCP的三次握手四次挥手](https://blog.csdn.net/m0_38106923/article/details/108292454)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值