TCP的连接管理(建立与释放过程)

TCP的运输连接管理

本片文章总结了TCP连接的建立和释放过程,过程说明中只说明了相应过程的做了什么,具体的报文段字段可以在图片中查看

TCP的连接建立(三报文握手)

TCP的连接管理(建立与释放过程)_第1张图片
前提假设:A为客户端 ,B为服务端

连接建立过程

  1. B建立传输控制模块(TCB)等待客户请求,A建立传输控制模块准备发送请求
  2. A发送连接请求报文段,不能携带数据,消耗掉一个序号
  3. B收到连接请求后发送确认报文段,不能携带数据,消耗掉一个序号(可以将这一步分为ACK=1,ack=x+1和SYN=1,seq=y两步,形成四报文握手)
  4. A收到B的确认报文段后向B发送ACK报文段,可以携带数据,但如果不携带数据则不消耗序号

为什么A最后还要发送一次确认报文?

如果A最后不发送一次确认报文,那么在网络中存在的已失效的连接请求报文段传到B后,B发送确认报文段后就进入连接建立状态,而A对B发送过来的确认报文不会有任何反应,这将白白消耗B很多的资源。如果A最后发送一次确认报文就不会有这个问题。


TCP的连接释放(四报文握手)

TCP的连接管理(建立与释放过程)_第2张图片
前提假设:A为客户端 ,B为服务端,假设A先释放连接

连接释放过程

  1. A发出连接释放报文段,即使不携带数据也会消耗一个序号
  2. B向A发送确认报文段,消耗一个序号,这是TCP连接处于半关闭状态,A不能发送数据但可以接受B发送的数据
  3. 在B没有数据要发给A时,B向A发送连接释放报文段
  4. A收到B的连接释放报文段后发送确认报文段
  5. A等待时间等待计时器(TIME-WAIT timer)设置的2MSL后才进入CLOSED状态
  6. A、B进入CLOSED状态时撤销相应传输控制块

等待时间等待计时器的作用

  1. 保证A发送的最后一个ACK报文段能够到达B
  2. 经过2MSL可以是本连接持续的时间内产生的所有报文都从网络中消失,防止在下一次新的连接中出现这种旧的“已失效的连接请求报文段连接请求报文

保活计时器(keepalive timer)

  • 超过保活计时器所设置的时间时服务端发送探测报文探测客户端是否发生了故障,防止这种无效的连接一直占用资源

你可能感兴趣的:(计算机网络)