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. 1 简介

1.2 术语解释

上一页1.1 特性下一页2 受限应用协议CoAP

最后更新于3年前

这有帮助吗?

出现在本文档中的关键字“必须”、“必须不”、“要求”、“应该”、“应该不”、“应当”、“应当不”、“建议”、“不建议”、“或许”和“可选”,当加粗时,都在中定义。这些词语也可以普通的形式出现,则不具备预先定义的含义。

本文档要求读者熟悉中讨论的所有术语,包括resource , representation,cache和fresh。(对HTTP协议更新的RFC有7230到7235,但由于本文档的完成早于这些对HTTP协议更新的rfc,故本文档引用的是先前的HTTP协议版本:)。此外,本文档定义了以下术语:

  • 端(Endpoint)

    参与CoAP协议的一个实体。通俗的说,一个端指的是一个节点(node),尽管Host这个词更符合互联网标准,与传输层的多路复用技术联系起来,可以包括一个UDP端口号。

  • 发送者(Sender)

    消息的发起端。从交互角度来说,也称为“源端”(source endpoint)。

  • 接收者(Recipient)

    消息的目的端。从交互角度来说,也称为“目的端”(destination endpoint)。

  • 客户端(Client)

    消息请求的源端,消息响应的目的端。

  • 服务端(Server)

    消息请求的目的端,消息响应的源端。

  • 原始服务端(Origin Server)

    存储或创建一个给定的资源的服务端。

  • 中间人(Intermediary)

    对于一个原始服务端(也可能是其它的中间人)来说,一个即是服务端又是客户端的CoAP端。常见的场景是一个代理。本文档中讨论了几种这样类型的代理。

  • 代理(Proxy)

    代理是主要作用为转发请求和响应消息的中间人,有可能起到缓存,命名空间转换,或者协议转换的作用。与一般的中间人不同的是,代理通常不实现任何语义。在转发请求的场景下,根据定位的不同,主要分为两种:正向代理和反向代理。在某些情况下,一个端有可能根据每一个请求的特性转换自己的角色,可以作为原始服务端、正向代理或反向代理。

  • 正向代理(Forward-Proxy)

    即客户端的代理,通常是通过本地配置,用来代表客户端发出请求,必要时做一些转换。有些转换是很细微的,如代理“coap”开头的URI,然而有些请求则需要在其它应用层协议和coap协议间作转换。

  • 反向代理(Reverse-Proxy)

    代替一个或多个服务端接收请求的端,必要时做一些转换。与正向代理不同的是,反向代理对客户端可能是完全透明的。反向代理接收请求,把它自己当成目标资源的原始服务端。

  • CoAP到CoAP代理(CoAP-to-CoAP Proxy)

    把一个CoAP请求映射到另一个CoAP请求的代理。也就是说它的服务端部分和客户端部分都使用CoAP协议。与“跨协议代理”形成对比。

  • 跨协议代理(Cross-Proxy)

    跨协议代理指的是在不同协议之间做转换的代理,例如一个从CoAP到HTTP的代理,或者HTTP到CoAP的代理。相对于CoAP到CoAP代理,跨协议代理有很多种。

  • 需应答消息(Confirmable Message)

    要求ACK的消息称为需应答消息。当没有发生数据包丢失的时候,每个需应答消息必定会有一个类型为ACK或Reset的响应。后面简写为CON。

  • 不需应答消息(Non-confirmable Message)

    不要求ACK的的消息称为不需应答消息。通常用于某些应用中周期性的重复发送数据的情形,例如不断的读取一个传感器的数据。后面简写成NON。

  • ACK消息(Acknowledgement Message)

    ACK消息用于确认某个可靠消息已经到达。ACK消息自身并不代表这个请求处理的结果是成功还是失败。ACK消息有可能会同时为附带响应(Piggybacked Response)。

  • 重置消息(Reset Message)

    Reset消息代表的是一个消息(需要应答或者不需要应答的消息)被收到了,但是由于缺少某些上下文信息而无法被正常的处理。这种情况通常是由于接收节点重启了,因而缺失了一些必要的信息,导致当前接收到的消息无法被处理。利用reset消息,也是一种低开销的检查端是否存活的方式(也称作CoAP ping,发送一个空的需应答消息)。后面简写成RST。

  • 附带响应(Piggybacked Response)

    附带响应指的是,对于一个请求消息,它的ACK消息中包含了响应数据。

  • 单独响应(Separate Response)

    当请求是一个需应答消息时,如果它的ACK是一个空消息(因为服务端对该请求产生对应结果需要一些时间),那么就需要一个单独的消息交换过程来完成对请求的响应(5.2.2节)。

  • 空消息(Empty Message)

    空消息的code是0.00,有可能是请求,也可能是响应。空消息只有4个字节的header,没有body部分。

  • 重要选项(Critical Option)

    指的是这样的选项:只有接收端正确的理解这个选项,那么这个请求才能被正确的处理(5.4.1节)。注意,这些选项的值通常都有一个范围,不支持的选项值会导致错误的响应消息或者拒绝这个消息。

  • 非重要选项(Elective Option)

    非重要选项指的是如果接收端不理解这个选项,那么可以把它忽略。协议允许忽略这个选项而对消息进行处理(参见5.4.1节)。

  • 非安全选项(Unsafe Option)

    非安全的选项指的是,代理必须理解这个选项才能正确的转发这个消息。并非所有的重要选项都是非安全选项。

  • 转发安全选项(Safe-to-Forward Option)

    代理不理解这个选项,但也可以安全的转发这个消息。在不理解这个选项的情况下,也可以转发这个消息(参见5.4.2节)。

  • 资源发现(Resource Discovery)

    资源发现指的是CoAP客户端获得服务端支持的所有资源列表的过程(参见第7章)。

  • 内容格式(Content-Format)

    内容格式指的是互联网媒体类型和内容编码,用一个数值型标识符来标识。这个数值型标识符在“COAP 内容格式”中定义。当重点注意力不是在这个数值型的标识上,而是在资源表现本身时,就称作“表现格式”(REPRESENTATION FORMAT)。

在本文档中,术语byte指的是通常的字节定义(即一个字节为8bit)。

本协议中所有长度超过一个字节的整型都采用网络字节序。

本文中使用的符号和C语言中类似,例外情况:运算符" ** "表示幂运算。

更多关于受限节点和受限节点网络的术语,请参考。

[RFC2119]
[RFC2616]
[RFC2616]
[RFC7228]