【计算机网络】TCP的连接释放

TCP的连接释放俗称TCP的四次挥手,即客户端与服务器端之间传输4次报文段。

其具体的释放过程如图:

  1. 在释放之前,双方都处于连接(ESTABLISHED)状态。若客户端A进程已经没有数据向服务器B进程发送了,并且乡释放连接,则便向B发送连接释放报文段,其中FIN=1,序号seq=u(之前发送数据的最后一个字节的序号为u-1),这个报文表示:我已经没有数据要发送了,我要结束TCP连接了,所以告诉你一声。发送后便进入FIN-WAIT-1状态。
  2. 当B收到 A的连接释放请求报文段后立即发送确认报文段,此报文段中ACK=1,并将确认号ack=u+1,自己的序号seq=v(最后一个数据的序号+1)。此报文段表示我知道你没有数据要发送了,但我还不确定我有没有数据要发送给你。此时B进入CLOSE-WAIT(关闭等待)状态。此时TCP处于半关闭状态,即A没有数据向B发送了,B有可能向A发送数据。
  3. 当A收到B发送的确认报文段后,进入FIN-WAIT-2状态。此状态期间可以继续接受B发送来的数据。
  4. 当B也没有发送的数据后,应用程序便通知B释放TCP连接,此时B向A发送确认连接释放报文段,并FIN=1,ACK=1,确认号ack=u+1,序号seq=w。之后B便进入LAST-ACK状态。
  5. 当A收到B的确认连接释放报文段后,立即发送一个确认报文段,此时ACK=1,seq=u+1,ack+w+1。进入TIME-WAIT状态,等待2MSL时间,防止自己刚刚发送的确认报文段丢失,在此期间如果没有再收到B发来的报文段,则进入CLOSE状态。
  6. 当B收到A的确认报文段后也进入CLOSE状态,此时TCP连接才算真正的结束。

总结:

连接释放过程可以想象成两个人马上打完电话时的状态:

A:我没啥事情了,你呢?

                                                                 B:行,我知道了。我想想我还有啥事。

A:(等待B想事情中...)

                                                                 B:想起来了!还有一件事....

A:(黑脸中,但还是默默记录下B说的事情)

                                                                 B:对不住,又忘了一件事....

A:(心想B真是个事儿逼,但没办法,默默地听着)

                                                                 B:我没啥事了,挂电话吧。

A:好嘞!我马上挂!(心想终于完事了)

                                                                 B:(自己挂了电话)B掉线了

A:(心想,他不会以为我没挂吧,我先等等,确定一下)

                                    4分钟过去了........

A:(他娘的他还真挂了,我也挂吧)A也掉线了

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值