🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### 三次握手--创建连接 ```[sequence] Title: TCP三次握手 客户端->服务器: 发送序号=200 标志位(SYN=1) [第一次] 服务器->客户端: 发送序号=500 确认序号=201 标注位(SYN=1,ACK=1) [第二次] 客户端->服务器: 发送序号=201 确认序号501 标志位(ACK=1) [第三次] ``` #### 四次挥手--断开连接 ```[sequence] Title: TCP四次挥手 客户端->服务器: 发送FIN=200 确认序号ACK=500 标志位(ACK=1,FIN=1) 关闭服务器读通道 服务器->客户端: 确认序号=201 标注位(CK=1) 服务器确认,关闭客户端写通道 服务器->客户端: 发送FIN=500 确认序号ACK=201 标志位(ACK=1,FIN=1) 关闭服务器写通道 客户端->服务器: 确认序号ACK=501 标志位(ACK=1) ``` 为什么要3次、4次,不能2次就搞定吗? > 连接: 如果2次,当服务端发送给客户端之后,服务端并不知道是否客户端真正的连接好了 > 关闭:因为TCP是双工连接,一个TCP连接存在双向的读写通道,所以要**先关读再关写**。