本文轉(zhuǎn)自:https://www.bbsmax.com/A/l1dyxrEA5e/ ,支持原創(chuàng),傳播知識(shí),僅供學(xué)習(xí)自用。
之前說過的T=0協(xié)議,基本上相當(dāng)于是透明的數(shù)據(jù),也就是說從應(yīng)用的角度看,通過T=0傳遞的TPDU數(shù)據(jù)信息大都可以直接轉(zhuǎn)換為對(duì)應(yīng)的APD命令響應(yīng)數(shù)據(jù),“字節(jié)”是T=0協(xié)議最小的數(shù)據(jù)傳輸單元。
對(duì)于T=1協(xié)議而言,最小的數(shù)據(jù)傳輸單元是“數(shù)據(jù)塊”,這個(gè)數(shù)據(jù)塊由若干個(gè)字節(jié)組成,其中有些字節(jié)是必須的,有些字節(jié)是可選的。每個(gè)數(shù)據(jù)塊最多可以包含多少個(gè)字節(jié)(也就是數(shù)據(jù)塊的大?。┛梢酝ㄟ^三種途徑確定:
1)ATR中對(duì)應(yīng)協(xié)議T=1的專有接口字節(jié)指出;
2)使用默認(rèn)的值;
3)在數(shù)據(jù)傳輸過程中協(xié)商。
一個(gè)數(shù)據(jù)塊其實(shí)就是一個(gè)“數(shù)據(jù)包”,其中包頭的3個(gè)字節(jié)(NAD 1字節(jié) + PCB 1字節(jié) + LEN 1字節(jié))和包尾1個(gè)或者2個(gè)字節(jié)(如果采用LRC校驗(yàn)就是 1字節(jié),采用CRC校驗(yàn)就是 2字節(jié))是必須的,中間的信息數(shù)據(jù)域INF則是可選的。其中NAD代表節(jié)點(diǎn)地址,基本不用,可以設(shè)置為“00”;PCB代表協(xié)議控制字節(jié),用來指明數(shù)據(jù)塊的類型(分為:傳遞信息域數(shù)據(jù)的I-塊,應(yīng)答響應(yīng)的R-塊,負(fù)責(zé)通訊參數(shù)協(xié)商的S-塊)、序列號(hào)、是否存在后續(xù)的鏈接塊、是否有校驗(yàn)錯(cuò)誤、額外超時(shí)等待請(qǐng)求、信息數(shù)據(jù)域大小的協(xié)商等。
和T=0協(xié)議最明顯的不同是,T=1協(xié)議按照OSI的參考模型進(jìn)行了分層,分別是:物理層、數(shù)據(jù)鏈路層和應(yīng)用層。物理層主要是數(shù)據(jù)字符的傳輸,數(shù)據(jù)鏈路層主要是數(shù)據(jù)塊的傳輸,而應(yīng)用層主要是APDU的交互傳輸。APDU的交互與數(shù)據(jù)字符的傳輸,這些和T=0協(xié)議里面描述的大體相同,關(guān)鍵的就是數(shù)據(jù)鏈路層定義的數(shù)據(jù)塊傳輸。因?yàn)檫@個(gè)數(shù)據(jù)鏈路層的定義,使得T=1協(xié)議基本具備了可以實(shí)現(xiàn)復(fù)雜網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)娜刻卣?,相比而言T=0協(xié)議簡(jiǎn)直就等同于“裸傳”了。
數(shù)據(jù)鏈路層主要進(jìn)行的是3類數(shù)據(jù)塊的交互傳輸,基本的原則是:第一個(gè)數(shù)據(jù)塊一定是從終端發(fā)給卡片的I-塊或者S-塊;I-塊可以用R-塊或者I-塊來應(yīng)答,而S-塊的請(qǐng)求只能用S-塊的響應(yīng)來應(yīng)答;I塊和R-塊會(huì)包含有“0”和“1”的序列號(hào),序列號(hào)的初始值為“0”,重新同步之后也是再次從“0”開始,之后在“0”和“1”之間交替切換;如果一條應(yīng)用數(shù)據(jù)大于數(shù)據(jù)塊信息域的最大長(zhǎng)度,則需要分割為若干個(gè)鏈接的數(shù)據(jù)塊來傳輸;和T=0協(xié)議卡片發(fā)送“0x60”類似,如果卡片需要較長(zhǎng)時(shí)間進(jìn)行命令處理,可以用延長(zhǎng)等待時(shí)間的WTX請(qǐng)求S-塊讓終端繼續(xù)等待;一旦傳輸過程中出現(xiàn)錯(cuò)誤,可以通過數(shù)據(jù)塊重發(fā)、重新同步、卡片復(fù)位等動(dòng)作來進(jìn)行糾錯(cuò)。
對(duì)于各種正常和異常數(shù)據(jù)傳輸?shù)奶幚恚?816定義了若干的規(guī)則(rules)明確而詳細(xì)地說明了終端和卡片在數(shù)據(jù)塊傳輸過程中應(yīng)該遵循的流程。
在實(shí)際應(yīng)用中,接觸式卡片遵循7816 T=1協(xié)議的不是很多,但是非接觸的14443 T=CL協(xié)議,在數(shù)據(jù)傳輸方面和7816的T=1協(xié)議如出一轍,而且在檢測(cè)過程中,最容易出現(xiàn)軟件問題的地方也正是非接觸協(xié)議這部分。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。