ISO7816--T1协议简介

2024-04-29 06:08
文章标签 协议 简介 t1 iso7816

本文主要是介绍ISO7816--T1协议简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前说过的T=0协议基本上相当于是透明的数据,也就是说从应用的角度看,通过T=0传递的TPDU数据信息大都可以直接转换为对应的APD命令响应数据,“字节”是T=0协议最小的数据传输单元。

        对于T=1协议而言,最小的数据传输单元是“数据块”,这个数据块由若干个字节组成,其中有些字节是必须的,有些字节是可选的。每个数据块最多可以包含多少个字节(也就是数据块的大小)可以通过三种途径确定:1)ATR中对应协议T=1的专有接口字节指出;2)使用默认的值;3)在数据传输过程中协商。

一个数据块其实就是一个“数据包”,其中包头的3个字节(NAD1字节+ PCB 1字节+ LEN 1字节)和包尾1个或者2个字节(如果采用LRC校验就是1字节,采用CRC校验就是2字节)是必须的,中间的信息数据域INF则是可选的。其中NAD代表节点地址,基本不用,可以设置为“00”;PCB代表协议控制字节,用来指明数据块的类型(分为:传递信息域数据的I-块,应答响应的R-块,负责通讯参数协商的S-块)、序列号、是否存在后续的链接块、是否有校验错误、额外超时等待请求、信息数据域大小的协商等。

和T=0协议最明显的不同是T=1协议按照OSI的参考模型进行了分层,分别是:物理层、数据链路层和应用层。物理层主要是数据字符的传输,数据链路层主要是数据块的传输,而应用层主要是APDU的交互传输。APDU的交互与数据字符的传输,这些和T=0协议里面描述的大体相同,关键的就是数据链路层定义的数据块传输。因为这个数据链路层的定义,使得T=1协议基本具备了可以实现复杂网络数据传输的全部特征,相比而言T=0协议简直就等同于“裸传”了。

数据链路层主要进行的是3类数据块的交互传输,基本的原则是:第一个数据块一定是从终端发给卡片的I-块或者S-块;I-块可以用R-块或者I-块来应答,而S-块的请求只能用S-块的响应来应答;I块和R-块会包含有“0”和“1”的序列号,序列号的初始值为“0”,重新同步之后也是再次从“0”开始,之后在“0”和“1”之间交替切换;如果一条应用数据大于数据块信息域的最大长度,则需要分割为若干个链接的数据块来传输;和T=0协议卡片发送“0x60”类似,如果卡片需要较长时间进行命令处理,可以用延长等待时间的WTX请求S-块让终端继续等待;一旦传输过程中出现错误,可以通过数据块重发、重新同步、卡片复位等动作来进行纠错。

对于各种正常和异常数据传输的处理,7816定义了若干的规则(rules)明确而详细地说明了终端和卡片在数据块传输过程中应该遵循的流程。

在实际应用中,接触式卡片遵循7816 T=1协议的不是很多,但是非接触的14443 T=CL协议,在数据传输方面和7816的T=1协议如出一辙,而且在检测过程中,最容易出现软件问题的地方也正是非接触协议这部分。

这篇关于ISO7816--T1协议简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945284

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC