只进行两次握手会出现什么问题?
如果只进行两次握手就可以建立连接的话,比如,客户端发送的某一个连接报文段并没有丢失,而是长时间滞留在某个网络节点,以导致延误到连接释放以后的某个时间段才到达服务器端。服务器端误以为这是客户端发出的又一次新的连接请求。于是就向客户端发出确认报文,同意建立连接,若只有两次握手,此时新的连接已经建立了。服务器端会一直等待客户端发来数据,服务器的许多资源会被浪费。
如果采用了三次握手,由于客户端并没有发送新的连接请求,服务器端接收到的只是一个失效的报文段,所以客户端并不会理踩服务器端发送的确认,也不会向服务器端发送确认,此时服务器端就会知道客户端并没有请求建立连接,连接不会建立,也不会一直等待。
不需要四次握手的原因:
客户端发出第三次握手信息后没有接收到服务器的请求就进入连接状态,若客户端的确认包丢失或滞留怎么办?
由于完全可靠的通信协议是不存在的,在经过三次握手之后,客户端和服务端双方已经确认了自己和对方的通信情况,确保了接受和发送是正常的,所以即便再增加握手次数也不能保证之后的通信完全可靠,所以没必要!