为什么创建一个新的 TCP 连接被认为是昂贵的?

9 networking tcp

我不明白为什么创建新的 TCP 连接被认为是一项昂贵的任务。基本上建立一个新的连接是指执行 TCP 的 3 次握手。所以这是发送两个数据包并接收一个。考虑到数以千计的(数据)数据包会随之而来,握手不可能是昂贵的部分。它可以?

Uni*_*426 10

我相信,一般来说,与通过保持打开来重用已打开连接的能力相比,打开 TCP 连接被认为是昂贵的。你是对的,打开一个连接只需要 3 个数据包/轮,但是那个时间 - 3 x 你的 RTT - 远远超过重用一个已经打开的连接的成本,它更接近于 0。如果你,差距会增长得更快'经常打开和关闭连接。

不过,您当然是正确的,与您将在应用程序“做它的事情”时看到的圈数相比,这 3 个数据包可能看起来很小,但同样,这取决于您想如何比较选项和您的应用程序的行为方式/您计划打开连接的次数。

编辑 如果我们谈论 UDP 与 TCP,Cheekaleek 在这里是 100% 正确的 - 与 UDP 的无连接操作相比,从长远来看,其开销是巨大的

  • 我在数据包跟踪中看到的一个很好的例子:重复使用的 MySQL 连接可以在 2-5 毫秒内完成查询。一系列 ElasticSearch 查询在 17-25 毫秒内完成查询,大部分时间用于连接设置(包括初始 DNS 查找)。 (2认同)