计算机网络——TCP连接的释放(四报文挥手)

    TCP通过三报文握手建立可靠地通信连接后,再完成了数据传输之后,会通过四报文挥手来释放连接。
在这里插入图片描述
    假设TCP客户进程的应用进程通知其主动关闭TCP连接。
在这里插入图片描述
    TCP客户进程会发送TCP连接释放报文段,并进入终止等待1状态。该本文段首部中的终止位FIN和确认位ACK的值都被置为1,表明这是一个TCP连接释放报文段。同时也对之前收到的报文段进行确认。序号seq字段的值设置为u,等于TCP客户进程之前已经传送过的数据的最后一个字节的序号加1。确认段ack字段的值设置为v,等于TCP客户进程之前已经收到的数据的最后一个字节的序号加1。
在这里插入图片描述
    TCP服务器进程收到该链接释放报文段后,会发送一个普通的TCP确认报文段并进入关闭等待状态。该报文段首部中的确认位ACK的值被设置为1,表明这是一个普通的TCP确认报文段。序号seq字段的值设置为v,等于TCP服务器进程之前已经传送过的数据的最后一个字节的序号加1。确认号ack字段的值设置为u+1。
    TCP服务器进程这时通知高层应用进程:TCP客户进程要断开与自己的TCP连接。此时,从TCP客户进程到TCP服务器进程这个方向的连接就释放了,这时TCP连接处于半关闭状态,TCP客户进程没有数据要发送了,但TCP服务器进程如果还有数据要发送,TCP客户进程仍然要接收。
在这里插入图片描述
    TCP客户进程收到确认报文段后,就进入终止等待2状态,等待TCP服务器进程可能存在的数据传输。如果使用TCP服务器进程的应用进程已经没有数据要发送了,应用进程就通知其TCP服务器进程释放连接。
在这里插入图片描述
    TCP服务器进程发送TCP连接释放报文段并进入最后确认状态。其报文段首部中各位数值如图所示。
在这里插入图片描述
    接收到TCP连接释放报文段后,TCP客户进程会发送一条普通的TCP确认报文段,紧接着进入时间等待状态。而TCP服务器进程收到该确认报文段后就会进入关闭状态。TCP客户进程在等待2MSL(最长报文段寿命)后,进入关闭状态。
在这里插入图片描述
    设置等待时间是有原因的,譬如上图所示的情况,TCP客户进程发回的TCP普通确认报文段发生了丢失,而此时TCP客户进程已经关闭,那么TCP服务器进程就会一直重复发送确认报文段,要求超时重传,但却没有得到回应,无法进入关闭状态。
在这里插入图片描述
    而加入TCP客户进程出现了故障,TCP服务器进程要如何发现了,这就要用到保活计时器。TCP服务器进程每收到一次客户进程的数据,就重新设置并启动保活计时器。若计时器定时周期内没有收到TCP客户进程发来的数据,则当计时器到时后,TCP服务器进程就向TCP客户进程发送一个探测报文段,以后每隔75秒就发送一次,若一连发送10个探测报文段后仍无TCP客户进程的响应,服务器进程就认为客户进程所在主机出现了故障,关闭这个连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值