CoAP数据包的大小是多少?

8

我对这项技术很新,能有人帮我解答一些疑问吗?

问题1:CoAP数据包的大小是多少?
(我知道有4字节的固定头部,但是包括头部、选项和负载的最大大小限制是多少?)

问题2:是否有像MQTT一样的Keep Alive概念?
(它在UDP上工作,保持连接开放的时间有多长,是否有默认时间或每次发送数据包时都要保持开放?)

问题3:我们可以使用TCP协议来使用CoAP吗?
(CoAP的主要问题是它在UDP上工作,是否有类似MQTT QoS的概念?假设一个传感器每秒发布一次数据,如果订阅者离线了,CoAP是否保证订阅者在重新上线时会收到所有数据?)

问题4:连接持续多长时间?
(CoAP支持发布/订阅架构,可能需要始终保持连接开放,使用基于UDP的CoAP是否可能实现?)

问题5:如何发现资源?
(我有一个网关和5个传感器,这些传感器将如何连接到网关?网关会找到这些传感器吗?还是传感器会找到网关?)

问题6:传感器如何向网关注册?

请帮助我,我真的需要答案。我对这些东西都很新,请建议我一些实现方面的事情。

谢谢。


兄弟,你的问题太混乱了,我不得不修正它们。 - niutech
1个回答

7
  1. 可能有所不同:
  • 核心CoAP消息必须足够小,以适应其链路层数据包(UDP的约64 KiB),但在任何情况下,RFC规定:
    • 它应该适应于单个IP数据包,以避免IP分段(IPv6的MTU为1280)。 如果不知道标头的大小,则消息大小的很好的上限为1152字节,有效负载大小的上限为1024字节;
    • 或者更少,以避免自适应层分段(6LoWPAN网络为60-80字节);
  • 如果需要传输更大的有效负载,则此IETF草案使用新选项扩展核心CoAP,用于从多个请求响应对中的资源表示中传输多个信息块(因此您可以每条消息传输超过64KiB)。
  1. 我从未使用过MQTT,在任何情况下,CoAP是无连接的,请求和响应通过UDP或DTLS异步交换。 我想你正在寻找观察功能:它使CoAP客户端可以“订阅”资源,并使服务器在一段时间内向订阅的客户端发送更新。

  2. 有一个IETF草案描述了CoAP over TCP,但是我不知道它如何与观察功能交互:通常它遵循最佳努力原则,仅表示当服务器认为客户机不再对资源感兴趣并从观察者列表中将其删除时才会发生。

  3. 当服务器认为客户端不再对资源感兴趣或客户端请求取消订阅资源时,观察停止。

  4. 有一个众所周知的相对URI"/.well-known/core"。它被定义为请求服务器托管资源链接列表的默认入口。 点击这里 以获取更多信息。

  5. 请参见第5项。


2
第三条(MQTT over TCP):有一个IETF草案描述了该功能。 - niutech
谢谢,我不知道这个!我会编辑我的回答 :) - Jiloc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接