第五章 協商機制

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 同時與智慧手錶維護心率資料歸集約定(每秒一次)和步數資料歸集約定(每分鐘一次),兩個約定獨立運作。