TCP 连接 - 保持还是重新连接?

web*_*lle 5 network-programming tcp

我有一个关于 TCP-IP 通信的一般性问题...

目前,我尝试在 ATMega 和 Raspberry Pi 之间创建小型通信。我将通过 TCP/IP 协议传输一些数据,例如每 5 分钟(例如 100 字节)。

保持连接打开是否有意义,还是应该为每个数据集创建一个新连接?

感谢您的帮助...

韦伯勒

Man*_*dey 4

我倾向于保持 TCP 连接打开,而不是每次都打开一个新连接。

以下是一些原因。首先,通过使用相同的连接,您可以节省发送 TCP 握手消息(基于 SYN 的消息)和拆卸消息(基于 FIN 的消息)的费用。在您的情况下,如果您打算每 5 分钟传输 100 个字节,则 SYN/FIN 消息的开销可能会更多。其次,如果您已经打开连接,那么您将节省时间,因为无需重新连接。第三,每次启动连接时,TCP 可能会进入慢启动状态——对于 100 字节来说应该不是问题,但如果您需要发送更多字节,那么对于每个新连接,TCP 都会以 1 MSS 启动其发送窗口。但是,如果您重用现有连接,TCP 将(可能)使用当前窗口。

另外:开放连接不会消耗任何资源(带宽等),除了它在两个设备上保留的端口之外。基本上每个已打开但未关闭的 TCP 连接仍然打开,保存意外的断开连接等。
对于检测这些连接,无论您保持打开还是重新打开都没有什么区别:
如果连接在此期间断开,您'会收到或多或少相同的错误。