TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
TCP通信需要经过创建连接、数据传送、终止连接三个步骤。
TCP三次握手的过程如下:
客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
服务器端收到SYN报文,回应一个SYN(SEQ=yACK(ACK=x+1)报文,进入SYN_RECV状态。
客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
数据传输:每传递一次消息,服务端都会告诉客户端说收到消息了。这样确保数据不会丢失。因此我们 说TCP是可靠地面向连接(连接一直连着)的传输协议
四次挥手:
建立一个连接需要三次握手,而终止一个连接要经过四次挥手。
(1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP 于是发送一个FIN分节,表示数据发送完毕。
(2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。 注意:FIN的接收也作为一个文件结束(end-of-file)传递给接收端应用进程,放在已排 队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相 应连接上再无额外数据可接收
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致 它的TCP也发送一个FIN。
(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。[1]