转自:http://bbs.ednchina.com/BLOG_ARTICLE_172022.HTM

在异步半双工传输协议中,主要定义了终端为实现传输控制和特殊需要发出的命令及这些命令的处理过程。

在传输协议中定义了两种协议:字符传输协议(T=0)和块传输协议(T=1)。IC卡可以选择支持T=0协议或者T=1协议,终端一般都支持这两种协议。在ATR中的TD1规定了后续传输中所采用的传输协议(T=0或T=1),如果TD1在ATR中不存在的话则假定采用T=0。如果在ATR之后卡片与终端之间没有参数协商的PTS过程的话(详细细节可参考ISO7816相关部分),由IC卡指定的协议将在复位应答之后立即被采用。

传输协议按照如下的模型进行定义。

* 物理层
    定义了位交换,是两种协议的公共部分。

* 数据链路层
    包括如下定义:
    字符帧,定义了字符交换,是两种协议的公共部分;
    T=0时的字符交换
    对T=0的检错纠错
    T=1时的块交换
    对T=1的检错纠错

* 传输层
    定义了针对每个协议的面向应用的报文传输。

* 应用层
    根据相同的应用协议,定义了报文交换的内容。

1、物理层

在T=0和T=1协议中,均使用了物理层和字符帧。

2、数据链路层

2.1 字符帧

详见http://www.iccos.cn/scoscn/html/dev/2007-10-25dev44.html,适用于IC卡和终端之间所有的报文交换。

2.2 字符协议T=0

(1)特定选项--用于T=0的时段分配

在复位应答中,ATR中的TC1值决定了终端发送到IC卡的两个连续字符起始位上升沿之间的最小时间间隔在12~266个etu之间。

IC卡发送到终端的两个连续字符起始位上升沿之间的最小时间间隔为12etu。

在IC卡发送的任意字符的起始位上升沿与IC卡或终端发送的前一个字符的起始位上升沿之间的最大时间间隔(工作等待时间)将不超过960×D×WI=9600个etu(设位速率转换因子D为默认值,WI为默认值10)。

相反方向发送的两个连续字符的起始位上升沿之间的最小时间间隔不小于16etu。

要特别注意的是,由终端向IC卡发送的两个连续字符起始位上升沿之间的最小时间间隔由TC1值控制,可以小于相对发送的两个连续字符之间所允许的最小时间间隔(16个etu)。

(2)命令头

命令由终端应用层(Terminal Application Layer,简称TAL)发出,它包括一个由5Byte组成的命令头。每个命令头由5个连续字节CLA、INS、P1、P2和P3组成。

* CLA(Class Byte of the Command Message)表示命令类别。
   * INS(Instruction Byte of the Command Message)表示指令代码。
   * P1(Parameter 1)和P2(Parameter 2)表示命令的两个附加参数。
   * 根据不同的INS,P3(Parameter 3)指明了发送给IC卡的命令的字节长度或者期待IC卡回送响应的最大数据长度。

对于T=0,这些字节和通过命令发送的数据一起构成命令传输协议数据单元(Command Transport Protocol Data Unit,简称C-TPDU),命令应用协议数据单元(Command Application Protocol Data Unit,简称C-APDU)到C-TPDU的映射将在后续文章中学习。

终端传输层(Terminal Transport Layer,简称TTL)传送发送5Byte的命令头给IC卡并等待一个过程字节。

(3)过程字节

IC卡接收到命令头以后,向TTL回送一个过程字节。过程字节向TTL指明了下一步该做什么,其编码与TTL行为的对应关系如下所示:

终端对过程字节的响应:

    过程字节值                  步骤
     1  与INS字节值相同            所有余下的数据将要由TTL传送或者准备接收所有来自IC卡的数据。
     2  与INS字节值的补码相同      下一个数据字节将由TTL传送或者准备接收来自IC卡的下一下数据字节。
     3  0x60                       TTL提供根据额外的工作等待时间。
     4  0x6X或者0x9X(除0x60以外) TTL将等待下一个过程字节或者状态码SW2。

在情况1、2、3中,操作完成后TTL将等待另一个过程字节。

在情况4中,第二个过程字节或状态码SW2已被收到后,TTL将要做如下事情。

* 如果过程字节为0x61,TTL将向IC卡发送一个最大长度为0xXX的Get Response命令头,XX为SW2值。
   * 如果过程字节为0x6C,TTL将立即向IC卡重发一个命令的命令头,其长度为XX,XX是SW2的值。
   * 如果过程字节为0x6X(除0x60、0x61、0x6C以外)或者0x9X(即状态),TTL将在响应APDU中向TAL回送状态码,并等待下一个C-APDU。

TTL与IC卡之间交换命令和数据时,TTL和IC卡必须清楚地知道数据流向和I/O的驱动者,即是终端向IC卡发送数据还是IC卡向终端发送数据。

(4)C-APDU的传输

采用T=0协议时,只包含送向IC卡的命令数据或只包含IC卡响应数据的C-APDU,可直接映射到C-TPDU。不包含不回送数据的C-APDU,以及要求IC卡接收数据和发送给IC卡数据的C-APDU将通过相关的传输规则进行传输。

2.3 T="0时的错误检测与纠错"

若字符没有正确地接收到或者接收正确但校验不正确,接收方应在字符起始位的上升沿脉冲之后的(10.5±0.2)个etu内,向I/O端口发送持续时间为1~2个etu的低电平信号,表示前面的传输中有错误发生。

相应的,发送方应该在字符起始位上升沿脉冲发出后的(11±0.2)个etu内,检测I/O端口的电平状态,此时若I/O端口为高电平状态,则表明字符已经被正确接收。

若发送方检测到错误,就应在检测出错误以后至少延迟2个etu,并重复发送一次有错误嫌疑的字符,最多只发送3次。

IC卡的传输协议(1)-字符传输协议T=0【转】的更多相关文章

  1. IC卡的传输协议(2)-块传输协议T=1【转】

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_172024.HTM 2.4 块传输协议T=1 T=1协议中,在TAL和IC卡之间传送的命令.R-APDU和传输控制信息 ...

  2. IC卡复位应答ATR的数据元和它们的意义

    ISO/IEC 7816-3标准中对ATR的数据串和数据元做了规定和描述.ATR的数据元和它们的意义: 数据元 说明 TS 起始字符 T0 格式字符 TA1,TB1,TC1,TD1,... 接口字符 ...

  3. 智能IC卡与终端(读卡器)之间的传输协议

    1.有两种协议 T=0,异步半双工字符传输协议 T=1,异步半双工块传输协议 终端一般都支持这两种协议,IC卡可以选择支持其中的一种.(因为终端可能需要面对各种类型的卡片,所以必须两种协议都支持,而卡 ...

  4. IC卡的传输协议(2)-块传输协议T=1续【转】

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_172025.HTM (3)容错操作 先来看一下容错的规则定义. * 复位应答后,第一个数据块是由终端发往IC卡的,而且 ...

  5. IC卡的传输协议(3)【转】

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_172027.HTM 3.终端传输层         本节描述了在终端和 IC 卡之间传输的命令和响应 APDU 的机制 ...

  6. Android网络编程系列 一 TCP/IP协议族之传输层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 传输层中有TCP协议与UDP协议. 1.UDP介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,U ...

  7. IP协议和网络传输中的封装与分用。

    关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层模型来分析. 1.四层模型中的最下层是链 ...

  8. IC卡T0协议中的过程字与状态字

    T0协议中,IC卡收到命里头以后向TTL回传过程字或状态字SW1.SW2: TTL和IC卡在二者之间的命令和数据交换的任何时刻都必须知道数据流的方向和IO线路由谁驱动. 摘录参考:<中国金融集成 ...

  9. vsftpd-基于ftp协议的文件传输服务器软件

    第一部分:在Linux上部署vsftpd服务 1. vsftpd简介 1.1 vsftpd是什么? ftp(File Transfer Protocol)文件传输协议.(实现不同操作系统之间文件的传输 ...

随机推荐

  1. 论文翻译 - Multiagent Bidirectionally-Coordinated Nets Emergence of Human-level Coordination in Learning to Play StarCraft Combat Games

    (缺少一些公式的图或者效果图,评论区有惊喜) (个人学习这篇论文时进行的翻译[谷歌翻译,你懂的],如有侵权等,请告知) Multiagent Bidirectionally-Coordinated N ...

  2. SPFA模板 Bellmanford优化版

    SPFA模板: queue<int>Q; ]; ],sumv[]; *],__next[*],e,w[*],first[],cnts[]; void AddEdge(int U,int V ...

  3. python进阶训练

    1.列表,字典,集合解析 from random import randint #列表解析,选出大于0的元素 data=[randint(-10,10)for i in range(10)] resu ...

  4. rcnn spp_net

    在http://www.cnblogs.com/jianyingzhou/p/4086578.html中 提到 rcnn开创性工作,但是计算时间太长,重复计算太大. spp_net将重复计算避免了 我 ...

  5. edgeboxes proposal 和dpm 连接

    经过多天阅读文献和代码,我对edgeboxes 和 dpm的有了一定了解. 现在决定把它们简单地连接起来 也就是edgeboxes proposal 推荐窗口 然后 dpm去判断 但按照我理解的DPM ...

  6. [Mac]Mac OS X中WireShark的使用,及找不到网卡问题的解决方法

    1.WireShark依赖X11: 2.默认情况下Mac OS X是不安装X11的: 因此,在Mac上安装WireShark,首先找出Mac OS 安装DVD安装X11. 安装完以后 echo $DI ...

  7. .Net 面试总结

    今天去面试了一家公司,做电子商务类的网站的,公司的老板应该比较有能量,可以同时拿下若干项目,技术负责人给提了几个问题: 记不清顺序了 .net 构析函数的作用 泛型的主要作用及应用方面 结构与类的区别 ...

  8. 利用vue-cli搭建项目后的目录结构

    npm install -g vue-cli vue init webpack my-project(项目名称)  后的目录结构: -----build         webpack配置相关 --- ...

  9. 深入理解Java Web——Servlet

    1.概述 狭义上看,是java的一个接口. 广义上看,任何直接或间接实现了Servlet接口的类. 2.核心对象 下面就是Servlet接口的内容: public abstract interface ...

  10. delphi RGB与TColor的转换

    1.RGB转换为Tcolor function RGBToColor(R,G,B: byte): Tcolor;begin  Result := B Shl 16 or G  shl 8 or R;e ...