0

在 CoAP 中为单个消息发送数据的大小限制是多少?

4

1 回答 1

0

CoAP 实现通常会引入自己的最大消息大小设置(因此是默认值)。

有关如何在特定情况下选择适当限制的更多信息,请参阅 RFC 7252 的第 4.5 点:

[RFC 7252 - 受限应用协议 (CoAP)][1]

引用它:

CoAP 规范本身仅提供消息大小的上限。大于 IP 数据包的消息会导致不需要的数据包碎片。适当封装的 CoAP 消息应该适合单个 IP 数据包(即,避免 IP 分段)并且(通过适合一个 UDP 有效负载)显然需要适合单个 IP 数据报。如果目的地的路径 MTU 未知,则应假定 IP MTU 为 1280 字节;如果对标头的大小一无所知,则好的上限是消息大小的 1152 字节和有效负载大小的 1024 字节。

它还取决于网络堆栈实现:

实施说明:CoAP 对消息大小参数的选择适用于 IPv6 和当今的大多数 IPv4 路径。(但是,对于 IPv4,很难绝对确保没有 IP 碎片。如果考虑在不寻常的网络上支持 IPv4,实现可能希望将自己限制为更保守的 IPv4 数据报大小,例如 576 字节;根据 [RFC0791] , IPv4 的 IP MTU 的绝对最小值低至 68 字节,这将只留下 40 字节减去 UDP 有效负载的安全开销。非常关注此问题集的实现也可能设置 IPv4 DF 位并执行某种形式路径 MTU 发现 [RFC4821];但是,在 CoAP 的实际用例中,这通常是不必要的。) 在许多受限网络中,一种更重要的分段是在适配层上的分段(例如,6LoWPAN L2 数据包限制为 127 字节,包括各种开销);这可能会促使实现在数据包大小方面保持节俭,并在接近三位数消息大小时转向块级传输 [BLOCK]。


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/rfc7959
于 2017-02-24T12:55:09.277 回答