TCP连接为什么是三次握手

首先我们来回顾一下tcp建立连接的过程

1、为什么不是2次握手呢?

防止客户端失效的连接请求报文段突然又传到服务器

例如以下情况如果使用两次握手:

  1. 如果客户端向服务器发送第一次连接请求在网络节点上滞留了,没有收到服务器的确认,于是又重新发送了一次连接请求
  2. 服务器收到客户端的第二次请求发送确认,则连接建立完成
  3. 服务器客户端进行数据传输,传输完成断开连接。
  4. 此时,在网络上滞留的客户端第一次连接请求到达服务器,服务器发送确认连接但是客户端实际上并没有发送请求,因此不会理睬服务器发送的请求。但是服务器认为连接已完成,并等待客户端进行数据传输。这样会造成资源的浪费

如果采用三次握手的话:

  • 滞留在网络上的客户端第一次请求到达服务器之后,服务器发送确认,但实际上服务器并没有发送请求,因此不会理睬服务器的确认,故不会发送确认,服务器等不到客户端的确认则连接建立失败。这样就防止了客户端失效的连接请求报文段突然又传到服务器

2、为什么不是4次握手?

我们来模拟一下4次握手的过程

  1. 客户端发送请求报文,发送自己的序列号
  2. 服务器发送确认报文
  3. 服务器发送自己的序列号
  4. 客户端发送确认报文

上述过程中2、3步完全可以合为一步进行发送,因此完全没有必要进行4次握手

猜你喜欢

转载自blog.csdn.net/qq_41727218/article/details/87881235