:-: 
圖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]:
:-: 
圖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]。
:-: 
圖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 參考資料說明
- 附錄