单条消息中可以容纳多少 CoAP 数据?

How much data can hold CoAP in single message?

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

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

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

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

引用它:

CoAP 规范本身只提供消息大小的上限。 大于 IP 数据包的消息会导致不需要的数据包碎片。 适当封装的 CoAP 消息应该适合 单个 IP 数据包(即避免 IP 分段)和(通过适应 一个 UDP 负载)显然需要适合单个 IP 数据报。 如果目的地的路径 MTU 未知,则 IP MTU 为 1280 应该假定字节;如果不知道的大小 headers,消息大小的良好上限是 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-wise 在接近 three-digit 消息时传输 [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