TCP 三次握手的第三步的目的是什么

TCP 三次握手的第三步的目的是什么

可能重复:
为什么是三次握手而不是更多次?

例如:如果客户端想要与服务器通信,它只需告诉服务器它想要建立连接,然后服务器确认。人们说第三步是为了让服务器知道它可以成功地向客户端发送数据。但是,我认为服务器可以实现类似超时的功能。如果客户端响应时间过长,服务器可以继续:1. 重新发送该段或 2. 终止连接

那么,我们真的需要第三步吗?我认为这会带来太多开销。

答案1

当客户端从服务器获得 SYN ACK 数据包时,它会认为连接完全打开(并且也将 ACK 信息粘贴在其第一个数据包的标头中)。

因此,在客户端先对话的应用程序中,握手中的第三步不会增加任何延迟。在服务器先对话的应用程序中,最后的 ACK 步骤确实是必要的 - 服务器在知道客户端正在等待数据包之前无法开始发送数据包。

答案2

显然,客户端需要第一个数据包来告诉服务器创建连接。

服务器到客户端需要第二个数据包来告知客户端服务器已经接受连接。

客户端需要第三个数据包来通知服务器客户端已收到第二个数据包。否则,服务器将无法知道这一点,并且可能只是想知道为什么客户端没有发送任何数据。

不需要第四个数据包。如果第三个数据包成功通过,则双方都知道连接已打开,并且已完全准备好发送数据(如果需要)。如果第三个数据包没有通过,则将重新发送第二个数据包,从而促使重复发送第三个数据包。

相关内容