TCP状态转换图

与世无争的帅哥 提交于 2020-02-23 16:10:42


图是参照TCP/IP详解自己画的分解图

正常打开关闭

在这里插入图片描述

三次握手

  • 第一次握手(SYN=1,seq=x)
    • 客户端发送SYN包到服务器
    • 客户端进入SYN_SEND状态,等待服务器确认
  • 第二次握手(SYN=1,ACK=1,seq=y,ack=x+1)
    • 服务器收到SYN包,确认客户的SYN
    • 服务器发送SYN+ACK包
    • 服务器进入SYN_RECV状态
  • 第三次握手(ACK=1,ack=y+1)
    • 客户端收到SYN+ACK包
    • 客户端发送ACK包
    • 客户端进入ESTABLISHED状态,服务器收到ACK包后也进入ESTABLISHED状态

四次挥手

因为TCP是全双工的,因此在关闭连接的时候,必须关闭两个方向上的连接。

  • 第一次挥手(FIN=1,seq=x)
    • 假设是客户端想要关闭连接,客户端发送一个FIN包,表示自己没有数据可以发送了,但是可以接收数据
    • 发送完毕,客户端进入FIN_WAIT_1状态
  • 第二次挥手(ACK=1,ack=x+1)
    • 服务器收到客户端的FIN包,表明自己接受到了客户端关闭连接的请求,但服务器没有做好准备关闭连接
    • 服务器进入CLOSE_WAIT状态
    • 客户端收到ACK包,进入FIN_WAIT_2状态,等待服务器关闭连接
  • 第三次挥手(FIN=1,seq=y)
    • 服务器准备好关闭连接,发送FIN包
    • 服务器进入LASK_ACK状态
  • 第四次挥手(ACK=1,ack=y+1)
    • 客户端收到FIN包,发送ACK包
    • 客户端进入TIME_WAIT状态
    • 服务器进入收到ACK包,进入CLOSED状态
    • 客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。

状态转换图

在这里插入图片描述

同时打开/同时关闭

同时打开

在这里插入图片描述

同时关闭

在这里插入图片描述

状态转换图

在三次握手/四次分手的基础上加入同时打开同时关闭的情况
在这里插入图片描述

传送数据

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!