?

近場通信設備間的P2P通信設計與實現

2015-02-20 08:15何晨暉鄭紫微
計算機工程 2015年3期
關鍵詞:讀卡器命令消息

何晨暉,鄭紫微

(寧波大學通信技術研究所,浙江寧波315211)

近場通信設備間的P2P通信設計與實現

何晨暉,鄭紫微

(寧波大學通信技術研究所,浙江寧波315211)

為實現不同近場通信(NFC)設備間的互通,以NFC設備的點對點通信(P2P)為研究對象,設計并實現基于Android平臺的NFC移動終端與讀卡器之間的點對點(P2P)通信方案。NFC移動終端與讀卡器以NFC數據交換格式(NDEF)的數據為通信單元,在簡單NDEF交換協議的基礎上,一方作為客戶端發送傳輸消息請求,另一方作為服務器對客戶端的請求做出響應。通過應用協議數據單元中的命令-響應消息對使NFC移動終端與讀卡器進行交互。測試結果表明,NFC移動終端與NFC讀卡器均可以主動給對方發送消息,較好地實現了兩者之間的P2P通信。

安卓平臺;近場通信;點對點通信;移動終端;讀卡器;應用協議數據單元

1 概述

近場通信(Near Filed Communication,NFC)是近年來新興的一種半雙工通信技術[1]。相對于藍牙、紅外線、Zigbee等傳統通信技術,NFC技術具有低功耗、低成本、便捷迅速、安全性高的優勢[2-3],因此NFC技術應用于移動支付、門禁、電子票務、身份認證等領域具有廣闊的應用前景。在智能手機廣泛普及的今天,智能手機與NFC技術的結合將開創全新的生活方式,給人們生活帶來極大便利。

NFC設備有3種工作模式[1]:(1)讀寫模式, NFC設備充當讀卡器對NFC標簽進行讀/寫操作[4];(2)卡模式,NFC設備模擬成NFC標簽被讀卡器讀/寫數據[5];(3)點對點(Peer to Peer,P2P)模

式,2個NFC設備都處于主動模式進行通信[6]。本文主要針對NFC設備的P2P模式展開討論,研究并實現NFC移動終端與NFC讀卡器之間的P2P通信。

2 NFC P2P通信中的傳輸技術

NFC論壇制定了一系列的標準來規范NFC技術。NFC數據交換格式(NFC Data Exchange Format, NDEF)[7]規定了NFC通信時的數據封裝格式。簡單NDEF交換協議(Simple NDEF Exchange Protocol, SNEP)[8]規定了NFC P2P模式下2個NFC設備通信的規范。與讀卡器通信還有專屬的應用協議數據單元(Application Protocol Data Unit,APDU)命令,通過不同的數據交換命令可以使讀卡器做出不同操作。

2.1 NFC數據交換格式

NDEF規定了2個NFC設備或者NFC設備與NFC標簽之間數據交換時的數據封裝格式。NDEF機制中數據封裝格式以NDEF消息形式存在,NDEF消息由若干個NDEF記錄組成。一條NDEF消息對包含的NDEF記錄數量是沒有限制的,第一個NDEF記錄由MB(Message Begin)標志位標記,最后一個NDEF記錄由ME(Message End)標志位標記。一個NDEF記錄中有3種參數:有效負載長度,有效負載類型,有效負載標識符。這3種參數用來描述該條NDEF記錄中的有效負載,有效負載中的內容是用戶實際讀/寫的數據。通常一條NDEF消息由多個NDEF記錄組成,因此,完整的數據是分散放在每個NDEF記錄中的有效負載內。

2.2 NFC數據交換協議

SNEP是一個應用層協議,適用于2個NFC設備處于P2P模式時,用NDEF格式數據交換信息的情況。圖1為SNEP通信模型。SNEP客戶端發送一個請求到SNEP服務器,請求消息包括協議版本、請求操作、消息主體長度、消息主體。SNEP服務器接收到請求后對SNEP客戶端做出響應,響應的消息包括協議版本、成功/失敗狀態碼、消息主體長度、消息主體。SNEP通信時的單條數據除了消息主體外的部分統稱為消息頭,消息主體中存放的是NDEF格式封裝的消息。SNEP消息主體對NDEF消息數量是有限制的,最大數量不超過232-1。如果消息長度超過單個SNEP消息的容量,SNEP消息就會被分段傳輸。圖2為SNEP請求與響應分段交換的模型。為讓接收方知道分段消息的字節數,第1個片段必須要包含完整的SNEP消息頭。SNEP客戶端發出第1個請求片段后,SNEP服務器響應“繼續”,SNEP客戶端才能將剩余的片段請求發送給服務器。如果SNEP服務器不希望處理剩下的SNEP請求,SNEP服務器將響應“拒絕”,此時,客戶端與服務器之間的連接會強制斷開。SNEP服務器的分段響應過程也是相同原理。在實際通信中, SNEP請求和SNEP響應中只有其中一個分段傳輸也是可能的。

圖1 SNEP通信模型

圖2 分段信息交換模型

2.3 APDU命令-響應消息對

應用協議數據單元(Application Protocol Data Unit,APDU)是智能卡與讀卡器之間通信的最小信息單元[9]。APDU命令-響應消息對分成APDU命令和APDU響應。根據ACR122U NFC Reader API[10]的闡釋,NFC移動設備與讀卡器ACR122U通信實際是和讀卡器中的PN532芯片通信,本文采用直接傳輸將數據包發送到NFC移動設備或NFC讀卡器。讀卡器發送的APDU命令頭是:0xff 0x00 0x00 0x00 0xii,其中,ii表示數據域字節數。ACR122U讀卡器處于Target模式,在APDU命令后跟隨命令碼。0xd4 0x8c代表對讀卡器初始化;0xd4 0x86代表讀卡器讀取數據;0xd4 0x8e代表讀卡器寫入數據[11]。根據不同的數據交換命令,ACR122U讀卡器能與NFC移動設備進行P2P通信。

ACR122U讀卡器在發送APDU命令后NFC移動設備回饋的APDU響應會有2個字節的響應后綴

SW1,SW2。根據響應后綴,讀卡器可以判定APDU命令執行的成功與否。0x90 0x00代表操作成功完成;0x63 0x7f代表PN532命令有誤;0x63 0x00代表操作失?。?1]。讀卡器通過對響應后綴的判定來決定下一步操作,成功則取出實際傳輸的數據,失敗則拋出異常。

2.4 Android Beam簡介

Android Beam是Android 4.0后開發的一個功能,目的是實現NFC移動設備間的數據交換。當2個NFC設備間要傳數據時,先保證設備沒有鎖屏,然后將2個NFC設備背靠背貼近,此時發送數據的NFC設備會有“觸摸即可發送”的提示,當用戶點擊屏幕時待傳輸數據即發送到另一個NFC設備[12]。為實現NFC移動設備與讀卡器的P2P通信,Android Beam是必不可少的。

3 NFC P2P通信的實現

本文提出實現NFC移動終端與NFC讀卡器之間P2P通信的方法。P2P通信的實現分成2個部分:移動終端發送數據到讀卡器,讀卡器發送數據到移動終端。

3.1 P2P通信客戶端的實現

客戶端的開發環境是Eclipse4.3.2,ADT22.0.1, Android4.0,jdk-7-windows-i586。測試用的NFC移動終端型號是Nexus 4,操作系統Android 4.4。

客戶端主要用到的包有4個[13-14]:(1)android.nfc.NfcAdapter包,處理NFC操作的輔助類; (2)android.nfc.NfcEvent包,產生的事件對象通常作為其他方法的參數,比如適配器的參數;(3)android.nfc.NdefRecord包,產生NDEF記錄;(4)android.nfc.NdefMessage,創建標準NDEF格式消息。

3.1.1 客戶端數據發送

移動終端向讀卡器發送的數據是NDEF格式消息,而一條NDEF消息是由若干NDEF記錄組成的。以下是生成NDEF消息的部分代碼:

為使NDEF格式消息正確發送需要實現2個接口:(1)CreateNdefMessageCallback實現接口,在主線程調用setNdefPushMessage Callback()方法,當NFC移動終端貼近讀卡器,應用會自動創建一條NDEF消息。(2)OnNdefPushCompleteCallback實現接口,在主線程調用setOnNdefPushCompleteCall back()方法,可以監聽NDEF消息是否發送成功,通?;卣{后的處理操作是在子線程中完成。

3.1.2 客戶端數據接收

移動終端接收從讀卡器發送來的消息時,客戶端是通過Intent做媒介獲取數據的,再通過解析Intent中的內容獲得實際數據。由于SNEP協議數據交換只含有NDEF格式數據[8],因此intent filter中只定義對ACTION_NDEF_DISCOVERED類型的Intent感興趣,并且可以將此類型的Action作為處理數據的判斷條件。以下是處理接收數據的部分代碼:

3.2 P2P通信服務器的實現

服務器的開發環境是jdk-7-windows-i586, Eclipse4.3.2。測試用讀卡器型號是ACR122U。使用時,讀卡器通過USB口連接PC端。

服務器主要用到的包:(1)javax.smartcardio.Card包,創建卡對象,以及通過該包獲得卡對象的基本屬性; (2)javax.smartcardio.CardChannel包,創建卡信道對象,使讀卡器與智能卡建立連接;(3)javax.smartcardio.CardTerminal包,創建終端對象,在該包獲得讀卡器信息;(4)javax.smartcardio.CommandAPDU包,構建APDU命令;(5)javax.smartcardio.ResponseAPDU包,構建APDU響應[13-14]。

3.2.1 服務器數據發送

讀卡器向移動終端發送消息是主動發送SNEP請求的過程。圖3為讀卡器發送消息的流程。當讀卡器收到“發送”命令時,讀卡器首先進行初始化,初始化內容包括讀卡器模式、協議版本、超時參數等基本信息。讀卡器發出SNEP請求后,當得到移動終端的“成功”響應后,讀卡器發送實際消息。讀卡器確認移動終端成功接收到消息后,中斷與移動終端的連接。

圖3 讀卡器發送消息流程

3.2.2 服務器數據接收

移動終端向讀卡器發送消息是讀卡器被動接收SNEP請求的過程。圖4為讀卡器接收消息的流程。當讀卡器收到“接收”命令時,讀卡器首先進行初始化,初始化內容跟讀卡器發送消息類似。由于此時發送SNEP請求的一方為移動終端,讀卡器需在初始化后等待與移動終端的連接請求,若連接成功,讀卡器將繼續等待移動終端發送的SNEP請求。下一步,讀卡器對接收到的內容做判斷,若接收的內容長度大于5,則被認為是移動終端發送的實際消息。讀卡器發出命令“請求已收到”,且讀卡器在確認回復“成功”后,斷開與移動終端的連接。

圖4 讀卡器接收消息流程

4 測試結果與分析

圖5為讀卡器向移動終端發送消息的過程。

圖5 讀卡器向移動終端發送消息的示意圖

圖5(a)為讀卡器發送SNEP請求,觸發了移動終端的Android Beam。由于此時是讀卡器向移動終端發送數據,因此無需在移動終端進行“傳遞”操作,只需等待讀卡器發送完消息。圖5(b)為讀卡器傳遞的實際內容。移動終端接收到的消息觸發了定義的Action,然后將實際內容“Good Job!”從Intent中解析出來。

圖6為移動終端向讀卡器發送消息的過程。圖6(a)為移動終端向讀卡器發送SNEP請求觸發了Android Beam。用戶需要觸摸屏幕傳達“發送”命令,否則讀卡器將因超時得不到移動終端發送的數據。圖6(b)為讀卡器成功接收消息并且向移動終端響應“成功”后,移動終端以Toast形式做出的提示信息。

圖6 移動終端向讀卡器發送消息的示意圖

5 結束語

本文研究并實現了基于Android的NFC移動終端與NFC讀卡器的P2P通信,從NFC數據交換格式NDEF、簡單NDEF數據交換協議、應用協議數據單元、Android Beam 4個方面闡述了NFC P2P通信原理及方式,實現的移動終端與讀卡器間的P2P通信,包括移動終端發送消息給讀卡器、讀卡器發送消息給移動終端2個功能。NFC技術作為新興的通信方式與移動終端結合,在移動支付、門禁等領域有較大的應用價值。測試結果表明,移動終端與讀卡器間的P2P通信,較好地實現消息在兩者之間的收發、應答,為很多實際應用提供了新的依據。下一步將主要從P2P通信傳輸數據的安全性、便利性2個方面研究NFC設備P2P通信應用于移動支付領域的可行性及解決方案。

[1]Coskun V,Ozdenizci B,Ok K.A Survey on Near Field Communication(NFC)Technology[J].Wireless Personal Communications,2013,71(3):2259-2294.

[2]Pesonen J,HorsterE.NearFieldCommunication Technology inTourism[J].TourismManagement Perspectives,2012,31(4):11-18.

[3]Sharma V,Gusain P,Kumar P.Near Field Communication[C]//Proceedings of Conference on Communication and Control Systems.Washington D.C.,USA:IEEE Press,2013.

[4]IEEE.ISO/IEC l8092-2013 Information Technologytelecommunications and Information Exchange Between Systems——Near Field Communication Interface and Protocol(NFCIP-1)[S].2013.

[5]馬 捷,鄂金龍.基于近場通信的WiFi傳輸連接方案[J].計算機工程,2013,39(6):1-6.

[6]劉 翔,肖 堃.跨平臺NFC軟件棧的研究與架構設計[J].電子科技大學學報,2014,43(1):88-94.

[7]NFC Forum.NFCDataExchangeFormat(NDEF) Technical Specification[EB/OL].[2014-04-09].http:// www.nfc-forum.org/specs/spec_list/.

[8]NFC Forum.Simple NDEF Exchange Format(SNEP) Technical Specification[EB/OL].[2014-04-09].http:// www.nfc-forum.org/specs/spec_list/.

[9]Belter I.Smart Card APDU Analysis[Z].2008.

[10]白翠翠,夏春蕾,戴曙光.非接觸式CPU卡讀寫器的設計與實現[J].無線電通信技術,2012,(5):50-52,70.

[11]吳毓書,張寶峰,張翀斌,等.基于APDU數據交換協議的安全U盤通信模型[J].清華大學學報:自然科學版,2012,52(10):1496-1499.

[12]IEEE.ISO/IEC 7816-4-2013 Identification Cards——IntegratedCircuitCards——Part4:Organization, Security and Commands for Interchange[S].2013.

[13]Coskun V,Kerem O,Ozdenizci B.Professional NFC Application Development for Android[M].Hoboken, USA:John Wiley&Sons,Inc.,2013.

[14]石 韻.Android移動平臺中NDEF標簽的掃描應用研究[J].計算機光盤軟件與應用,2014,(19): 292-294.

編輯 陸燕菲

Design and Implementation of P2P Communication Between Near Field Communication Devices

HE Chenhui,ZHENG Ziwei
(Institute of Communication Technology,Ningbo University,Ningbo 315211,China)

To achieve interconnection between different Near Field Communication(NFC)devices,Peer to Peer(P2P) communication of NFC device as the object of study,this paper designs and implements P2P communication between NFC mobile terminal and NFC reader based on Android platform.NFC mobile terminal and NFC reader takes NFC Data Exchange Format(NDEF)as the communication unit,based on the Simple NDEF Exchange Protocol(SNEP)protocol,a party is as a client to send the message transmission request,and the other is as a server to respond client request.It is to enable NFC mobile terminal interact with NFC reader through command-response message pair in Application Protocol Data Unit(APDU).Test results show that both NFC mobile terminal and NFC reader can take the initiative send messages to each other,and better achieve P2P communication between NFC mobile terminal and NFC reader.

Android platform;Near Field Communication(NFC);Peer to Peer(P2P)communication;mobile terminal;card reader;Application Protocol Data Unit(APDU)

何晨暉,鄭紫微.近場通信設備間的P2P通信設計與實現[J].計算機工程,2015,41(3):77-80,87.

英文引用格式:He Chenhui,Zheng Ziwei.Design and Implementation of P2P Communication Between Near Field Communication Devices[J].Computer Engineering,2015,41(3):77-80,87.

1000-3428(2015)03-0077-04

:A

:TP319

10.3969/j.issn.1000-3428.2015.03.014

國家自然科學基金資助項目(60972063);國家科技重大專項基金資助項目(2011ZX03002-004-02);浙江省杰出青年科學基金資助項目(R1110416);教育部高等學校博士學科點專項科研基金資助項目(20113305110002);寧波市科技創新團隊基金資助項目(2011B81002)。

何晨暉(1989-)女,碩士研究生,主研方向:無線移動通信;鄭紫微,教授、博士生導師。

2014-04-16

:2014-05-12E-mail:hechenhuicn@foxmail.com

猜你喜歡
讀卡器命令消息
只聽主人的命令
與淘汰命運抗爭 看懂筆記本的讀卡器
一張圖看5G消息
移防命令下達后
基于EMV非接通信規范的非接觸讀卡器設計
為二維碼識別的獻禮之作——評測平治二維碼門禁讀卡器
這是人民的命令
MATLAB實現組態王中TCP/IP讀卡器監控方法
消息
消息
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合