【建立TCP连接】(三次握手)
由于TCP协议提供可靠的连接服务,于是采用有保障的三次握手方式来创建一个TCP连接。三次握手的具体过程如下:
1. 客户端发送一个带SYN标志的TCP报文(报文1)到服务器端,表示希望建立一个TCP连接。
2. 服务器发送一个带ACK标志和SYN标志的TCP报文(报文2)给客户端,ACK用于对报文1的回应,SYN用于询问客户端是否准备好进行数据传输。
3. 客户端发送一个带ACK标志的TCP报文(报文3),作为报文2的回应。
至此,一个TCP连接就建立起来了。(详见下图)
【终止TCP连接】(四次挥手)
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。原则是主动关闭的一方(如已传输完所有数据等原因)发送一个FIN报文来表示终止这个方向的连接,收到一个FIN意味着这个方向不再有数据流动,但另一个方向仍能继续发送数据,直到另一个方向也发送FIN报文。四次挥手的具体过程如下:
1. 客户端发送一个FIN报文(报文4)给服务器,表示我将关闭客户端到服务器端这个方向的连接。
2. 服务器收到报文4后,发送一个ACK报文(报文5)给客户端,序号为报文4的序号加1。
3. 服务器发送一个FIN报文(报文6)给客户端,表示自己也将关闭服务器端到客户端这个方向的连接。
4. 客户端收到报文6后,发回一个ACK报文(报文7)给服务器,序号为报文6的序号加1。