coap协议RFC中文文档
main
main
  • Introduction
  • 1 简介
    • 1.1 特性
    • 1.2 术语解释
  • 2 受限应用协议CoAP
    • 2.1 消息模型
    • 2.2 请求响应模型
    • 2.3 中间人和缓存
    • 2.4 资源发现
  • 3 消息格式
    • 3.1 Option的格式
    • 3.2 Option Value的格式
  • 4 消息传递
    • 4.1 消息和端
    • 4.2 可靠的消息传输
    • 4.3 没有可靠性保障的消息传输
    • 4.4 消息之间的关联
    • 4.5 去除重复消息
    • 4.6 消息大小
    • 4.7 拥塞控制
    • 4.8 传输参数
      • 4.8.1 改变参数
      • 4.8.2 传输参数的衍生时间
  • 5 请求/响应的语意
    • 5.1 请求
    • 5.2 响应
      • 5.2.1 附带响应
      • 5.2.2 单独响应
      • 5.2.3 无需确认消息NON
    • 5.3 请求/响应的匹配
      • 5.3.1 令牌(token)
      • 5.3.2 请求响应的匹配规则
    • 5.4 选项(option)
      • 5.4.1 重要选项/非重要选项Critical/Elective
      • 5.4.2 代理不安全或安全转发和无缓存键
      • 5.4.3 长度
      • 5.4.4 默认值
      • 5.4.5 可重复选项
      • 5.4.6 选项编号
    • 5.5 Payload和表现
      • 5.5.1 表现
      • 5.5.2 诊断式的payload
      • 5.5.3 经由选择的表现
      • 5.5.4 内容协商
    • 5.6 缓存
      • 5.6.1 新鲜度模型
      • 5.6.2 校验模型
    • 5.7 代理
      • 5.7.1 代理操作
      • 5.7.2 正向代理
      • 5.7.3 反向代理
    • 5.8 方法定义
      • 5.8.1 GET
      • 5.8.2 POST
      • 5.8.3 PUT
      • 5.8.4 DELETE
    • 5.9 返回码定义
      • 5.9.1 成功2.xx
        • 5.9.1.1 2.01 Created
        • 5.9.1.2 2.02 Deleted
        • 5.9.1.3 2.03 Valid
        • 5.9.1.4 2.04 Changed
        • 5.9.1.5 2.05 Content
      • 5.9.2 客户端错误4.xx
        • 5.9.2.1 4.00 Bad Request
        • 5.9.2.2 4.01 Unauthorized
        • 5.9.2.3 4.02 Bad Option
        • 5.9.2.4 4.03 Forbidden
        • 5.9.2.5 4.04 Not Found
        • 5.9.2.6 4.05 Method Not Allowed
        • 5.9.2.7 4.06 Not Acceptable
        • 5.9.2.8 4.12 Precondition Failed
        • 5.9.2.9 4.13 Request Entity Too Large
        • 5.9.2.10 4.15 Unsupported Content-Format
      • 5.9.3 服务端错误5.xx
        • 5.9.3.1 5.00 Internal Server Error
        • 5.9.3.2 5.01 Not Implemented
        • 5.9.3.3 5.02 Bad Gateway
        • 5.9.3.4 5.03 Service Unavailable
        • 5.9.3.5 5.04 Gateway Timeout
        • 5.9.3.6 5.05 Proxying Not Supported
    • 5.10 Option定义
      • 5.10.1 Uri-Host,Uri-Port,Uri-Path,Uri-Query
      • 5.10.2 Proxy-Uri和Proxy-Scheme
      • 5.10.3 Content-Format
      • 5.10.4 Accept
      • 5.10.5 Max-Age
      • 5.10.6 ETag
        • 5.10.6.1 作为响应选项的ETag
        • 5.10.6.2 作为请求选项的ETag
      • 5.10.7 Location-Path和Location-Query
      • 5.10.8 条件请求选项
        • 5.10.8.1 If-Match
        • 5.10.8.2 If-None-Match
      • 5.10.9 Size1选项
  • 6 CoAP URI
    • 6.1 Coap URI scheme
    • 6.2 Coaps URI scheme
    • 6.3 标准化和比较规则
    • 6.4 将URI解码为选项
  • 7 发现
    • 7.1 服务发现
    • 7.2 资源发现
      • 7.2.1 ‘ct’特性
  • 8 多播CoAP
    • 8.1 消息层
    • 8.2 请求响应层
      • 8.2.1 Caching
      • 8.2.2 代理
  • 9 安全CoAP
    • 9.1 DTLS-Secured CoAP
      • 9.1.1 消息层
      • 9.1.2 请求响应层
      • 9.1.3 端点身份
        • 9.1.3.1 Pre-Shared Keys
        • 9.1.3.2 原始公钥证书
          • 9.1.3.2.1 配置
        • 9.1.3.3 X.509证书
  • 10 CoAP和HTTP的跨协议代理
    • 10.1 CoAP-HTTP代理
      • 10.1.1 GET
      • 10.1.2_PUT
      • 10.1.3 DELETE
      • 10.1.4 POST
    • 10.2 HTTP-CoAP代理
      • 10.2.1 OPTIONS and TRACE
      • 10.2.2 GET
      • 10.2.3 HEAD
      • 10.2.4 POST
      • 10.2.5 PUT
      • 10.2.6 DELETE
      • 10.2.7 CONNECT
  • 11 安全事项
    • 11.1 解析协议和处理URIs
    • 11.2 代理和缓存
    • 11.3 增幅的风险
    • 11.4 地址欺骗攻击
    • 11.5 跨协议攻击
    • 11.6 受限节点的注意事项
  • 12 互联网地址分配注意事项(IANA Considerations)
    • 12.1 CoAP代码注册
      • 12.1.1 方法码
      • 12.1.1 响应码
    • 12.2 CoAP选项码注册(CoAP Option Number Registry)
    • 12.3 CoAP内容格式注册(CoAP Cotent-Formats Registry)
    • 12.4 URI方案注册(URI Scheme Registration)
    • 12.5 安全URI规范注册表
    • 12.6 服务名称和端口号注册表
    • 12.7 安全服务名称和端口号注册表
    • 12.8 多播地址表
由 GitBook 提供支持
在本页

这有帮助吗?

  1. 4 消息传递
  2. 4.8 传输参数

4.8.2 传输参数的衍生时间

上一页4.8.1 改变参数下一页5 请求/响应的语意

最后更新于3年前

这有帮助吗?

ACK_TIMEOUT(应答超时时间)、ACK_RANDOM_FACTOR(应答随机因子) 和MAX_RETRANSMIT(最大重传时间)这三个参数共同影响着重传时间,重传时间反过来也影响着这些参数需要保持的时间长度。为了能够对这些derived时间值有一个明确的参考,这里给出以下名称:

  • 最大传输跨度(MAX_TRANSMIT_SPAN):指的是从CON消息第一次发送到它的上一次重发之间的最大时间间隔。对默认的传输参数,它的值是(2+4+8+16)*1.5 = 45s,或者一般表示为:

    ACK_TIMEOUT * ((2 ** MAX_RETRANSMIT) - 1) * ACK_RANDOM_FACTOR

  • 最大传输等待时间(MAX_TRANSMIT_WAIT):是指从第一次传输CON消息到发送方放弃接收ACK者RST响应之间的时间间隔。默认的传输参数的值是93秒,或者表示为:

    ACK_TIMEOUT * ((2 ** (MAX_RETRANSMIT + 1)) - 1) *ACK_RANDOM_FACTOR

此外,我们还需要在一些网络和节点的特征上做些假设。

  • 最大时延(MAX_LATENCY):指的是数据包从开始发送到完全接收之间的最大时间 。该常量与(协议中的MSL(最大段周期)相关,一般被设定为2分钟。注意,这并不一定比最大传输等待时间小,最大时延并不是想要描述当协议工作良好的情形,而是确保在最坏的情况下有保障。我们也可以很随意的定义最大时延为100秒。除了大量的配置与以前的TCP接近,这个值也允许Message ID存活时间定时器由8-bit数值表示(单位为秒)。在这些计算中,没有考虑传输方向的影响(假设网络是对称的)。如果不是这种情况,接下来计算将变得稍微复杂一些。

  • 处理延时(PROCESSING_DELAY):指的是CON消息得到ACK响应的时间。我们假设节点恰好在发送端超时之前发送ACK,那么这个时间就等于ACK_TIMEOUT。

  • MAX_RTT:往返时间的最大值,或者是:

    (2 * MAX_LATENCY) + PROCESSING_DELAY

从这些值中,我们可以得到与协议操作相关的下列值:

  • 交换周期(EXCHANGE_LIFETIME):它是指从开始发送CON消息到不再接收ACK之间的时间,即该信息在消息层交换时可以被清除。交换周期包括MAX_TRANSMIT_SPAN、发送过程的MAX_LATENCY、PROCESSING_DELAY和接收过程的MAX_LATENCY。注意,如果最后等待周期(ACK_TIMEOUT (2 * MAX_RETRANSMIT)或MAX_TRANSMIT和MAX_TRANSMIT_WAIT的差)小于MAX_LATENCY,这里就无需考虑MAX_TRANSMIT_WAIT(这种情况一般不可能出现)。在这种情况下,EXCHANGE_LIFETIME简化为:

    MAX_TRANSMIT_SPAN + (2 * MAX_LATENCY) + PROCESSING_DELAY

一般缺省值为247秒。

  • 不需确认消息周期(NON_LIFETIME):它指的是从发送NON消息到该Message ID可以被复用之间的时间。如NON消息没有多次发送,那么它的值是MAX_LATENCY或者是100秒。然而,尤其是在多播应用中,一个CoAP发送端可能发送NON消息很多次。Message ID重用超出本文档范围内。接收端希望在MAX_TRANSMIT_SPAN的时间内判断是否是重传包。基于这样的目的,使用缺省值145秒或使用下面的值将会更安全:

    MAX_TRANSMIT_SPAN + MAX_LATENCY

对于仅想通过一个超时时间来判断Message ID是否能够重用的应用来说,使用较大的EXCHANGE_LIFETIME更安全。

表3列举了上述一些参数的缺省值

       +-------------------+---------------+
       | name              | default value |
       +-------------------+---------------+
       | MAX_TRANSMIT_SPAN |          45 s |
       | MAX_TRANSMIT_WAIT |          93 s |
       | MAX_LATENCY       |         100 s |
       | PROCESSING_DELAY  |           2 s |
       | MAX_RTT           |         202 s |
       | EXCHANGE_LIFETIME |         247 s |
       | NON_LIFETIME      |         145 s |
       +-------------------+---------------+
       表3 一些参数的缺省值
[RFC0793]