NFC 的协议叫做 NCI(NFC Controller Interface),是无线通信的一个协议,既然是无线通信的协议,可以套用 OSI分层协议描绘的认知模型来理解。
OSI分层协议
应用层:网络操作系统和具体应用程序
表示层:数据语法的转换、数据的传送
会话层:建起两端之间的会话关系,并负责数据的传送
传输层:负责错误的检查与修复,以确保传送的质量 TCP(报文)
网络层:提供了编制方案 IP(数据包)
数据链路层:物理层传来的未经处理的位数据包装成帧数据
物理层:网线 网卡 接口等物理设备
将 NFC 的 NCI 协议往 OSI7层协议上面一套,NFC的三种使用场景对应技术如下:
三种使用场景下的协议
卡模拟
可以看到 4、5、6 都没有涉及,7也为各种支付方式自己实现。
所以在卡模拟的情况下,在物理层(射频、耦合),数字链路层,网络层 之上,就是各个应用(比如 paypass、paywave)的实现。
读卡器
这个读写模式,涉及到了 OSI 中的每一层。
点对点
这个双向模式也是 OSI 中的每一层都涉及了。
NFC技术上使用了 基于 ISO 18092 的 NFC-DEP,有别于其他的 LLCP,SNEP。
在会话层的 NDEF 部分是读写模式 与 点对点 都有用到。
LLCP: (logical link control protocol,逻辑链路控制协议)基于IEEE 802.2的规范。某种程度上依然算是层2实现的紧凑协议。初衷是可以更好的支持小应用的有限数据传输,所以应用必须要小,单位时间传输的数据量非常小。另外LLCP的涉及也是为了支持一些网络协议如OBEX,TCP/IP啥的。
SNEP: (Simple NDEF exchange protocol)专门为P2P设计的,就是为了P2P 的时候使用NDEF交换信息。
另外提一下,读写模式上 NFC 使用的是 ISO-DEP(基于ISO 14443),P2P使用的是NFC-DEP(基于 ISO 18092)。
补充
关于 ISO 14443 和 ISO 18092 协议
ISO14443分为4部分,硬件主要了解前两部分,软件和应用开发则需要了解后两部分ISO14443-3和ISO14443-4。
ISO14443-1定义了IC卡的物理特性。
ISO14443-2定义了频率、射频能量、编码等内容。
ISO14443-3定义了TypeA/TypeB的初始化和防冲突机制。其中Mifare 1就只到这一层。
ISO14443-4定义了卡片的数据传输协议。
详细讲解参见
http://blog.sina.com.cn/s/blog_3ee5cc510100raun.html
ISO 18092 是为NFC制定的协议,其中介绍了 P2P 通讯中的 Active 模式和 Assive 通信模式。实际上其中包含了 14443 协议和非国际标准的 Felica 通讯协议。