:-: ![](http://img.blog.csdn.net/20140322214507296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSW5ub3N0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图8-1 NFC技术演化历程
通过图8-1所示的NFC技术演化历程可知,NFC融合了三条主要的技术发展路线[2]:
最左边一条为RFID技术路线,即无线射频识别技术。该技术路线发源于条形码(Barcodes),然后发展出了RFID,最终出现了NFC中的两个重要组件NFC Tag(标签)和NFC Reader。NFC Tag的作用和Barcodes类似,它是一种用于存储数据的被动式(Passive)RFID Tag,其最重要的特征就是NFC Tag自身不包含电源组件,所以它工作时必须依靠其他设备(比如NFC Reader)通过电磁感应的方式向其输送电能。和NFC Tag相对应的组件是NFC Reader,它首先通过电磁感应向NFC Tag输送电能使其工作,然后再根据相关的无线射频通信协议来存取NFC Tag上的数据。
最右边一条为磁条卡(Magnetic Strip Cards)技术路线,该路线最终演化出了NFC使用的Proximity Coupling Smart Card(有效距离在10cm之内,对应的规范为ISO/IEC 14443。注意,图8-1中的Close Coupling Smart Card的有效距离为1cm之内,对应的规范为ISO/IEC 10536。Vicinity Coupling Smart Card的有效距离为1m之内,对应的规范为ISO/IEC 15693)技术。粗看上去Smart Card和RFID Tag类似,例如二者都只存储一些数据,而且自身都没有电源组件,但Smart Card在安全性上的要求远比RFID Tag严格。另外,Smart Card上还能运行一些小的嵌入式系统(如Java Card OS)或者应用程序(Applets)以完成更为复杂的工作。
中间一条技术路线为移动终端,它演化出了携带NFC功能的终端设备。随着移动终端越来越智能,NFC和这些设备也融合得更加紧密,使得NFC的应用场景得到了较大的拓展。本书第六章在介绍Wi-Fi Simple Configuration时(第6章6.1“概述”一节)曾介绍过一个例子,即智能手机可通过NFC来和AP交换安全配置信息。一个与之类似的例子是NFC Connection Handover技术,它描述了两台智能终端如何通过NFC相关协议来选择合适的数据传输方式(例如是Bluetooth还是Wi-Fi。受限于传输速率以及有效距离,NFC本身不适合大数据量传输)。
了解NFC技术的演化历程之后,我们来看看NFC现在的样子。图8-2所示为NFC技术框架[3]:
:-: ![](http://img.blog.csdn.net/20140322214524625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSW5ub3N0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图8-2 NFC技术框架
由图8-2可知:
从用户角度(即图中的Applications层之上)来看,NFC有三种运行模式(operation mode),分别是
1. Reader/Write模式(简称R/W,和NFC Tag/NFC Reader相关)
2. Peer-to-Peer模式(简称P2P,它支持两个NFC设备交互)
3. NFC Card Emulation Mode(简称CE,它能把携带NFC功能的设备模拟成Smart Card,这样就能实现诸如手机支付、门禁卡之类的功能)。
Application之下的三个箭头描述了三种运行模式所使用的协议栈。这部分内容将留待下文再分析。
NFC使用的是无线射频技术。在RF层,与之相关的规范是ISO 18092(NFC Interface and Protocol I,简称NFCIP-1,该规范定义了NFC RF层的工作流程)和ISO 14443 Type A,Type B和Felica。
ISO 14443全称为非接触式IC卡标准,它从RF层面定义了如何与不同的非接触式IC卡(其实物可以是NFC Tag、RFID Tag、Smart Cards)交互。ISO 14443定义了Type A和Type B两种非接触式IC卡。
* Type A最早由Philips公司制订(其生产的芯片商标名为MIFARE,现在由从Philips独立出来的NXP公司拥有,目前世界上70%左右的非接触式IC卡都使用了MIFARE芯片,例如北京市的公交卡),
* Type B(主要用在法国市场)由其他公司制订,二者最终都成为ISO标准。
* Felica(也被称为Type F)由Sony开发,它最终没有成为ISO标准,而是成为日本工业标准JIS X6319-4,所以Felica主要用于日本市场。
Type A、B和F主要区别在于RF层的信号调制解调方法、传输速率及数据编码方式上。关于ISO 14443和Felica之间的区别,请读者阅读参考资料[4]。
RF层之上是Mode Switch,它用于确定对端NFC Device的类型并选择合适的RF层协议与之通信。
>[info]提示: 由于NFC是从多种技术综合发展而来,所以读者在学习NFC时将会碰到很多规范,如上文所提到的ISO 18092以及ISO 14443、Felica等。除了ISO等标准组织制订的规范外,NFC Forum也制订了一系列的标准和规范。由于篇幅问题,本章仅打算介绍NFC Forum定义的一些规范。对ISO相关规范感兴趣的读者可在本章基础之上再自行阅读它们。
图8-3所示为与NFC技术框架相对应的NFC Forum所定义的规范框架[3]。
:-: ![](http://img.blog.csdn.net/20140322214541984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSW5ub3N0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图8-3 NFC Forum规范框架
由图8-3所示的NFC Forum规范框架可知:
NFC Forum本身只定义了P2P模式和R/W模式相关的规范。规范的细节将留待下文再详细介绍。CE模式比较复杂,下文也会讨论和它相关的一些知识。
在RF层,NFC Forum定义了三个主要规范
* Analog Specifications(该规范描述了NFC设备RF层的电气特性)
* Digital Protocal Specification(该规范在ISO 18092、ISO 14443及JIS X6319-4之上定义了NFC设备之间的数字通信协议,它使得基于不同底层协议例如Type A或Type F的NFC设备之间或者NFC设备与其他使用ISO 18092等规范的设备之间能够交互)
* NFC Activities Specification(该规范为各运行模式对应的协议栈提供支持,例如P2P模式下两个NFC设备如何建立链接,R/W模式下NFC Device如何操作NFC Tag)。
图8-3最上层所示的Reference Applications表示NFC Forum在应用层面所定义的一些规范。目前有两个规范
* Connection Handover(两个NFC设备通过它来协商用蓝牙或Wi-Fi来开展后续的数据传输工作)
* Personal Health Device Commnuication(该规范定义了如何利用NFC技术在个人健康设备之间交换数据信息)。
另外,除了图8-3所示的规范外,NFC还制订了一个名为NFC Controller Interface(简写为NCI)的规范,该规范制订了一套交互接口,使得主机设备(Device Host,以手机为例,NFC芯片被集成到某个手机中,那么手机就是Device Host)能够使用这套接口来和NFC芯片交互。
下面,我们将先讨论NFC三种运行模式,而NCI相关知识将留待本节最后再来介绍。
>[info] 提示:关于NFC Forum制订的各种规范及简要说明,请读者参考资料[5]。
- 前言
- 第1章 准备工作
- 1.1 Android系统架构
- 1.2 工具使用
- 1.2.1 Source Insight的使用
- 1.2.2 Eclipse的使用
- 1.2.3 BusyBox的使用
- 1.3 本书资源下载说明
- 第2章 深入理解Netd
- 2.1 概述
- 2.2 Netd工作流程
- 2.2.1 main函数分析
- 2.2.2 NetlinkManager分析
- 2.2.3 CommandListener分析
- 2.2.4 DnsProxyListener分析
- 2.2.5 MDnsSdListener分析
- 2.3 CommandListener中的命令
- 2.3.1 iptables、tc和ip命令
- 2.3.2 CommandListener构造函数和测试工具ndc
- 2.3.3 InterfaceCmd命令
- 2.3.4 IpFwd和FirewallCmd命令
- 2.3.5 ListTtysCmd和PppdCmd命令
- 2.3.6 BandwidthControlCmd和IdletimerControlCmd命令
- 2.3.7 NatCmd命令
- 2.3.8 TetherCmd和SoftapCmd命令
- 2.3.9 ResolverCmd命令
- 2.4 NetworkManagementService介绍
- 2.4.1 create函数详解
- 2.4.2 systemReady函数详解
- 2.5 本章总结和参考资料说明
- 2.5.1 本章总结
- 2.5.2 参考资料说明
- 第3章 Wi-Fi基础知识
- 3.1 概述
- 3.2 无线电频谱和802.11协议的发展历程
- 3.2.1 无线电频谱知识
- 3.2.2 IEEE 802.11发展历程
- 3.3 802.11无线网络技术
- 3.3.1 OSI基本参考模型及相关基本概念
- 3.3.2 802.11知识点导读
- 3.3.3 802.11组件
- 3.3.4 802.11 Service介绍
- 3.3.5 802.11 MAC服务和帧
- 3.3.6 802.11 MAC管理实体
- 3.3.7 无线网络安全技术知识点
- 3.4 Linux Wi-Fi编程API介绍
- 3.4.1 Linux Wireless Extensions介绍
- 3.4.2 nl80211介绍
- 3.5 本章总结和参考资料说明
- 3.5.1 本章总结
- 3.5.2 参考资料说明
- 第4章 深入理解wpa_supplicant
- 4.1 概述
- 4.2 初识wpa_supplicant
- 4.2.1 wpa_supplicant架构
- 4.2.2 wpa_supplicant编译配置
- 4.2.3 wpa_supplicant命令和控制API
- 4.2.4 git的使用
- 4.3 wpa_supplicant初始化流程
- 4.3.1 main函数分析
- 4.3.2 wpa_supplicant_init函数分析
- 4.3.3 wpa_supplicant_add_iface函数分析
- 4.3.4 wpa_supplicant_init_iface函数分析
- 4.4 EAP和EAPOL模块
- 4.4.1 EAP模块分析
- 4.4.2 EAPOL模块分析
- 4.5 wpa_supplicant连接无线网络分析
- 4.5.1 ADD_NETWORK命令处理
- 4.5.2 SET_NETWORK命令处理
- 4.5.3 ENABLE_NETWORK命令处理
- 4.6 本章总结和参考资料说明
- 4.6.1 本章总结
- 4.6.2 参考资料说明
- 第5章 深入理解WifiService
- 5.1 概述
- 5.2 WifiService的创建及初始化
- 5.2.1 HSM和AsyncChannel介绍
- 5.2.2 WifiService构造函数分析
- 5.2.3 WifiStateMachine介绍
- 5.3 加入无线网络分析
- 5.3.1 Settings操作Wi-Fi分析
- 5.3.2 WifiService操作Wi-Fi分析
- 5.4 WifiWatchdogStateMachine介绍
- 5.5 Captive Portal Check介绍
- 5.6 本章总结和参考资料说明
- 5.6.1 本章总结
- 5.6.2 参考资料说明
- 第6章 深入理解Wi-Fi Simple Configuration
- 6.1 概述
- 6.2 WSC基础知识
- 6.2.1 WSC应用场景
- 6.2.2 WSC核心组件及接口
- 6.3 Registration Protocol详解
- 6.3.1 WSC IE和Attribute介绍
- 6.3.2 802.11管理帧WSC IE设置
- 6.3.3 EAP-WSC介绍
- 6.4 WSC代码分析
- 6.4.1 Settings中的WSC处理
- 6.4.2 WifiStateMachine的处理
- 6.4.3 wpa_supplicant中的WSC处理
- 6.4.4 EAP-WSC处理流程分析
- 6.5 本章总结和参考资料说明
- 6.5.1 本章总结
- 6.5.2 参考资料说明
- 第7章 深入理解Wi-Fi P2P
- 7.1 概述
- 7.2 P2P基础知识
- 7.2.1 P2P架构
- 7.2.2 P2P Discovery技术
- 7.2.3 P2P工作流程
- 7.3 WifiP2pSettings和WifiP2pService介绍
- 7.3.1 WifiP2pSettings工作流程
- 7.3.2 WifiP2pService工作流程
- 7.4 wpa_supplicant中的P2P
- 7.4.1 P2P模块初始化
- 7.4.2 P2P Device Discovery流程分析
- 7.4.3 Provision Discovery流程分析
- 7.4.4 GO Negotiation流程分析
- 7.5 本章总结和参考资料说明
- 7.5.1 本章总结
- 7.5.2 参考资料说明
- 第8章 深入理解NFC
- 8.1 概述
- 8.2 NFC基础知识
- 8.2.1 NFC概述
- 8.2.2 NFC R/W运行模式
- 8.2.3 NFC P2P运行模式
- 8.2.4 NFC CE运行模式
- 8.2.5 NCI原理
- 8.2.6 NFC相关规范
- 8.3 Android中的NFC
- 8.3.1 NFC应用示例
- 8.3.2 NFC系统模块
- 8.4 NFC HAL层讨论
- 8.5 本章总结和参考资料说明
- 8.5.1 本章总结
- 8.5.2 参考资料说明
- 第9章 深入理解GPS
- 9.1 概述
- 9.2 GPS基础知识
- 9.2.1 卫星导航基本原理
- 9.2.2 GPS系统组成及原理
- 9.2.3 OMA-SUPL协议
- 9.3 Android中的位置管理
- 9.3.1 LocationManager架构
- 9.3.2 LocationManager应用示例
- 9.3.3 LocationManager系统模块
- 9.4 本章总结和参考资料说明
- 9.4.1 本章总结
- 9.4.2 参考资料说明
- 附录