这个子句定义了在块的半双工传输中命令的结构和处理。块是用异步字符传递的字节字符串。接口设备和卡可以发起这些命令。这一条款涵盖了数据传输控制,如流控制、块链接和错误纠正。
传输协议的主要特征如下。
传输协议采用 OSI 参考模型的原理。定义了三个层。
传输协议应按6.3.1的规定启动。 字符帧应按照 7.1 和 7.2 的规定,使用TS规定的编码约定(见8.1)。 不得使用根据 7.3 的错误信号和字符重复。 有两个保护时间。
除了校验码外,字符奇偶校验允许检查块(见 11.3.4 and 11.4.4)。
如 图17 所示,一个块由两个或三个字段组成
头部字段(强制) | 信息字段(可选) | 尾部字段(强制) | ||
---|---|---|---|---|
NAD(1 byte) | PCB(1 byte) | LEN(1 byte) | INF(0 to 254 bytes) | LRC(1 byte) or CRC(2 bytes) |
传输协议定义了三种类型的块。
注意,这种分离使得协议控制和设备微代码的应用程序部分的设计相对独立。
节点地址字节( 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)。
协议控制字节(PCB)传输控制传输所需的信息。PCB 定义了块是 I 块、R 块还是 S 块。
I Block
在每个 I 块中,PCB 的 8 位被设为 0,如下图所示。
第 7 位对表示 N(S) 的发送序列号进行编码。
第 6 位是多数据位,表示为 m 位。
第 5 位到第 1 位被保留为将来使用,并且应该被设置为 0。
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 位的使用方式如下。
注意,值 N(R) 表示 R 块是否表示错误。位 4 到 1 可能被忽略。
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 位的使用方式如下。
注意,第 6 位是响应位。
Bit 8 = 1(msb) | Bit 7 = 1 | Bit 6 | Bit 7 | Bit 6 | Bit 7 | Bit 6 | Bit 1(lsb) |
长度字节(LEN)编码块的信息字段中的字节数(也参见 11.4.2 )。
信息字段(INF)的使用取决于块的类型。
尾部字段传递块的校验码,要么纵向冗余码(LRC),要么循环冗余码(CRC)。
指定了三个特定的接口字节:第一个 TA 用于 T = 1,第一个 TB 用于 T = 1,第一个 TC 用于 T = 1(参见 8.2.3)。它们用于以非默认值设置协议参数。
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 都应该编码如下。
注 1:本文档建议 IFS 值至少为 “20”。
注 2:块大小是头部字段、信息字段和尾部字段中出现的字节总数。根据尾部字段的大小,将最大块大小设置为 IFS 加上 4 个或 5 个。
通过定义,CWT 是块中两个连续字符前缘之间的最大延迟(见图 21)。最小延迟为 CGT(见 11.2)。
注意:当长度存在潜在错误时,CWT 可用于检测块的末端。
T = 1 编码 CWI 的第一个 TB 的第 4 位到第 1 位,从 0 到 15。这 CWI 的默认值为 13。由 CWI 通过以下公式计算 CWT。因此 CWT 的最小值是 12 etu。
根据定义,BWT 是卡片接收到的块的最后一个字符的前缘与卡片传输的下一个块的第一个字符的前缘之间的最大延迟(见 图22)。BWT 用于检测无响应的卡。最小延迟为 BGT (见 11.2)。
T = 1 的第一个 TB 的第 8 位到第 5 位编码 BWI 从 0 到 9。从 “A” 到 “F” 的值保留以备将来使用。默认值是 BWI = 4。根据 BWI 计算 BWT,计算公式如下。
T = 1 的第一个 TC 的第 1 位表示所使用的校验码:
T = 1 的第一个 TC 的第 8 到第 2 位被保留为将来使用,应该被设置为 0。
在传输协议开始时,接口设备有权进行传输。异步字符总是按块分组。
当卡或接口设备传输了一个块时,它切换到接收模式。
当卡或接口设备接收到根据长度字节中编码的字节数的块时,它假定它有权发送。
下面的块用于传输协议的描述。
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 块确认等待时间延长 |
在传输协议开始时,由接口设备传输到卡的第一个块应该是 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 块通过接收其中一个来确认
S 块没有发送序列号。S(…request) 没有确认。S(…response) 确认 S(…request)。
链接功能允许接口设备或卡传输信息(应用程序数据)比 IFSC 或 IFSD 长。如果接口设备或卡要传输的信息分别超过 IFSC 或 IFSD,则应将信息分成若干个片段,每个片段的长度应小于或等于 IFSC 或 IFSD,并使用链接功能以一个块的形式传输。图23 演示了链接功能。
PCB 中的 m 位控制 I 块的链接。M 位的值表示 I 块的状态。
如果接收方正确接收到一个多数据的 I 块,则应发送 R(N(R)),其中 N(R) 被设为预期 I 块的 N(S)。
注意,LEN = ‘00‘ 的 I 块可以在链中使用(参见附件 A 中的场景 7 )。
规则 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)。
块层的任务是传输块,检测传输和序列错误,处理这些错误,并重新同步传输协议。因此,数据链路层的块组件应该能够处理以下错误。
可以在三个连续的级别上尝试传输协议的重新同步。如果一个级别不成功,则尝试下一个级别。
规则 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