TCP 为何采用三次握手而不是两次或四次?四次挥手的原因是什么?
TCP 采用三次握手主要有以下原因:
- 防止已失效的连接请求报文段突然又传送到了服务端,从而产生错误。如果只有两次握手,当客户端发出的第一个连接请求报文段在某些网络节点长时间滞留后,客户端超时重传新的连接请求报文段并建立连接,随后释放连接,而那个滞留的连接请求报文段到达服务端后,服务端误以为是客户端又发出一次新的连接请求,此时服务端就会在不知情的情况下建立连接并等待客户端发送数据,浪费服务端资源。而三次握手可以在客户端收到服务端的确认后,再发送一次确认给服务端,这样可以确保双方都是有建立连接意愿的,并且可以防止上述情况的发生。
- 三次握手可以让双方都确认自己和对方的接收和发送能力是正常的。第一次握手,客户端发送请求,服务端收到后可以确认客户端的发送能力和自己的接收能力正常;第二次握手,服务端回应,客户端收到后可以确认自己的接收和发送能力以及服务端的接收和发送能力都正常;第三次握手,客户端再次回应,服务端收到后可以确认自己的发送能力和客户端的接收能力正常。
TCP 采用四次挥手的原因是:
当客户端或服务端想要关闭连接时,需要进行以下步骤: