TCP 为什么是三次握手,而不是两次或四次?

        TCP是一个全双工的通信,三次握手完成两个重要的功能,一是协调双方双方做好发送数据的准备工作(双方都知道彼此已准备好),确保双方都知道对方的存在;二是协调好双方的初始序列号,这个序列号在握手过程中被发送和确认。

        首先我们来解释为什么不是两次握手,而是三次握手。我们以打电话为例,在打电话的过程中,双方为了确认自己说的话能被对方听见,需要向对方进行确认。下图这种情况就类似于两次握手,是不可靠的,因为server端不知道client端到底能不能“听到自己说话”。过程如下:


        

        现在来解释为什么不是和断开TCP连接一样需要四次来建立连接。断开TCP连接时之所以需要四次连接,原因很简单,因为TCP是全双工的通信方式,即一方断开连接后,不能向另一方发送数据,但是此时另一方可以向自己发送数据,所以双方断开连接是独立的,所以需要四次。

        再来想想为什么TCP连接只要三次呢?原因还是一样,TCP是全双工的通信方式,它在建立连接的过程中直接就把两步合成 了一步,即当client端给server端发送SYN请求后,server端直接将对这个SYN请求的ACK和自己的SYN请求合并在一起发过去了,从而节约了一次。



猜你喜欢

转载自blog.csdn.net/kang___xi/article/details/80407735