#.首先,要明白握手的目的是什么
可以将TCP双向通信的过程,看成两个单向通信过程的组合:一次 “请求连接——确认”操作,可以确保一方做好了发送准备,另一方做好了接收准备,因此可以建议一个单向的连接;一次 “请求关闭——确认”操作,可以确保一方发完了数据希望关闭发送,另一方收到请求关闭接收,最后关闭掉一个单向的连接。在建立连接时,是为了判断双方是否能够正常建立连接,即客户端—>服务端、服务端->客户端两个单向的收发都是正常的。而在关闭连接时,是为了判断双方是否应该关闭连接,即客户端—>服务端、服务端->客户端两个单向的收发是否应该关闭。在握手过程中,每一端自己当然清楚自己这边的状态,关键是从过程中判断对方的状态。
#.一、建立TCP连接:三次握手协议
![](https://img-blog.csdnimg.cn/71aef2278631406885986aae0a3a8b06.png)
客户端&