TCP(传输控制协议,Transmission Control Protocol)
是一种面向连接的、可靠的、基于字节流的传输层通信协议;
在完成了传输层的基本工作外,还需要保障传输的可靠性。
TCP使用三次握手和四次挥手来建立和终止连接。
TCP设置三次握手和四次挥手是为了确保可靠的连接建立和终止,在网络通信中保护数据的完整性和可靠性。
三次挥手
通过三次握手建立端到端的虚链路?
第一次握手:SYN(建立连接)
是客户端向服务器发送了一个SYN请求,也就是客户端在向服务器请求连接。此时客户端处于SYN_SENT状态。
第二次握手:SYN-ACK(建立连接—应答)
是服务器向客户端发送了一个ACK+SYN的回应,表明服务器收到了客户端的请求,并且同意了客户端的请求建立连接。此时服务器处于SYN_RCVD状态。
第三次握手:ACK(应答)
也是最后一次握手,是客户端回应服务器一个ACK报文。表明客户端收到服务器的同意建立连接,并告诉服务器我收到了你的确认。同时也会根据此时客户端处于ESTABLISHED状态。
经过TCP协议定义的三次握手之后,TCP协议建立一条虚拟的连接用于传输数据。
四次挥手
第一次挥手:
客户端向服务器发送一个FIN(结束)请求,表示客户端不再发送数据。此时客户端处于FIN_WAIT_1状态。
第二次挥手:
服务器收到请求后,回复客户端一个ACK响应确认,但这个响应可能还携带有未传输完的数据。此时服务器处于CLOSE_WAIT状态。注意,在第三次挥手之前,数据还是可以从服务器传送到客户端的。
第三次挥手:
服务器完成数据传输后,向客户端发送一个FIN请求,表示服务器也没有数据要发送了。此时服务器状态变为LAST_ACK状态。
第四次挥手:
客户端收到服务器的请求后,回复服务器一个ACK响应确认。此时客户端处于TIME_WAIT状态,需要经过一段时间确保服务器收到自己的应答报文后,才会进入CLOSED状态。