我有一个关于TCP-IP通信的一般性问题......
目前我尝试在ATMega和Raspberry Pi之间创建一个小型通信。我将通过TCP / IP协议每5分钟(例如100字节)传输一些数据。
保持连接打开是否有意义,还是应该为每个数据集创建新连接?
感谢您的帮助......
webbolle
答案 0 :(得分:3)
我倾向于保持TCP连接打开,而不是每次都打开一个新的连接。
以下是一些原因。首先,通过使用相同的连接,您可以节省不必发送TCP握手消息(基于SYN的消息)和拆除消息(基于FIN的消息)。在您的情况下,如果您要每5分钟传输100个字节,则SYN / FIN消息的开销可能会超过此值。其次,如果你已经打开了连接,那么你就可以节省时间,因为不需要重新连接。第三,每次启动连接时TCP都可能会慢启动 - 不应该是100字节的问题,但是如果你需要发送更多字节,那么每次新连接时,TCP都会启动其发送窗口,其中包含1个MSS 。但是,如果重用现有连接,TCP(可能)会使用当前窗口。
此外:
开放连接不消耗任何资源(带宽等),除了它在两个设备上保存的端口。基本上每个已打开但未关闭的TCP连接仍然打开,除非意外断开连接等
对于检测那些也没有区别,你保持打开或重新打开:
如果在此期间连接断开,您将收到或多或少相同的错误。