TCP 的运输连接管理


在本文中,“应答报文”就是“确认报文”,ack 和 ACK 分别指 TCP 报文首部的确认号字段和确认号字段是否有效的标志位。

一、有关 TCP 的一些说明

  • SYN 为 1 的报文不能携带数据,但要消耗掉一个序号,记为规定 1。
  • ACK 为 1 的报文可以携带数据,携带数据则消耗掉一个序号,不携带则不消耗,记为规定 2。
  • FIN 为 1 的报文可以携带数据,不携带也要消耗掉一个序号(通常不携带),记为规定 3。
  • 发送了 FIN 为 1 的报文的一方就再也不能主动发送数据给对方,记为规定 4。
  • 只有 ACK 为 1 时 ack 字段才有效,记为规定 5。

二、建立连接:三次握手

  • 第一步,客户端发送 SYN 为 1、seq 为 x 的请求报文,服务器端收到请求报文。

  • 第二步,服务器端发送 ACK 为 1、SYN 为 1、ack 为 x+1、seq 为 y 的确认报文,客户端收到回应报文并进入连接建立状态

  • 第三步,客户端发送 ACK 为 1、ack 为 y+1、seq 为 x+1 的确认报文,服务端收到该确认报文后进入连接建立状态。


三、释放连接:四次挥手

  • 第一步,客户端发送 FIN 为 1、seq 为 u 的连接释放报文,表示客户端请求释放从客户端到服务器端的单向 TCP 连接,且客户端不能再主动发送请求报文给服务器端。发送后客户端进入 FIN-WAIT-1 状态,这种状态的含义是客户端正在等待接收服务器端释放该单向连接的确认报文。
  • 第二步,服务器端发送 ACK 为 1、ack 为 u+1、seq 为 v 应答报文,并进入 CLOSE-WAIT 状态,这种状态的含义是客户端再也不会主动发送报文给自己(指服务器端),只能是自己主动发送报文给客户端,但客户端可以发送应答报文给自己。
  • 服务器端进入 CLOSE-WAIT 状态后,还可以主动发送报文给客户端,也可以选择立马发送请求释放服务器端到客户端的单向 TCP 连接的报文。
  • 第三步,服务器端发送 FIN 为 1、ACK 为 1 且 seq 为 w、ack 为 u+1 的连接释放报文,表示服务器端请求释放从客户端的单向 TCP 链接,且服务器端不能再主动发送请求报文给客户端。发送后服务器端发送 LAST-ACK 状态,这种状态的含义是服务器端正在等待接收客户端释放该单向连接的确认报文。
  • 最后一步,客户端发送 ACK 为 1、ack 为 w+1、seq 为 u+1 的应答报文,并进入时长为 2MSL 的 TIME-WAIT 状态。在这 2MSL 时间段内,如果服务器端没有再次发送同样的请求报文来,就说明客户端发送的应答报文没有丢失,如果服务器端发来了同样的请求报文,就说明客户端发送的应答报文丢失了,客户端需要再发一次同样的应答报文。过了 2MSL 时间段后,客户端进入 TCP 连接已完全释放的 CLOSE 状态,服务器端收到应答报文后,也会进入 CLOSE 状态。

四、三次握手和四次挥手规律总结

  • 若请求报文的 seq 为 x,则应答报文的 ack 必为 x + 1,因为 SYN 报文不能携带数据或 FIN 报文通常不携带数据(规定 1 和 3)。
  • 只有第一个被发送的报文的 ACK 为 0,其余报文的 ACK 都为 1。
  • 在四次握手中服务器端发出去的报文中,有两份报文的 ack 都是相同的,分别是对客户端要求自己释放“客户端 → 服务器端”连接的报文的确认报文,和要求客户端释放“服务器端 → 客户端”连接的报文,因为客户端已发送了 FIN 报文,不能再发送数据(规定 4)。
  • 三次握手中,第一次和第二次让客户端进入连接建立状态,第二次和第三次让服务器端进入连接建立状态。
  • 四次挥手中,第一次和第二次让“客户端 → 服务器端”单向连接释放,第三次和第四次让“服务器端 → 客户端”单向连接释放。

五、参考资料

《计算机网络》第 7 版 谢仁希 编著

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值