IC卡的传输协议(2)-块传输协议T=1【转】
转自:http://bbs.ednchina.com/BLOG_ARTICLE_172024.HTM
2.4 块传输协议T=1
T=1协议中,在TAL和IC卡之间传送的命令、R-APDU和传输控制信息(例如确认信息)由块组成。
以下定义了数据链路层的块帧结构、协议的特殊选项和协议操作(包括错误处理)。
(1)块帧结构
字符帧的定义同前文的描述。T=1协议下,无须进行逐个字符的检验。块的结构如下所示,包括头域、数据域和尾域3个部分,都为可选项。
● 头域包括3个必选字节:
*用于标识数据块的源地址和目的地址以及提供VPP状态控制的1Byte节点地址(NAD)
*控制数据传输的1Byte协议控制字节(PCB)
*1Byte可选的数据域长度(LEN)
> 节点地址(NAD)
节点地址(Node Address,简称NAD)第1至第3位表明块的源节点地址(Source Address,简称SAD),而第5至第7位表明块的目的地址(Destination Address,简称DAD),第4位和第8位不用,设定为0。
终端使用的节点地址是可选的,但支持T=1协议的IC卡应支持按本节规定的节点地址方式。遵守如下规则。
* 若不使用节点地址,终端发往IC卡的第一个数据块的SAD和DAD值均应设为0。
* 若使用节点地址,由终端发送到IC卡的第一个数据块的SAD和DAD应设为不同的值(其中之一可以为0)。
* 若使用节点地址,在卡片操作过程中,IC卡收到的第一个有效I块和S块中的NAD,用于建立起整个卡片操作过程中的终端和IC卡的节点地址,在同一个过程中终端发送给IC卡的后续块使用同一个NAD,如此建立的节点地址适用于所有类型的块。
* 在卡片操作期间,从IC卡发往终端的任何数据块都将使用在此过程中由终端向IC卡发出的第一个块时所建立起的节点地址(终端发往IC卡和由IC卡发往终端所使用的源地址和目标地址正好相反)。
* 在卡片操作过程中,若IC卡接收到的数据块的NAD与交易开始时所建立的NAD不同,则IC卡应向交易开始所建立的DAD回复一个R块。
> 协议控制字节
协议控制字节(Protocol Control Byte,简称PCB)表明了传输块类型,有以下3种类型。
* 传送APDU的信息块(I块)。
* 用于传送确认ACK(Acknowledgment)或者NAK(Negative Acknowledge)的接收就绪块(R块)。
* 用于交换控制信息的管理模块(S块)。
不同类型PCB具有不同的编码格式。
I块的PCB编码
字节位 含义
b8 0
b7 序列号
b6 链接(多个数据)
b5~b1 保留
R块的PCB编码
字节位 含义
b8 1
b7 0
b6 0
b5 序列号
b4~b1 0=容错 1=EDC或者校验出错 2=其他错误 其他:保留
S块的PCB编码
字节位 含义
b8 1
b7 1
b6 0=请求 1=应答
b5~b1 0=在同步请求 1=信息域大小请求 2=放弃请求 3=BWT扩展请求 4=VPP错误 其他:保留
> 长度
长度(Length,简称LEN)指明块的INF部分的长度,取值范围从1~254。
● 数据域包括:0~254Byte的APDU或控制信息(INF)
信息域INF是有条件的,当出现在I块中时,它传送的是应用数据,当出现在S块中时,它传送的是控制信息。R块不会出现在IINF中。
● 尾域包括:1Byte的错误校验码(EDC)
尾域包含所传送块的错误检测代码(Error Detection Code,简称EDC),校验出错和(或)EDC出错时,块是无效的。通常采用冗余校验(Longitudinal Redundancy Check,简称LRC)作为EDC。LRC的长度是1Byte,其值由以NAD开始到INF(如果存在的话)的全部字节做异或运算得到。
● 块编号
I块采用在某一位上模2数字编码的方式进行编码,IC卡和终端作为发送方分别处理各自的编号系统。复位应答后,发送方发送的第一个I块的编号为零,以后每发送一个I块,编号值增加1。当再次同步时,发送方将编号值复位为零。
R块采用在某一位上模2数字编码的方式进行编号,当其在链接过程中,用来确认I块时,R块携带下一个期望的I块编号。当要求某块重发时,R块内携带的是已收到的I块编号。
S块不携带编号。
(2)特殊选项
本节定义了用于T=1传输协议的信息域大小和时段。
* 信息域大小
IFSC是指IC卡能收到的信息域的最大长度,其定义为:在复位应答期间,IC卡在TA3中回送的IFSI指明了IC卡能够容纳的IFSI的大小,IFSI的取值范围是0x10~0xFE,对应的IFSC大小为16~254Byte。因此IC卡能收到的最大数据长度是(IFSI+3+1)Byte,其中包括头域和尾域。复位应答期间建立起来的这个值在整个卡片操作过程中使用,或持续到由于IC卡向终端发送S块(IFS请求)而取得新的IFSC值为止。
终端报文域大小(Information Field Size for the Terminal,简称IFSD)是指终端能够接收到数据块的最大长度,紧接在复位应答后的初始大小为32Byte。该长度适用于整个卡片操作过程或者持续到由于终端向IC卡发送S块(IFS请求)而取得新的IFSC值为止。
为避免IC卡和终端之间的通信缓慢,通常终端支持254Byte的IFSD。
*T=1协议的时段
终端发往IC卡的两个连续字符的起始位上升沿之间最短时间间隔为11~266个etu,由复位应答后回送的TC1值决定。
由IC卡发往终端的两个字符的起始位上升沿之间最短时间间隔应是11个etu。同一块中两个连续字符起始位上升沿之间的最大时间间隔CWT不应超过(2的CWT次方+11)个etu,其中字节等待时间整数CWI取值在0~5之间,CWT的取值在12~43个etu。
终端发送给IC卡的最后一个字符的起始位上升沿与由IC卡发出的第一个字符起始位上升沿之间的最大时间间隔BWT不应超过[(2的CWT次方×960)+11]个etu。块等待时间整数BWI的取值范围是0~4,所以BWT的取值范围为971~15371个etu。
相反方向传输的两个连续字符的起始位上升沿之间最小时间间隔(块保护时间Block Guard Time,简称BGT)为22个etu。
IC卡的传输协议(2)-块传输协议T=1【转】的更多相关文章
- ISO7816协议的块传输协议
1.块传输协议中的前三个字节是强制必须有的 NAD节点地址: 当终端支持多个卡槽,终端和这些卡槽以总线的方式通讯时,该字节有用,其他情况下,默认为0 bit1-3:定义了源地址 bit5-7:定义了目 ...
- IC卡的传输协议(2)-块传输协议T=1续【转】
转自:http://bbs.ednchina.com/BLOG_ARTICLE_172025.HTM (3)容错操作 先来看一下容错的规则定义. * 复位应答后,第一个数据块是由终端发往IC卡的,而且 ...
- 智能IC卡与终端(读卡器)之间的传输协议
1.有两种协议 T=0,异步半双工字符传输协议 T=1,异步半双工块传输协议 终端一般都支持这两种协议,IC卡可以选择支持其中的一种.(因为终端可能需要面对各种类型的卡片,所以必须两种协议都支持,而卡 ...
- IC卡的传输协议(3)【转】
转自:http://bbs.ednchina.com/BLOG_ARTICLE_172027.HTM 3.终端传输层 本节描述了在终端和 IC 卡之间传输的命令和响应 APDU 的机制 ...
- IC卡的传输协议(1)-字符传输协议T=0【转】
转自:http://bbs.ednchina.com/BLOG_ARTICLE_172022.HTM 在异步半双工传输协议中,主要定义了终端为实现传输控制和特殊需要发出的命令及这些命令的处理过程. 在 ...
- ISO14443-4块传输协议的实现
ISO1444-3块传输协议主要用于应用数据的传输,其实现如下: unsigned char Apdu(unsigned char *comm,unsigned short len,unsigned ...
- Android网络编程系列 一 TCP/IP协议族之传输层
这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 传输层中有TCP协议与UDP协议. 1.UDP介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,U ...
- HTTP协议之分块传输与分段编码
目录 数据的分块传输 数据的分段编码(transfer-encoding) 前置知识:HTTP协议 数据的分块传输 我们都知道http协议是由TCP协议封装而来的应用层协议.我们和服务器之间的每次ht ...
- IP协议和网络传输中的封装与分用。
关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层模型来分析. 1.四层模型中的最下层是链 ...
随机推荐
- 论文翻译--StarCraft Micromanagement with Reinforcement Learning and Curriculum Transfer Learning
(缺少一些公式的图或者效果图,评论区有惊喜) (个人学习这篇论文时进行的翻译[谷歌翻译,你懂的],如有侵权等,请告知) StarCraft Micromanagement with Reinforce ...
- Python 学习笔记之 Numpy 库——文件操作
1. 读写 txt 文件 a = list(range(0, 100)) a = np.array(a) # a.dtype = np.int64 np.savetxt("filename. ...
- lubuntu 使用USB摄像头
http://liangbing8612.blog.51cto.com/2633208/598762 Most of the camera driver has integrated in the k ...
- 在网站中配置MIME类型
经常会遇到这样的情况,某种类型的文件不能够正常下载,*.7z,自定义的文件类型等,需要在配置文件里配置后才能正常下载. 打开Web.Config文件: <system.webServer> ...
- PAT 甲级 1007 Maximum Subsequence Sum
https://pintia.cn/problem-sets/994805342720868352/problems/994805514284679168 Given a sequence of K ...
- P4109 [HEOI2015]定价
题目描述 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商 ...
- [洛谷P3153] [CQOI2009]跳舞
题目大意:有n个女生,n个男生,每次一男一女跳舞.同一队只会跳一次.每个男孩最多只愿意和k个不喜欢的女孩跳舞,女孩同理.问舞会最多能有几首舞曲? 题解:二分跳了多少次舞,每次重建图,建超级原点和汇点, ...
- Winpcap网络开发库入门
原文链接地址:http://www.cnblogs.com/phinecos/archive/2008/10/20/1315176.html Winpcap是一个强大的网络开发库,可以实现许多功能:获 ...
- chrome 不支持12px以下字体为题的解决
现英文9px 设置 在chrome 下无效,可以通过 -webkit-transform: scale(0.75); 12*0.75 =9 得到小字体(在chrome浏览器下 大小缩放到0.75倍) ...
- webpack 3.8 使用 extract-text-webpack-plugin 3.0 抽取css失败:You may need an appropriate loader to handle this file type.
webpack 3.8.1 使用 extract-text-webpack-plugin 3.0.2 抽取css时失败,报错: ERROR in ./src/static/style/localTim ...