TCP(Transmission Control Protocol)是一种面向连接的协议,它通过三次握手建立连接和四次挥手关闭连接。
三次握手(Three-Way Handshake)的过程如下:
- 客户端(Client)向服务器发送一个带有SYN(同步)标志的数据包,并指定自己的初始序列号(Client Sequence Number)。
- 服务器收到数据包后,回复一个带有SYN/ACK(同步/确认)标志的数据包,确认收到客户端的请求,并指定自己的初始序列号(Server Sequence Number),同时也确认了客户端的序列号。
- 客户端收到服务器的数据包后,向服务器发送一个带有ACK(确认)标志的数据包,确认收到服务器的响应,连接建立成功。
四次挥手(Four-Way Handshake)用于关闭连接,过程如下:
- 客户端发送一个带有FIN(结束)标志的数据包给服务器,表示客户端要关闭连接。
- 服务器收到数据包后,回复一个带有ACK标志的数据包,确认客户端的关闭请求。此时,服务器进入“关闭等待状态”(CLOSE_WAIT)。
- 当服务器关闭完成后,发送一个带有FIN标志的数据包给客户端,表示服务器也要关闭连接。
- 客户端收到服务器的关闭请求后,回复一个带有ACK标志的数据包,确认服务器的关闭请求,此时,客户端进入“时间等待状态”(TIME_WAIT)。等待一个固定时间后,客户端关闭连接,进入关闭状态,服务器也进入关闭状态。
简单的理解就是:
三次握手:
1.客户端向服务端发出连接请求,告诉服务端“我想连接你”
2.服务端收到客户端发的连接请求后回一个“可以连接”
3.客户端收到服务端的消息后也给服务端回一个“好的”
四次挥手:
1.客户端向服务端发送断开连接消息“我要断开连接了”
2.服务端给收到客户端的断开消息后回一个“可以,稍等我忙完”
3.服务端忙完后向客户端回一个“现在可以断开连接了!”
4.客户端收到服务端的消息后回一个“好的,我断开了”
通过三次握手和四次挥手,TCP协议可以安全地建立和关闭连接,并保证可靠的数据传输。