我每10分钟从设备发送少量数据(最多100个字节)到TCP服务器。在我的例子中,开销似乎很大(我们为每个字节付费)。我发现我至少有7-10个数据包(三次握手(3),请求与ack(2),响应与ack (2,可选)和拆卸(3))。总开销至少为400个字节(每个数据包有40个字节的TCP/IP报头)。
问题如下:
发布于 2013-06-03 15:38:09
可靠地发送如此少量的数据的有效方法是什么?(UDP与ack?)
是的,这基本上就是UDP发明的目的。或者使用长期存在的TCP连接。
为什么我的头大于40个字节(60或52)?
大多数OSes包含的内容远远超过最小值。
如何打印标题的键值列表而不是十六进制值?
捕获Wireshark中的数据包并丢弃它的分析。
要获得“键值”格式可能需要更多的时间,这取决于您要寻找的是什么。
TCP连接可以存活多长时间?
技术上,永远。实际上,这取决于..。TCP本身没有限制,连接可以存活数年。实际上,大多数应用程序都有一个超时,在超时时,它们断开不活动客户端的连接。另外,防火墙通常会在很长一段时间后删除空闲连接的有状态规则。
如果连接保持打开,TCP是否发送附加数据包?
如果你已经启用了生命,是的。否则,很可能不会。这取决于具体的实现。
让他们所有的联系保持畅通是有效的吗?
保持每个连接打开需要内存(通常只有几KB )。一千到两千个连接只需要几MB。数以百万计的人开始进入“很多”记忆的领域。现代OSes可以很容易地跟踪数千个连接;但是您的应用程序必须是合理的,才能适应这么多连接。
发布于 2013-06-03 16:18:09
可靠地发送如此少量的数据的有效方法是什么?
当然,我会使用UDP,为我的数据保留一些字节的数据包,用于校验和或其他错误检测机制,以防万一。
https://serverfault.com/questions/512864
复制相似问题