三次握手与四次挥手
一、三次握手过程。
- 客户端发送一个携带SYN标志位的包,请求建立连接。
- 服务器响应一个携带SYN和ACK标志位的包,同意建立连接。
- 客户端再发送一个携带ACK标志位的包,表示连接成功,开始进行数据传输。
二、 为什么TCP采用三次握手而不是两次?
- 因为两次握手不可靠,举个例子,客户端发送了一个请求建立连接的包,由于网络原因迟迟没有抵达服务器,客户端只能再发一次请求,这次成功抵达并完成了数据传输。过了一段时间,第一次延迟的请求也到达了服务器,服务器并不知道这是无效请求,依旧正常响应,此时如果是两次握手,那么就会建立一条无效的连接,而如果是三次握手,那么客户端就能丢弃这条连接,避免了无谓的网络开销。
三、四次挥手过程
当要断开TCP连接时,通信两端就会进行4次挥手的操作。由于连接是双向的,所以客户端和服务器都要发送携带FIN标志位的包,才算彻底断开了连接。
- 客户端发送一个携带FIN标志位的包,请求断开连接。
- 服务器响应一个携带ACK标志位的包,同意客户端断开连接。
- 服务器再发送一个携带FIN标志位的包,请求断开连接。
- 客户端最后发送一个携带ACK标志位的包,同意服务器断开连接。