首页 理论教育 数据链路层协议中的T=0和T=1及P3参数解析

数据链路层协议中的T=0和T=1及P3参数解析

时间:2023-06-29 理论教育 版权反馈
【摘要】:本节给出了T=0和T=1两类协议的数据链路层描述。4)P3:根据INS的功能,P3指明了发送给IC卡的数据长度或者等待从IC卡返回的最大数据长度。表示不对VPP状态和数据传输施加任何影响。

数据链路层协议中的T=0和T=1及P3参数解析

本节给出了T=0和T=1两类协议的数据链路层描述。2.4.3.1 T=0协议

T=0协议是异步半双工字符传输协议,是面向字符的传输协议,卡和终端之间可以传输的最小数据单元是字节。本协议所用的参数都是在复位应答时所指定的,除非被协议和参数选择所修改,此时由PPS指定参数。

由终端发出命令,由卡发送过程字节。

1.命令头

命令头由终端应用层(Terminal Application Layer,TAL)发出,由连续的5个字节组成,包含CLA、INS、P1、P2和P3。命令头定义如下:

1)CLA:指令类别,除“FF”外的任何值;值为FF时被指定为PPS。

2)INS:指令码,当最低位是“0”,且高位半字节既不是“6”也不是“9”时,INS才有效;

3)P1、P2:INS的附加参数。

4)P3:根据INS的功能,P3指明了发送给IC卡的数据长度或者等待从IC卡返回的最大数据长度。

对T=0协议,这些字节和随命令发送的数据一起构成了命令传输协议数据单元(Command Transport Protocol Data Unit,C-TPDU)。终端传输层(Terminal Transport Layer,TTL)发出这5B的命令头后,会等待由卡返回的过程字节。

2.过程字节

IC卡收到命令头后,会返回一个过程字节给终端传输层(TTL),以指明TTL下一步的动作。过程字节有三种类型,见表2-5:

1)NULL:值为“60”。表示不对VPP状态和数据传输施加任何影响。

2)ACK:除了值“6X”和“9X”以外,在ACK字节中的高七个位全都等于INS字节中相应位或与之互补。ACK字节用于控制VPP状态和数据传输。

3)SW1-SW2:SW1的值为“6X”或“9X”,但不包括“60”;SW2为任意值。SW1-SW2用于表示命令结束。当SW1-SW2=“90”-“00”时表示正常结束。

表2-5 对过程字节的响应

978-7-111-39929-2-Chapter02-15.jpg

对过程字节ACK和NULL,终端传输层(TTL)完成动作后将等待另一个过程字节;对SW1,在收到第二个状态字节SW2后,终端传输层TTL将做以下事情:

1)如果过程字节为“61”,TTL将发送一个P3=“XX”的命令(GET RE-SPONSE)给卡,“XX”为SW2的值。

2)如果过程字节为“6C”,TTL将立即重发前一个命令的命令头给IC卡,此时的P3=“XX”,“XX”为SW2的值。

3)如果状态码是“6X”(除“60”、“61”及“6C”之外)或“9X”,TTL将通过命令响应APDU(Response Application Protocol Data Unit,R-APDU)返回状态码SW1和SW2给终端应用层(TAL),并等待下一个命令应用协议数据单元(Command Application Protocol Data Unit,C-APDU)。

当返回的状态码SW1-SW2=“90”-“00”时,表示正常结束;若SW1的高半字节为6,则表示发生了与应用无关的错误,见表2-6。

表2-6 SW1的错误代码

978-7-111-39929-2-Chapter02-16.jpg

2.4.3.2 T=1协议

T=1协议是异步半双工块传输协议,卡和终端之间可以传输的最小数据单元是块组(Block)。本协议定义了异步半双工块传输协议使用的命令结构和处理,这些命令由接口设备(Interface Device,IFD)和集成电路卡(Integrated Cir-cuit Card,ICC)启动,包括卡专用的控制,以及流控制、块链和错误校正等的数据传输控制。

1.块帧(Block Frame)

一个块帧由一串字节组成,每个字节以异步字符的形式传输。块帧包括三部分:起始域(Prologue Field)、信息域(Information Field)和终止域(Epilogue Field),其中起始域和终止域是必须要发送的,信息域是可选的。块帧格式见表2-7。

表2-7 块帧格式

978-7-111-39929-2-Chapter02-17.jpg

(1)起始域

起始域含有三个子段:节点地址(NAD)、协议控制字节(PCB)和长度(LEN),每个子段占1B。

1)节点地址(Nod Address,NAD)。

起始域的第1个字节称为节点地址(NAD),用于标识块的目的节点地址和源节点地址。其中,b1~b3是源节点地址(Source node Address,SAD),b5~b7是目的节点地址(Destination node Address,DAD),b4和b8用于表示VPP状态控制。当不使用节点地址时,将SAD和DAD置0。当使用节点地址时,由IFD发送给IC卡的第一个数据块的SAD与DAD应设为不同的值。当SAD与DAD值相等且不为0时,NAD的其他值保留将来使用。

由IFD发送的第一个块的NAD确定了SAD与DAD的逻辑关系,在随后块中的NAD域包含了相同的SAD与DAD地址对,并具有相同的逻辑关系。例如,由IFD发送的块,其SAD的值为X,DAD的值为Y;由ICC发送的块,其SAD的值为Y,DAD的值为X,这属于一个逻辑连接(X,Y)。如果IFD发送块的SAD值为V,DAD值为W,ICC发送块的SAD值为W,DAD值为V,则属于另一个逻辑连接(V,W)。

2)协议控制字节(Protocol Field,PCB)。

起始字段的第2个字节称为协议控制字节(PCB),用来传送控制传输所需要的信息,表明了传输块类型。本协议定义了三种基本类型块:

信息块(I-block,I块):传送应用层信息及确认信息。

接收准备块(R-block,R块):发送确认信息,没有信息域。

管理块(S-block,S块):在IFD和ICC之间交换控制信息,其信息域的存在与否取决于S块控制功能的需要。

不同基本类型块的PCB编码不同,见表2-8~表2-10。

表2-8 I块的PCB编码

978-7-111-39929-2-Chapter02-18.jpg

表2-9 R块的PCB编码

978-7-111-39929-2-Chapter02-19.jpg

表2-10 S块的PCB编码

978-7-111-39929-2-Chapter02-20.jpg

3)长度(Length,LEN)。

LEN表示被传送的信息域字节数,其值为“00”~“FE”(0~254B),0值表示没有信息域INF。

(2)信息域(Information Field)(www.xing528.com)

信息域(INF)是可选的,当它存在时,可以是应用数据(I块)或控制和状态信息(S块),被传送的字节数由LEN指出。R块中没有信息域。

(3)终止域(Epilogue Field)

终止域用来传送差错校验码(Error Detection Code,EDC),可以采用纵向冗余校验(Longitudinal Redundancy Check,LRC),也可以采用循环冗余校验(Cy-clic Redundancy Check,CRC)。其中LCR占1B,CRC占2B。LCR的值与块中所有字节进行异或运算时结果都为0。CRC的值参照ISO/IEC 13239。

2.协议参数

(1)特殊接口字符

当特殊接口字符TAi、TBi、TCi出现在复位应答中,且在TDi-1i>2)中的T=1第一次出现之后时,这些特殊接口字符用来将协议参数设为非默认值,将此时的这三个字节命名为第一TAi、第一TBi、第一TCi

(2)卡的信息域尺寸(IFSC)

卡的信息域尺寸是卡能接受的各个块中信息域的最大长度,由第一TAi设置其初值,默认值为32。

(3)接口设备的信息域尺寸(IFSD)

接口设备的信息域尺寸是指接口设备能接受的各个块中信息域的最大长度,默认值为32。

(4)IFSC和IFSD的编码

IFSC和IFSD在协议启动时被初始化。其编码规则为“01”~“FE”,为数字1~254,“00”和“FF”保留。需要注意的是:块的尺寸是起始域、信息域和终止域所传输字节的总和,所以块的最大尺寸为IFSC加上4B或5B(取决于终止域的长度)。

3.等待时间

在数据传输时,定义了不同的等待时间以使收发双方能在规定的最小和最大时间区间内作不同的处理,同时也提供了规定的方法来结束通信,以防止在出差错的情况下死锁。

978-7-111-39929-2-Chapter02-21.jpg

图2-11 字符等待时间

(1)字符等待时间

字符等待时间定义为同一块中两个连续字符起始沿之间的最长时间,如图2-11所示。由第一TBi的b4~b1给出字符等待时间整数值(CWI),其范围为0~15,CWT的计算公式为

CWT=(2CWI+11)ETU(2-1)

CWT的最小值等于12ETU,默认值为13。

(2)块等待时间(BWT)

块等待时间定义为送达到卡的最后一个字符的起始沿与由卡发送出的第一个字符的起始沿之间的最长时间,如图2-12所示。

978-7-111-39929-2-Chapter02-22.jpg

图2-12 块等待时间和块保护时间

第一TBi的b8~b5给出块等待时间整数值(BWI),其范围为0~9,10~15留待将来使用。BWI的默认值为4。BWT的计算公式为

BWT=(2BWI×960×372D/f+11)ETU(2-2)

BWT用来检测无响应的卡。

(3)块保护时间(BGT)

块保护时间为两个相对方向发送的连续字符起始沿之间的最短时间,所以一个已接收块的最后一个字符与一个被传输块的第一个字符之间的延时至少应大于BGT且小于BWT。

4.数据链路层——字符部分

VPP状态由NAD的b8和b4控制:

1)b8=0,b4=0:VPP置为0或保持空闲状态。

2)b8=1,b4=0:VPP置为编程状态,在接收PCB后回到空闲状态。

3)b8=0,b4=1:VPP置为编程状态,直到终端收到另一个PAD字节。

4)b8=1,b4=1:禁用。

如果NAD上发生奇偶错,VPP应返回或保持空闲状态。如果发生超时,即在CWT或BWT期间卡发送一个预期字符失败,则VPP应返回或保持空闲状态。一个字符触发的所有VPP传输应发生在该字符上升沿起的12ETU期间。

5.数据链路层——块部分

在复位应答或协议类型选择之后的第一个块是由终端传送到IC卡的,可以是信息块或管理块。

发送一个块(I块、R块或S块)后,在下一个块传送之前,发送方应该接收到确认,描述如下:

信息块I-block的序列号位N(S)是一个二进制位(bit),它的起始值为0,在传送一个信息块I-block之后加1(模2);

接收准备块R-block的序列号位N(S),它的值等于下一个要传送的I-block中的N(S),R-block用于链接I-block;

管理块S-block有请求块S(...request)-block和响应块S(...re-sponse)-block两种,接收到请求块后发出一个响应块。

块的链接情况受I-block中的协议控制字节(PCB)的M位控制,M位指出I-block的两种状态,当M=1时,表示链组后面还有块,为0时表示是链组的最后一个块。

6.链接

数据链接允许接口设备(IFD)和IC卡传输比IFSC或IFSD长的信息。如果接口设备(IFD)和IC卡传输的信息必须比相应的IFSC或IFSD长,则该信息应分为几个信息块,每个块的LEN应小于或等于IFSC或IFSD,并且采用链接功能发送多个块。

应用数据(Application Data)由接口设备(IFD)传送到IC卡,假设分成三个信息块,分别为Applic、action和Data,每次传送信息时还传送PCB,以I(N(S),M)表示,其中N(S)是发送序列号,M表示后面是否还有块需要传送。当发送第一个块时,PCB给出I(0,1),表示发送序列号为0,且具有后续块的I块;IC卡接收后,给出R-block,其中包括R(N(R)),N(R)为下一个要接收的块序列号,所以N(R)=1,…当发送完第三个块时,IC卡发回信息长度为0的I-block,I(0,0)表示传送结束。其操作过程如图2-13所示。

978-7-111-39929-2-Chapter02-23.jpg

图2-13 链接功能

I块的链接由PCB中的M位(多数据位)控制,M=1表示链接了下一个块,且其为I块。当接收方正确接收到多数据I块时,它应发送R(N(R)),其中N(R)等于下一个I块的N(S)。另外,可在一个链中使用长度为0的I块。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈