T=1協議(譯自 ISO7816-3)


11 協議T=1,半雙工傳輸塊

11.1 范圍和原則

本節定義了在塊的半雙工傳輸中命令的結構和處理。塊是用異步字符傳遞的字節字符串。接口設備和卡可以發起這些命令。本節涵蓋了數據傳輸控制,如流控制、塊鏈接和錯誤糾正。

傳輸協議的主要特征如下。

  1. 傳輸協議從接口設備傳輸第一塊開始;它繼續依次正確地傳輸塊。
  2. 塊是可交互的最小數據單元。塊可用於傳輸。
    • 應用程序數據對傳輸協議透明,
    • 傳輸控制數據,包括傳輸錯誤處理。
  3. 塊結構允許在處理傳輸數據之前檢查接收的塊。

傳輸協議采用 OSI 參考模型的原理。定義了三個層(物理層、數據鏈路層、應用層)。

  1. 物理層傳輸按 11.2 以異步字符組織的矩。
  2. 所述數據鏈路層包括字符組件和塊組件。
    • 字符組件根據 11.5 的規則識別代碼塊的開始和結束。
    • 模塊組件按照 11.6 交換模塊。
  3. 應用層處理命令,這涉及到在每個方向上交換至少一個塊或塊鏈。

11.2 字符幀

傳輸協議應按 6.3.1 的規定啟動。 字符幀應按照 7.1 和 7.2 的規定,使用 TS 規定的編碼約定(見8.1)。 不得使用根據 7.3 的錯誤信號和字符重復。 有兩個保護時間。

  1. 標記為 CGT 的 “字符保護時間” 是相同傳輸方向上兩個連續字符的前沿之間的最小延遲。 如果 N = 0 至 254 ,則 CGT = GT(如8.3中所指定)。 如果 N = 255,則在兩個傳輸方向上的 CGT = 11 etu。
  2. “塊保護時間” 表示兩個相鄰字符前緣在相反方向上的最小延遲。BGT = 22 etu。

除了校驗碼外,字符奇偶校驗允許檢查塊(見 11.3.4 and 11.4.4)。

11.3 塊結構

11.3.1 概要

如 圖17 所示,一個塊由兩個或三個字段組成

  • 頭部字段由節點地址字節(NAD)、協議控制字節(PCB)和長度字節(LEN)共 3 個字節組成。
  • 信息字段由 0 到 254 字節組成。
  • 尾部字段由 1 個或 2 個字節組成。
頭部字段(強制) 信息字段(可選) 尾部字段(強制)
NAD(1 byte) PCB(1 byte) LEN(1 byte) INF(0 to 254 bytes) LRC(1 byte) or CRC(2 bytes)

傳輸協議定義了三種類型的塊。

  • 信息塊(I 塊)用於傳輸供應用層使用的信息。此外,它還傳輸了一種肯定或否定的應答。
  • 接收就緒塊(R 塊)用於傳輸肯定或否定的應答。其信息字段應缺失。
  • 管理塊(S 塊)用於在接口設備和卡之間交換控制信息。它的信息字段的存在取決於它的控制功能。

注意,這種分類使得協議控制和設備微代碼的應用程序部分的設計相對獨立。

11.3.2 頭部字段

11.3.2.1 節點地址字節

節點地址字節(NAD)允許識別塊的源和預期目的地;當多個邏輯連接同時存在時,可以使用它來區分它們。值 'FF' 無效。它是為 PPSS 保留的(見 6.3.1 和 9.2)。位 1 到位 3 是源節點地址,表示 SAD,位 5 到 7 是目的節點地址,表示 DAD。位 4 和位 8 是不支持的。卡片應該設置為 00。並且接口設備應忽略它們。

注意,ISO/IEC 7816-3 的前兩個版本指定了位 4 和位 8 來控制觸點 C6,這是不建議使用的,因為已廢除(見 5.1.1)。

不使用尋址時,SAD 和 DAD 的值設置為 000。如果 SAD 和 DAD 是相同的,那么 NAD 的任何其他值都將留待將來使用。

在接口設備傳輸的第一個塊中,NAD 需要將 SAD 和 DAD 地址關聯起來,建立邏輯連接。NAD 將相同的地址(SAD和DAD)的后續塊與相同的邏輯連接進行關聯。在信息交換過程中,其他地址對 SAD 和 DAD 可能會建立其他邏輯連接。

請注意,例如:接口設備傳輸的 值為 x 的 SAD值為 y 的 DAD 的塊,卡傳輸的 值為 y 的 SAD值為 x 的 DAD 的塊,屬於邏輯連接(x, y);接口設備傳輸的 值為 v 的 SAD值為 w 的 DAD 的塊,卡傳輸的 值為 w 的 SAD值為 v 的 DAD 的塊,屬於另一個邏輯連接(v, w)。

11.3.2.2 協議控制字節

協議控制字節(PCB)傳輸控制傳輸所需的信息。PCB 定義了塊是 I 塊、R 塊還是 S 塊。

I Block

在每個 I 塊中,PCB 的第 8 位被設為 0,如下圖所示。

  • 第 7 位對表示 N(S) 的發送序列號進行編碼。
  • 第 6 位是多數據位,表示為 m 位。
  • 第 5 位到第 1 位被保留為將來使用,並且應該被設置為 0。
圖 18 — I 塊的 PCB 編碼
Bit 8 = 0(msb) Bit 7 Bit 6 Bit 7 Bit 6 Bit 7 Bit 6 Bit 1(lsb)

R Block

在每個 R 塊中,PCB 的第 8 位和第 7 位被設置為 10,如圖 19 所示。第 6 位到第 1 位的使用方式如下。

  • 0-N(R)-0000 表示無錯誤確認。
  • 0-N(R)-0001 表示冗余碼錯誤或字符奇偶校驗錯誤。
  • 0-N(R)-0010 表示其他錯誤。
  • 任何其他價值都保留以備將來使用。

注意,值 N(R) 表示 R 塊是否表示錯誤。第 4 位到第 1 位可能被忽略。

圖 19 — R 塊的 PCB 編碼
Bit 8 = 1(msb) Bit 7 = 0 Bit 6 Bit 7 Bit 6 Bit 7 Bit 6 Bit 1(lsb)

S Block

在每個 S 塊中,PCB 的第 8 位和第 7 位被設置為 11,如圖 20 所示。第 6 位到第 1 位的使用方式如下。

  • 000000 表示一個重新同步請求,100000 表示一個重新同步響應。
  • 000001 表示 IFS 請求,100001 表示 IFS 響應。
  • 000010 表示中止請求,100010 表示中止響應。
  • 000011 表示 WTX 請求,100011 表示 WTX 響應。
  • 100100 是棄用的。
  • 任何其他價值都保留以備將來使用。

注意,第 6 位是響應位。

圖 20 — S 塊的 PCB 編碼
Bit 8 = 1(msb) Bit 7 = 1 Bit 6 Bit 7 Bit 6 Bit 7 Bit 6 Bit 1(lsb)
11.3.2.3 長度字節

長度字節(LEN)編碼塊的信息字段中的字節數(也參見 11.4.2 )。

  • 值 “00” 編碼為 0 : INF 不存在。
  • 從 '01' 到 'FE' 的值編碼數字 1 到 254 : INF 存在。
  • “FF”值保留以備將來使用。
11.3.3 信息字段

信息字段(INF)的使用取決於塊的類型。

  • 當 INF 在 I 塊中出現時,INF 傳遞應用程序信息。
  • 在 R 塊中應該沒有 INF。
  • 當 INF 在 S 塊中出現時,INF 傳遞非應用程序信息。
    • INF 應該和一個單獨的字節一起出現在 S 塊調整 IFS 和 WTX。
    • 在 S 塊管理鏈中止或重新同步中應不存在 INF。
11.3.4 尾部字段

尾部字段傳遞塊的校驗碼,要么縱向冗余碼(LRC),要么循環冗余碼(CRC)。

  • LRC 由一個字節組成。當使用 LRC 時,一個塊的校驗是把 NAD 到 LRC(包括 NAD)的所有字節依次進行異或之后,值應為 “00”。任何其他值都表示校驗失敗,數據無效。
  • CRC 由兩個字節組成。其值見 ISO/IEC 13239[4]。

11.4 協議參數

11.4.1 T = 1 的特定接口字節

指定了三個特定的接口字節:第一個 TA 用於 T = 1,第一個 TB 用於 T = 1,第一個 TC 用於 T = 1(參見 8.2.3)。它們用於以非默認值設置協議參數。

11.4.2 信息字段大小

IFSC 是卡片能接收的塊的信息字段的最大大小。如果存在,T = 1 的第一個 TA 設置 IFSC 的初始值。默認值是 32。

IFSD 是接口設備能接收的塊的信息字段的最大大小。IFSD 的初始值是 32。

在傳輸協議的開始,初始化 IFSC 和 IFSD。在傳輸協議期間,IFSC 和 IFSD 可以調整 S(IFS 請求)和S(IFS 響應),其中 INF 由一個字節命名為 IFS,其中 INF 由一個字節命名為 IFS。

在任何情況下,T = 1 的第一個 TA 和每個字節 IFS 都應該編碼如下。

  • 值 "00" 和 "FF" 被保留以備將來使用。
  • 值 "01" 到 "FE" 編碼數字 1 到 254。

注 1:本文檔建議 IFS 值至少為 “20”。

注 2:塊大小是頭部字段、信息字段和尾部字段中出現的字節總數。根據尾部字段的大小,將最大塊大小設置為 IFS 加上 4 個或 5 個。

11.4.3 等待時間

通過定義,CWT 是塊中兩個連續字符前緣之間的最大延遲(見圖 21)。最小延遲為 CGT(見 11.2)。

注意:當長度存在潛在錯誤時,CWT 可用於檢測塊的末端。

圖 21 — 在塊中的字符計時

T = 1 編碼 CWI 的第一個 TB 的第 4 位到第 1 位,從 0 到 15。這 CWI 的默認值為 13。由 CWI 通過以下公式計算 CWT。因此 CWT 的最小值是 12 etu。

\[CWT = (11 + 2^{CWI})etu \]

根據定義,BWT 是卡片接收到的塊的最后一個字符的前緣與卡片傳輸的下一個塊的第一個字符的前緣之間的最大延遲(見 圖22)。BWT 用於檢測無響應的卡。最小延遲為 BGT (見 11.2)。

圖 22 — 塊計時

T = 1 的第一個 TB 的第 8 位到第 5 位編碼 BWI 從 0 到 9。從 “A” 到 “F” 的值保留以備將來使用。默認值是 BWI = 4。根據 BWI 計算 BWT,計算公式如下。

\[BWT = 11 etu + 2^{BWI} × 960 × \frac{Fd}{f} \]

11.4.4 冗余碼

T = 1 的第一個 TC 的第 1 位表示所使用的錯誤檢測代碼:

  • 如果第 1 位設置為 1,則使用 CRC。
  • 如果第 1 位設置為 0,則使用 LRC(默認值)。

T = 1 的第一個 TC 的第 8 到第 2 位被保留為將來使用,應該被設置為 0。

11.5 數據鏈路層的字符組件操作

在傳輸協議開始時,接口設備正確進行傳輸。異步字符總是按塊分組。

當卡或接口設備傳輸了一個塊時,它切換到接收模式。
當卡或接口設備接收到根據長度字節中編碼的字節數的塊時,它假定它有權發送。

11.6 數據鏈路層的塊組件操作

11.6.1 塊符號

下面的塊用於傳輸協議的描述。

I 塊表示如下。

I(N(S), M) I 塊,其中 N(S) 是發送序列號(全稱 send-sequence number),M 是更多數據位(見 11.6.2.2 )。
Na(S), Nb(S) 索引 a 和 b 的 I 塊的發送序列號用來區分源 a 和 b。

R 塊表示如下。

R(N(R)) R塊,其中 N(R) 是預期 I 塊的發送序列號。

S 塊表示如下。

S(RESYNCH request) 請求重新同步的 S 塊
S(RESYNCH response) S 塊確認重新同步
S(IFS request) 提供信息字段的最大大小的 S 塊
S(IFS response) S 塊確認 IFS
S(ABORT request)/td> S 塊請求進行鏈式終止
S(ABORT response) S 塊確認鏈式中止
S(WTX request) 請求等待時間延長的s塊
S(WTX response) S 塊確認等待時間延長
在 S(IFS …) 和 S(WTX …) 中,INF是根據 11.6.2.3 中的規則 3 和規則 4 出現的。

11.6.2 無錯誤操作

11.6.2.1 通用過程

在傳輸協議開始時,由接口設備傳輸到卡的第一個塊應該是 I 塊或 S 塊。

在一個數據塊(I、R、S)被發送之后,在下一個數據塊開始發送之前,應接收到一個確認信息,如下所述。

每個 I 塊攜帶它的發送序列號 N(S)。由接口設備傳輸的 I 塊和由卡傳輸的 I 塊相互獨立計數。N(S) 以 2 為模計數,並以 1 位進行編碼。在傳輸協議開始時或重新同步后,初始值 N(S) = 0;然后在傳輸每個 I 塊之后替換值。

每個 R 塊攜帶 N(R),即預期 I 塊的發送序列號 N(S)。在無錯誤操作中,R 塊用於鏈接 I 塊(參見 11.6.2.2)。

I 塊通過接收其中一個來確認

  • 一個 I 塊,其中 N(S) 與之前接收的 I 塊的 N(S) 不同,或
  • 一個 R 塊,其中 N(R) 與傳輸的 I 塊的 N(S) 不同(參見 11.6.2.3 中的規則 2.2)。

S 塊沒有發送序列號。S(… request) 沒有確認。S(… response) 確認 S(… request)。

11.6.2.2 鏈接

鏈接功能允許接口設備或卡傳輸信息(應用程序數據)比 IFSC 或 IFSD 長。如果接口設備或卡要傳輸的信息分別超過 IFSC 或 IFSD,則應將信息分成若干個片段,每個片段的長度應小於或等於 IFSC 或 IFSD,並使用鏈接功能以一個塊的形式傳輸。圖23 演示了鏈接功能。

圖 23 — 鏈接方法

PCB 中的 M 位控制 I 塊的鏈接。M 位的值表示 I 塊的狀態。

  • 如果 M = 1,那么 I 塊被鏈到下一個塊,它應該是一個 I 塊。
  • 如果 M = 0,則 I 塊沒有鏈接到下一個塊。

如果接收方正確接收到一個多數據的 I 塊,則應發送 R(N(R)),其中 N(R) 被設為預期 I 塊的 N(S)。

注意,LEN = '00' 的 I 塊可以在鏈中使用(參見附件 A 中的場景 7 )。

11.6.2.3 無錯誤操作的協議規則

規則 1:接口設備傳輸第一個塊,可以是 N(S) = 0 表示 I(0, M) 的 I 塊,也可以是 S 塊。

規則 2.1:A 發送的 I(Na(S), 0) 被 B 發送的I(Nb(S), M) 確認,以傳輸應用數據並表示准備接收來自 A 的下一個I塊。

規則 2.2:A 發送的 I(Na(S), 1) 被 B 發送的 R(Nb(R)) 確認(此時 Nb(R) 未被設置為Na(S)),表明接收塊是正確的,並且准備接收 A 發送的下一個 I 塊。

注意:鏈接一次只能在一個方向上運行。

規則 3:如果卡需要比 BWT 更多的 BWT 來處理以前收到的 I 塊,它傳輸 S(WTX request),INF 傳送一個字節編碼 BWT 值的整數倍。接口設備應以相同 INF 的 S(WTX response) 進行應答。

分配的時間從 S(WTX response) 的最后一個字符的前緣開始。

規則 4:卡傳送 S(IFS request) 表明一個新的 IFSC 它可以支持。接口設備應以 S(IFS response) 確認相同的 INF。只要沒有其他 IFSC 被另一個 S(IFS request) 指示,接口設備假定新的 IFSC 是有效的。

接口設備發送 S(IFS request) 來表明它可以支持一個新的 IFSD。該卡將以 S(IFS response) 確認相同的 INF。只要沒有其他 IFSD 被另一個 S(IFS request) 表示,該卡假定新的 IFSD 是有效的。

IFSC 和 IFSD 的 INF 編碼,見 11.4.2。

規則 5:鏈接用 M 位表示,其中 I(N(S), 0) 是未鏈接的塊或鏈接的最后一個塊。I(N(S), 1) 是一條鏈接的一部分,必須有至少一個鏈塊跟隨。

R(N(R)) 請求傳輸下一個鏈 I 塊 I(N(S) = N(R), …),並確認接收到的鏈接 I 塊的 I(NOT N(R), 1)。

11.6.3 錯誤處理

11.6.3.1 接收器檢測到的錯誤

塊層的任務是傳輸塊,檢測傳輸和序列錯誤,處理這些錯誤,並重新同步傳輸協議。因此,數據鏈路層的塊組件應該能夠處理以下錯誤。

  • BWT 超時:卡在指定的延遲內沒有傳輸任何字符。
  • 接收無效塊:例如
    • 字符奇偶校驗錯誤(s),
    • 冗余碼錯誤,
    • PCB 無效(由於未知編碼),
    • 無效的 LEN (傳輸錯誤或與塊類型或 IFSC 或 IFSD 不兼容),
    • 由於塊大小和 LEN 編碼的數字不一致而失去同步,
    • 在發送了 S(… response) 后,未能收到相關的 S(… request) 響應。

可以在三個連續的級別上嘗試傳輸協議的重新同步。如果一個級別不成功,則嘗試下一個級別。

  • 對於接口設備,有三個層次
    • 塊重傳,
    • 使用 S(RESYNCH request),
    • 熱復位或停用。
  • 對於卡片,三個層次是
    • 塊重傳,
    • 使用 S(RESYNCH response),
    • 如果沒有接口設備的動作,卡就會失去響應。
11.6.3.2 用於錯誤處理的協議規則

規則 6:S(RESYNCH request) 只能由接口設備傳輸以達到重新同步並開始重新設置傳輸協議的通信參數到它的初始值。

規則 6.1:如果接收器檢測到同步丟失,則在電路 I/O 的默認狀態大於 CWT 或 BGT 中的較大值后,它將恢復發送的權利。

規則 6.2:S(RESYNCH request) 應由卡上的 S(RESYNCH response) 作出響應。

規則 6.3:在接口設備接收到 S(RESYNCH response) 后,傳輸協議被啟動。

規則 6.4:在接口設備連續失敗最多三次后,通過發送 S(RESYNCH request) 達到預期的重新同步,它執行一個熱復位或一個停用。

規則 6.5:當接收到 S(RESYNCH request) 時,假定之前傳輸的塊未被接收。

規則 7.1:當一個 I 塊被傳輸,一個無效的塊被接收或者 BWT 超時(與接口設備)發生時,一個 R 塊被傳輸,它用它的 N(R) 請求 N(S) = N(R) 預期的 I 塊。

規則 7.2:當一個 R 塊被傳輸並且一個無效的塊被接收或者 BWT 超時(與接口設備)發生時,這個 R 塊被重新傳輸。

規則 7.3:當發送 S(… request) 而接收到的響應不是 S(… response) 或發生 BWT 超時(僅對接口設備)時,將重新發送 S(… request)。

當 S(… response) 被發送,一個無效的塊被接收或 BWT 超時發生(僅與接口設備),一個 R 塊被發送。

規則 7.4.1:在傳輸協議開始時接收到無錯誤塊失敗后,接口設備在執行熱復位或失活之前連續進行最多兩次的進一步嘗試。

規則 7.4.2:在傳輸協議期間,如果接口設備未能接收到無錯誤的塊,它將在傳輸 S(RESYNCH request) 之前連續進行最多兩次嘗試。

規則 7.4.3:如果卡在連續第二次嘗試后未能接收到無錯誤塊,則卡仍處於接收模式。

規則 7.5:在接收到無效的第一個塊時,卡通過發送 R(0) 作出反應。

規則 7.6:如果由接口設備傳輸的第一個塊在 BWT 中沒有響應,接口設備傳輸 R(0) 。

規則 8:當卡傳輸 S(IFS request) 和收到無效塊,它重新傳輸一個最大的多一個 S(IFS request),以引出一個S(IFS response) 。在第二次失敗后,它仍處於接收模式。

規則 9:一個鏈接的中止可以由發送 S(ABORT request) 的發送者或接收者發起,發送 S(ABORT response) 應回答 R 塊可能被發送后,取決於是否有必要返回發送的權利。

注意:鏈接中止可能是由於卡內的物理錯誤,如內存錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM