1.有两种协议

T=0,异步半双工字符传输协议

T=1,异步半双工块传输协议

终端一般都支持这两种协议,IC卡可以选择支持其中的一种。(因为终端可能需要面对各种类型的卡片,所以必须两种协议都支持,而卡片则不然了

2.如何判断卡片支持哪种传输协议?

在ATR值得TD1字段中规定了后续传输中所采用的传输协议,T=0或T=1,如果ATR中不存在ATR的话,则假定采用T=0

如果在ATR之后卡片与终端之间没有参数协商的PTS过程的话(详细细节可参考ISO7816相关部分),由IC卡指定的协议将在复位应答之后立即被采用。

3.两种协议在物理层并没有任何的区别,区别在于数据链路层

4.APDU指令

命令由终端应用层(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卡并等待一个过程字节。

过程字节(有点类似于响应码

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卡向终端发送数据。(数据流的方向

智能IC卡与终端(读卡器)之间的传输协议的更多相关文章

  1. 移动支付之智能IC卡与Android手机进行NFC通信

    本文来自http://blog.csdn.net/hellogv/ .引用必须注明出处.        眼下常见的智能IC卡执行着JavaCard虚拟机.智能IC卡上能够执行由精简后的Java语言编写 ...

  2. "软掩膜"和“硬掩膜”-智能IC卡

    目录 一.“软掩膜”和“硬掩膜”... 2 二.EMV迁移进程... 3 三.PBOC规范和EMV规范对比... 3 四.总结... 5 五.关于SDA和DDA. 6 一.“软掩膜”和“硬掩膜” “软 ...

  3. 智能IC卡中的文件系统

    1.文件系统是COS的重要模块之一,它负责组织.管理.维护IC卡内存储的所有数据. 文件系统的设计和实现既是COS系统中最灵活.最有个性的部分,也是对系统整体结构影响最大的模块之一. 2.在IC卡内, ...

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

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

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

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

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

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

  7. IC卡的传输协议(1)-字符传输协议T=0【转】

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_172022.HTM 在异步半双工传输协议中,主要定义了终端为实现传输控制和特殊需要发出的命令及这些命令的处理过程. 在 ...

  8. IC卡触点释放时序

    IC卡触点释放时序过程如下: 要点: 终端必须通过把RST置为低电平状态来启动释放时序: 在置RST为低电平之后VCC断电之前,终端必须将CLK和IO设定为低电平状态: 在置RST.CLK和IO为低电 ...

  9. IC卡热复位时序

    热复位(warm reset):在时钟CLK和电源电压VCC处于激活状态的前提下,IC卡收到复位信号时产生的复位. 冷复位过程之后,如果收到的复位应答信号不满足规定,终端将启动热复位并从IC卡获得复位 ...

随机推荐

  1. 监听文本框输入oninput和onpropertychange事件

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onkeydow ...

  2. asp+jquery+ajax,asp后台程序执行不正常

    项目中前台页面通过jquery .ajax功能将关键数据传递到后台并写入数据库,调试中发现后台程序一直没有正常执行,后反复排查 发现asp程序中不能包含#include file语句

  3. The type javax.xml.rpc.ServiceException cannot be resolved.It is indirectly

    The type javax.xml.rpc.ServiceException cannot be resolved.It is indirectly 博客分类: 解决方案_Java   问题描述:T ...

  4. 第16篇 Shell脚本基础(一)

    1.什么是shell?shell是一个命令解释器. 是介于操作系统内核与用户之间的一个绝缘层.对于一个linux系统使用人员来说,shell是你驾驭类linux系统最基本的工具.所有的系统命令和工具再 ...

  5. tomcat 并发配置优化

    修改tomcat/conf/server.xml配置文件. <Executor name="tomcatThreadPool" namePrefix="catali ...

  6. Vue.js:目标结构

    ylbtech-Vue.js:目标结构 1.返回顶部 1. Vue.js 目录结构 上一章节中我们使用了 npm 安装项目,我们在 IDE(Eclipse.Atom等) 中打开该目录,结构如下所示: ...

  7. redis实现消息发布/订阅

    redis实现简单的消息发布/订阅模式. 消息订阅者: package org.common.component; import org.slf4j.Logger; import org.slf4j. ...

  8. Idea 如何设置微软雅黑等其它字体

    使用过idea的同学都知道,idea的功能相对于explise来说,功能太强大了啊~个人感觉,idea真心挺智能的.但是,这里有一个小瑕疵,就是能够设置的字体,有限! 对于用惯了 微软雅黑 字体的人, ...

  9. [Android]异步任务AsyncTask使用解析

    AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法.注意继承时需要设定三个泛型P ...

  10. ansibel---tag模块

    如果你有一个大的剧本,你可以在不运行整个剧本的情况下运行一个特定的部分.  由于这个原因,两个游戏和任务都支持一个“标记:”属性.您只能根据命令行中的标记(标记或- skip- tags)对任务进行筛 ...