3

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

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

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

谢谢你的帮助...

韦伯勒

4

1 回答 1

3

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

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

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

于 2013-09-18T18:25:40.983 回答