保证TCP数据包大小

时间:2010-09-29 18:28:37

标签: embedded tcp

我们使用嵌入式设备通过串口转以太网转换器将数据包从串口发送到服务器。我们使用的一家制造商Moxa将始终以与构建它们相同的方式发送数据包。这意味着,如果我们构造一个255的数据包大小,它将始终以255长度发送数据包。另一个制造商Tibbo,如果我们发送数据包大小为255,如果它大于128,它将打破数据包。这是我当时收到Tibbo工程师的答案:

  

“从我的理解和什么   工程师说,即使对方   设备为您提供权利   数据包大小现在不保证   当在其他实施时   网络同样会发生。这个   是我们感觉到包的原因   基于大小的数据通过TCP传输   不可靠,因为它不是那样的   TCP被设计为使用。“

据我所知,这可能不是TCP的设计方式,但是如果我创建一个255字节的数据包并且TCP允许它,那么这在TCP的工作方式之外是怎样的呢?据我所知,在某些时候数据包可能会被分解,但如果服务器期望某个数据包大小,并且Moxa的产品与Tibbo设备没有相同的问题。

那么,是否可以保证合理的TCP数据包大小?

1 个答案:

答案 0 :(得分:11)

没有。 TCP不是分组协议,它是流协议。它保证您发送的字节全部到达,并且顺序正确,但没有别的。特别是,TCP不会为您提供任何类型的消息或数据包边界。如果您需要这些东西,则需要通过协议在更高级别实施。