sockets - 创建 TCP 连接的一般开销

标签 sockets networking tcp

我想知道与 UDP 相比,创建新连接的一般成本。我知道 TCP 需要初始数据包交换(3 次握手)。其他费用是多少?例如,内核中是否存在设置缓冲区等所需的某种魔法?

我问的原因是我可以保持现有连接打开并根据需要重用它。但是,如果重新连接的开销很小,它会降低复杂性。

最佳答案

一旦 UDP 数据包被转储到线路上,UDP 协议(protocol)栈就可以完全忘记它。使用 TCP,至少有连接详细信息(源/目标端口和源/目标 IP)、序列号、连接窗口大小等……这不是大量数据,但在有很多连接的繁忙服务器。

然后还有 3 次握手。某些脑残(和/或恶意系统)可能会滥用该过程(查找“syn flood”),或者只是在他们的末端断开连接,让您的系统等待永远不会到来的响应或关闭通知。好的一面是,使用 TCP,系统将尽最大努力确保数据包到达它必须到达的地方。使用 UDP,根本没有任何保证。

关于sockets - 创建 TCP 连接的一般开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840116/

相关文章:

c++ - 同一端口上的 WinSock 重新托管无法正常工作 C++

java - 线程响应在 weblogic 部署的应用程序中交换

带有 "watchdog"的 Ruby 线程

networking - 向连接到局域网的所有人发送消息

linux - 更新 GNU/Linux 内核以在每个数据包中发送 n 个 TCP 数据包

tcp - SYN 和 SYN+ACK 未被防火墙阻止

node.js - Socket.io由于nsp无法连接

c# - 在 C# 中测量网络带宽

java - Java 中的 10 gig 以太网?

c++ - socket发送信息的时机(TCP、C++)