TCP、三次握手、四次挥手(图解)

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。TCP使用三次握手协议建立连接,使用四次挥手终止连接。具体过程如下所示:

1、三次握手

(1)客户端与服务端建立连接时,需要发送请求连接消息,请求号syn=1,序列号seq=123(假设为123),此时客户端进入SYN_SEND状态;

(2)服务端接收数据后,会发送确认操作(确认号ack=1,ack=123+1),然后服务端会发送与客户端建立连接的请求(请求号syn=1,序列号seq=456(假设为456)),此时服务端进入SYN_RECV状态;

(3)客户端收到数据之后,会再返回一个确认的操作(确认号ack=1,ack=456+1),至此服务端到客户端的链路建立成功;此时客户端进入ESTABLISHED状态,服务端收到ack后进入ESTABLISHED状态。

 2、四次挥手

(1)客户端发送完数据之后,向服务器请求断开连接,此时客户端进入FIN_WAIT_1状态;

(2)服务端收到FIN包之后,回复ACK包表示已经收到,但此时服务端可能还有数据没发送完成,此时服务端进入CLOSE_WAIT状态;客户端进入FIN_WAIT_2状态;

(3)服务端数据发送完成之后,发送FIN包给客户端,此时服务端进入LAST_ACK状态;

(4)客户端收到FIN包后,回复一个ACK包,此时客户端进入TIME_WAIT状态;

(5)服务端接收到ACK包后,此时服务端进入CLOSE状态。