第五章 协商机制

5.1 协商原则

DTP 的核心设计原则之一是"协商优先":所有数据传输必须基于双方协商达成的约定(Agreement),不存在"裸传输"。协商机制确保:

  • 主端和从端在数据传输前对传输参数达成明确共识
  • 传输过程中可以动态调整约定参数
  • 任何一方可以主动终止约定

5.2 协商帧类型

DTP 使用两种帧类型完成协商:

请求帧(Request_Frame)

用于发起数据请求或调整传输约定,包含以下要素:

字段说明
requestId请求唯一标识
requestorRole请求方角色(master / slave)
requestType请求类型:collection(归集)/ injection(注入)/ adjustment(调整)/ termination(终止)
targetAgreementId调整/终止时引用的约定 ID
proposedParams提议的约定参数

响应帧(Response_Frame)

用于回复数据请求,包含以下要素:

字段说明
requestId对应的请求 ID
result协商结果:accepted / rejected / counter_proposal
agreedParams接受或替代方案时的最终参数
agreementId接受时生成的约定 ID
rejectionReason拒绝原因

5.3 协商流程

数据归集协商(Master 发起)

Master                              Slave
  │                                   │
  │── Request_Frame (collection) ────▶│
  │                                   │
  │◀── Response_Frame ────────────────│
  │    (accepted / rejected /         │
  │     counter_proposal)             │
  │                                   │
  1. Master 向 Slave 发送数据归集请求,指定数据类型、传输模式、频率等参数
  2. Slave 通过 Response_Frame 回复:
    • 接受:同意按请求参数传输数据
    • 拒绝:仅限于合规性约束(如 DLP 数据防泄漏策略),必须附带合规性理由
    • 替代方案:提出修改后的参数

数据注入协商(Slave 申请)

Slave                               Master
  │                                   │
  │── Request_Frame (injection) ─────▶│
  │                                   │
  │◀── Response_Frame ────────────────│
  │    (accepted + 过滤后数据范围 /    │
  │     rejected /                    │
  │     counter_proposal)             │
  │                                   │
  1. Slave 向 Master 发送数据注入申请,说明需要什么数据
  2. Master 通过 Response_Frame 回复:
    • 接受:附带过滤后的数据范围(最小化数据集)
    • 拒绝:不提供数据
    • 替代方案:提供不同范围或格式的数据

5.4 约定参数

双方达成一致后,生成唯一的 Agreement_ID,约定内容包括:

参数类型说明
dataTypestring数据类型标识
dataRangestring数据范围描述
transferModeenum传输模式:one_time / periodic / streaming
frequencynumber | null传输频率(Hz),一次性模式为 null
validityPeriodnumber有效期(毫秒)
priorityenum优先级:low / normal / high / critical

5.5 约定生命周期

约定经历以下状态:

negotiating ──▶ active ──▶ terminated
                  │
                  ▼
              suspended
  • negotiating:协商进行中
  • active:约定生效,数据传输中
  • suspended:连接中断,约定暂停
  • terminated:约定终止

5.6 动态调整

DTP 支持在传输过程中通过发送新的 Request_Frame(requestType 为 adjustment)动态调整已有约定的参数。

典型场景:iFay 最初要求智能手表每分钟上报一次心率,但检测到用户开始跑步后,动态调整约定为每秒上报一次。

5.7 约定终止

通过发送 Request_Frame(requestType 为 termination)明确终止一个约定。终止后,该约定下的数据传输立即停止。

5.8 多约定并行

DTP 支持在单个会话中同时维护多个活跃的约定。多约定的串行或并行传输取决于底层传输协议的能力。

例如:iFay 同时与智能手表维护心率数据归集约定(每秒一次)和步数数据归集约定(每分钟一次),两个约定独立运行。