TCP的四次挥手

题记

前面理解了TCP的三次握手(建立连接的方式),释放连接的方式就是四次挥手了。

为什么要四次挥手呢?

白话版(解释):

第一步:A向B说,我不会再见你了。

第二步:B向A说,哦!我知道了。(但是此时只是A不想见B了,B还能找A啊!!!)

第三步:B也向A说,我也不会想见到你了。

第四步:A说:哦!!!

PS:(从此两人不再相见)

理解版(解释):

因为TCP是属于全双工的连接,所以在A发送请求并释放自己的连接的时候,B需要确认,但是B只是确认了不收A的消息,而A依然能够收到B的消息。但是B在释放自己的连接之后A也需要向A发送自己需要释放资源的报文段,A收到了也需要回应,所以需要4次。

需要了解的概念(重要):

终止比特FIN:释放一个连接。当FIN=1时,表明报文段的发送端的数据已发送完毕,并要求释放传输连接。

确认比特(ACK):只有当ACK=1时,确认号字段才有效,当ACK设置为0的时候,确认号无效,建立起链接之后,所有传送的报文段都必须把ACK设置为1。

TCP四次挥手的过程

第一步:数据传输结束之后,通信的双方都能够释放连接。例如A向B服务器发送一个释放报文段,并且A自己停止发送数据,主动关闭TCP连接。A将释放连接的报文段首部的FIN设置为1,序列号seq=u,等待B确认该条报文段。此时需要注意,由于TCP是全双工的,A停止发送数据,但是B还能够发送数据。

第二步:此时B需要发送确认消息,确认好ack=u+1(即A发送的序列号+1),报文自己的序列号就假定为seq=v,然后B的TCP通知高层应用进程。在第二次的时候由A到B这个方向的连接就释放了。但连接仍然是处于半开放状态,即B发送消息,A还是能够接收。

第三步:前面第二步已经知道,现在B发送消息A还是能够接收的。此时如果B已经没有需要向A发送数据了,其应用进程就通知TCP释放连接。

第四步:A收到连接释放的报文段的时候,必须发出确认,在确认报文段中。因为是确认的报文段,所以ACK=1,确认号为ack=w+1,自己的序号为seq=u+1。

经过了四个完整的步骤之后TCP连接才算是真正的释放。

图片过程方式解释过程

第一步:

第二步:

第三步:

第四步:

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybbgrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值