一.三次挥手过程。
1.客户端发送一个携带SYN标志位的包,请求建立连接。
2.服务器响应一个携带SYN和ACK标志位的包,同意建立连接。
3.客户端再发送一个携带ACK标志位的包,表示连接成功,开始进行数据传输。

为什么TCP采用三次握手而不是两次?
因为两次握手不可靠,举个例子,客户端发送了一个请求建立连接的包,由于网络原因迟迟没有抵达服务器,客户端只能再发一次请求,这次成功抵达并完成了数据传输。过了一段时间,第一次延迟的请求也到达了服务器,服务器并不知道这是无效请求,依旧正常响应,此时如果是两次握手,那么就会建立一条无效的连接,而如果是三次握手,那么客户端就能丢弃这条连接,避免了无谓的网络开销。

二.四次挥手过程
当要断开TCP连接时,通信两端就会进行4次挥手的操作。由于连接是双向的,所以客户端和服务器都要发送携带FIN标志位的包,才算彻底断开了连接。
1.客户端发送一个携带FIN标志位的包,请求断开连接。
2.服务器响应一个携带ACK标志位的包,同意客户端断开连接。
3.服务器再发送一个携带FIN标志位的包,请求断开连接。
4.客户端最后发送一个携带ACK标志位的包,同意服务器断开连接。

TCP为什么可靠

https://blog.csdn.net/Awille/article/details/79748193
#TCP和HTTP的区别
https://www.cnblogs.com/baizhanshi/p/8482612.html