TCP连接的建立与释放过程

TCP连接需要解决的问题

  1. 需要让通信双方能感知到对方的存在
  2. 过程中需要协商一下一些参数,如最大窗口值,时间戳选项,服务质量等
  3. 双方能够对运输实体资源(如数据缓存大小,连接表中的项目等)进行分配

三次握手的具体过程:

在这里插入图片描述

能否使用2次握手:不行

在这里插入图片描述这里假设2次握手后,双方就处于连接建立状态:ESTABLISHED

  1. 客户端向服务端发送连接建立请求报文A,但是A报文由于某些原因在网络中滞留超时
  2. 客户端超时重传请求报文B,此时报文B到达服务端,服务端返回报文B的确认报文
  3. 此时双方建立连接,然后进行数据传输,数据传输完成后进行四次挥手
  4. 连接释放后,在网络中滞留的报文A到达了服务端,服务端以为客户端又要建立连接
  5. 然后申请资源,返回报文A的确认报文,处于连接建立状态
  6. 此时客户端并不知情,然后服务端一致等待客户端数据,此时连接一直存在,资源一直占有,影响计算机资源

能否使用4报文:

多余没必要

四次挥手的详细过程

客户端主动发起断开请求:两次挥手后
在这里插入图片描述
此时处于半关闭状态,关闭的是客户端–>服务端这个方向的连接,客户端不能再向服务端发送数据,但是依然可以接受服务端发来的数据。

服务端也没有数据向客户端发送,将进行服务端—>客户端方向的连接的释放:
在这里插入图片描述

TIME-WAIT的存在的意义:

客户端为何不直接进入CLOSED状态,还要等2MSL时间呢?
在这里插入图片描述
假设,客户端向服务端发送了FIN的确认的报文后,就直接关闭了,但是这个报文在网络传输中,可能会丢失。
然后,服务端那边的FIN报文超时重传定时器到了,又会去重传FIN报文,实际上客户端此时已经不会去理会这个报文了,导致服务端不停的发送FIN重传报文,浪费资源,无法进入关闭状态。

TCP保活定时器

在这里插入图片描述

本文中出现的图,来自网络公开课,感兴趣的朋友可以搜一下学习一下,我这里只做学习记录和分享,很感谢老师可以将精品课程分享出来供大家学习:https://www.bilibili.com/video/BV1c4411d7jb?p=62&spm_id_from=pageDriver

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值