首页/网络/工控与物联网速查/CoAP分块传输与大报文处理
物联网协议60 条

CoAP分块传输与大报文处理

CoAP 分块传输把请求体与响应体切成带编号与块大小标记的块,用续传标志表达后续是否还有数据。它让受限设备在很小的单包容量下也能传输固件镜像这类大对象。

工控与物联网速查网络更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌​‌‌​​‌​‌‌​‌​‌‌‌​‌‌‌​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​​​​‌​‌‌​‌‌‌​​‌‌‌​​‌‌​‌‌​​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

为什么需要分块

受限链路单包能承载的长度往往只有几百字节,而固件镜像、配置文件这类对象远大于此。分块传输把对象切成定长块,每个块报文携带块编号、块大小标记与续传标志:请求体方向与响应体方向各有对应选项,接收方按编号重组,丢块时只需重传那一块。

基本信息

块大小取值按 2 的幂,从 16 字节到 1024 字节
编号语义以块大小为单位递增,接收方据此判断顺序与是否缺块
续传标志指示后续是否还有块,最后一块置为结束
两个方向请求体分块与响应体分块使用各自的选项
协商能力服务端可在响应中下调建议的块大小,客户端应据此调整

传输要点

传输要点
# 块大小取值:16、32、64、128、256、512、1024 字节,均为 2 的幂
# 请求体分块:携带请求体块选项,按编号递增发送
# 响应体分块:携带响应体块选项,接收方按编号拼接还原
# 续传标志:最后一块置为结束,中途中断时记录已确认的最大编号
# 服务端建议更小块大小时,客户端应下调后继续,而不是坚持原值

典型使用场景

  • 固件下发:把镜像分块推送到设备,中断后从已确认的块继续
  • 配置包更新:较大的配置文件通过分块传输避免单包超限
  • 日志回传:设备侧日志分段上传,避免长时间占用链路
  • 资源发现导出:设备一次返回多个资源描述时可能超出单包长度
块大小不是越大越好:更大的块意味着单包更长,在丢包率较高的链路上失败概率上升,反而增加总传输量。
分块传输中断后若实现不支持从中间续传,整包重下会在弱网上成倍放大流量与耗电,设备接入前要专门验证续传行为。

易错点

  • 不分块直接发送大载荷:超过链路可承载长度,被分片或直接丢弃
  • 忽略服务端建议的块大小:坚持用过大块发送,实际链路无法承载
  • 分块传输没有超时与续传策略:中断后只能从头再来
  • 对小载荷也使用分块:增加往返次数,效果不如单包发送

数据来源与参考

  • RFC 7959 CoAP 分块传输
  • RFC 7252 CoAP 协议

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/ics/coap-block-wise-transfer.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌​‌‌​​‌​‌‌​‌​‌‌‌​‌‌‌​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​​​​‌​‌‌​‌‌‌​​‌‌‌​​‌‌​‌‌​​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​