在CoAP中为单个消息发送数据的大小限制是什么?
发布于 2017-02-24 12:55:09
CoAP实现通常引入自己的最大消息大小设置(因此是默认值)。
有关如何在特定情况下选择适当限制的更多信息,请参阅RFC 7252的4.5点:
RFC 7252 -受限应用协议(CoAP)
引用它的话:
CoAP规范本身只提供了消息大小的上限。大于IP数据包的消息会导致不受欢迎的分组碎片。适当封装的CoAP消息应该适合于单个IP数据包(即,避免IP碎片),并且(通过安装到一个UDP有效负载中)显然需要在单个IP数据报中匹配。如果目标不知道路径MTU,则应假定IP MTU为1280字节;如果不知道报头的大小,则好的上限是消息大小为1152字节,有效负载大小为1024字节。
此外,它还依赖于网络堆栈的实现:
实现注意:CoAP对消息大小参数的选择适用于IPv6和当今大多数IPv4路径。(然而,对于IPv4,很难绝对确保没有IP碎片。如果考虑到对不寻常网络的IPv4支持,则实现可能希望将自己限制为更保守的IPv4数据报大小,例如576字节;每RFC0791,IPv4的IP的绝对最小值为68字节,这将只留下40个字节减去一个IPv4的安全开销。非常专注于这个问题集的实现也可能设置IPv4 DF位,并执行某种形式的路径MTU发现RFC4821;然而,在实际的CoAP用例中,这通常是不必要的。)在许多受限网络中,一种更重要的碎片是在适配层(例如,6 6LoWPAN L2数据包被限制在127个字节内,包括各种开销);这可能会促使实现在其数据包大小上节约,并在接近三位数消息大小时移动到按块传输块。
If you want to send large messages, there is another specification.
[RFC 7959: Block-Wise Transfers in the Constrained Application Protocol (CoAP)][2]
Most of popular implementations implement this specification as well.
[1]: https://www.rfc-editor.org/rfc/rfc7252
[2]: https://www.rfc-editor.org/rfc/rfc7959https://stackoverflow.com/questions/42203857
复制相似问题