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 块可能被发送后,取决于是否有必要返回发送的权利。

注意:链接中止可能是由于卡内的物理错误,如内存错误。

原文地址:https://www.cnblogs.com/sunchukun/p/13591075.html