网络知识指南
TCP三次握手&四次挥手 TCP 三次握手 客户端发送 SYN 包请求连接,服务端返回 SYN+ACK 确认并请求连接,客户端再返回 ACK 确认,双方进入 ESTABLISHED 状态。 graph LR A[客户端] -->|1、SYN=1, Seq=x| B[服务端] B -->|2、SYN=1, ACK=1, Seq=y, Ack=x+1| A A -->|3、ACK=1, Seq=x+1, Ack=y+1| B A -->|4、ESTABLISHED| C[连接建立完成] B -->|4、ESTABLISHED| C 作用:建立可靠的双向连接,确保通信双方确认彼此的接收和发送能力。 过程: 第一次握手(客户端 → 服务端): 客户端发送带有 SYN=1,Seq=x 的报文,进入 SYN_SENT 状态,请求建立连接。 第二次握手(服务端 → 客户端): 服务端收到后,发送 SYN=1,ACK=1,Seq=y,Ack=x+1 的报文,进入 SYN_RCVD 状态,确认客户端请求并发起自身连接请求。 第三次握手(客户端 → 服务端): 客户端发送 ACK=1,Seq=x+1,Ack=y+1 的报文,进入 ESTABLISHED 状态。服务端收到后也进入 ESTABLISHED 状态,连接建立完成。 TCP 四次挥手 主动关闭方先发送 FIN 包请求关闭,被动关闭方返回 ACK 确认(此时仍可发送剩余数据)。 被动关闭方数据发送完毕后,再发送 FIN 包请求关闭,主动关闭方返回 ACK 确认,并进入 TIME_WAIT 状态(等待 2MSL 确保最后一个 ACK 到达),被动关闭方收到后立即关闭。 graph LR D[主动关闭方] -->|1、FIN=1, Seq=m| E[被动关闭方] E -->|2、ACK=1, Seq=n, Ack=m+1| D E -->|3、FIN=1, ACK=1, Seq=p, Ack=m+1| D D -->|4、ACK=1, Seq=m+1, Ack=p+1| E D -->|5、TIME_WAIT| F[等待超时后关闭] E -->|5、CLOSED| G[立即关闭] 作用:终止连接,确保双向数据传输都已完成,资源可安全释放。 过程: ...