4.4 消息之间的关联
一个ACK消息或RST消息必定和一个CON消息或NON消息关联起来。关联是通过Message ID和附加的接收端的地址来实现的。Message ID是一个16-bit的无符号整数,由CON或NON消息的发送端生成,包含在CoAP头部中。接收端发回的ACK或RST消息必须带有相同的Message ID。
在EXCHANGE_LIFETIME时间之内,相同的Message ID必须不能重复使用(即与同一个端通信)(见第4.8.2节)。
实现注意:有许多策略可以用来生成Message ID。最简单的情况是,通过一个变量来生成Message ID,每当发送了一个CON或NON消息,不论目标地址或端口是什么,都改变这个变量。如果一个端需要处理大量的连接,那么它也可以使用多个变量,例如为每个前缀或者目标地址使用一个变量。(注意,有些接收端可能无法区分发收到的数据包是单播还是多播的,所以生成Message ID的端必须要确保这种情况下不会重复)。强烈建议这个变量的初始值是随机的,这样可以降低off-path攻击成功的可能性。
为了使ACK或RST消息与CON或NON消息匹配,ACK(或RST)消息的Message ID和源地址必须和CON(或NON)消息的Message ID和目的地址一致。
最后更新于
这有帮助吗?