4.3 没有可靠性保障的消息传输
有的消息不需要应答。尤其是周期性的重复的消息,例如对传感器的数据的重复读取,并不需要每次都成功。
在没有可靠性保障的情况下传输,可以把消息标记为NON类型,作为更加轻量级的选择。NON消息总是承载着一个不为空的请求或者响应。接收端必须不应答NON消息。如果缺少必要的上下文而无法正确的处理(包括消息是空的,使用了保留类别的code(1,6或7),或者消息格式错误)那么接收端必须丢弃这个NON消息。同时服务端有可能会忽略该消息或者响应一个对应的RST消息。
在CoAP层,发送者没有任何办法得知NON类型的消息是否被接收端收到。发送者可能在MAX_TRANSMIT_SPAN(在第4.7节的条款所限制,特别是PROBING_RATE,如果没有收到响应)之内发送多个副本,网络传输也有可能导致消息出现重复。为了使接收端能够只处理一次,NON消息也带有Message ID(和CON消息的Message ID共用数字池)。
总结第4.2和4.3节,四种类型的消息的使用如表1所示。“*”代表的是正常情况下不会这么使用这个组合,除非为了引起一个RST消息(也就是“CoAP ping”)。
最后更新于
这有帮助吗?