移动支付这事情热了总归还是会回归理性,就如同之前的10几年间的几次轮回一样。字面上看,移动支付比支付大也不大可能,有相同,有扩展,有交集有不通才是。

NFC这事情也是说了快十年了,真心希望它能回归到其就是一个小小的接入技术上来,开放,大多数开发者能如同呼叫一个通用的接入一样用它。

NFC这事也不应该赖上移动支付,俩位都锁在那锁了10年了,其实维基上的一句描述写的不错:“NFC offers a low speed connection with extremely simple setup, and can be used to bootstrap more capable wireless connection. It could for example , replace the pairing step of establishing Bluetooth connections or the configuration of Wi Fi networks”。看来这哥们真的是接的快,传的慢。不论怎样,如果不仅仅把NFC绑在支付上,或者说80%的NFC场景不是支付的话,可能NFC还真能小小的改变你我的生活。

但是这么一个小玩意,参与的公司多,乱,杂,背景不通,诉求不同,有电信领域的,有金融领域的,有卡商,有手机厂商等等,结果是规范乱,实现乱,认证不断延期,尤其是规范乱这事儿,实在是晕,一会儿14443,一会儿18092,一会儿用NDEF,一会儿又SNEP,还有ISO-DEP ,不待这么玩的。

是需要把各个点捋清除,分享之。

书归正传,先从最基本的一出说起-认知的模型,我觉得还是OSI分层协议描绘的清晰些个,大多数通信场景,往这一套,立马了然。

先看看OSI 在wiki上的描述,这是各层的功能和跑的数据单元

题外话,其实琢磨SWP(single wired protocol)也可以往这上面套,啥I frame, S frame的,没错,上面不是写这frame和Datagram了嘛,没错,就是这,SWP 就在这层。

花开两朵,单表一支,咱们再说回NFC,把OSI7层协议套用过来,NFC的3中方式或者叫使用场景更合适些个:卡模式,读写模式,点对点模式

在OSI上都逐个有所对应,到此忽然发现,原来天天和人白话NFC啊移动支付啥的原来卡模式里面不用NDEF, SNEP 等等,以及展现层上的 RTD, 到此,一脑门子汗,不总结不知道。

另外从NFC往OSI的套图上也看的出来, connection handover在读写模式和P2P模式的应用层都占了位置,这就了然了,为啥NFC Forum在讨论应用和测试规范时候,connection handover比较看重,一者这个还真实和其他技术比如非接触卡的区别,二者应用场景也很诱人!

卡模式方面:

似乎层4,5,6都没有涉及到,应用层也是各个支付方式自己实现自己的。 ISO-DEP基于ISO 14443, NFC-DEP基于18092,这就是NFC乱的地方,一个层上出这么多七七八八的协议,差异不大还各说个的,到底有啥差异,稍候在叙。所以在物理层(射频,或者说耦合更合适些个),数字链路层和网络层实现了NFC技术(比如ISO-DEP)之上,就是各个应用paypass paywave的实现,简单明了,要不怎么说卡模式呢,其实跟卡实现的各层一样,姑且把google wallet也放在这个模式里面,G公司的支付这部分有点胡搞,当然现在改变为在卡短实现虚拟卡的方式似乎又有些起色。

读写模式:

好了来个少复杂的,各层都有,从射频到RTD,从物理层到应用,如果真有终端的话,我倒是觉得这个比支付吸引人一些,商场地图,应用下载,歌迷会等等,可以让想象力再飞一会!实现NFC的手机里面,这个功能应该是第一波实现的,需要引起重视的是在RTD上面实现的(或者说需要实现的)connection handover,不能把read/write模式就想象成POS机,那非自己玩死自己不可,想象一下噻,在星巴克  NFC check in, 然后app connection handover把你的能的支付在后台处理,或者加上优惠券,不比Square和星巴克的合作酷?星巴克不能接着合作可咱可试试 cold stone冰激凌,或者HM服装,总之不去日本人的店就成。其实东支付的市场需要深度挖,觉不仅仅是发个SD卡涮卡的事情,要是就刷卡了还有啥创新,大家就都奔着银行那532分成去了,这部读写模式已然能刷出花样!深度的用户场景看来需要下篇单独写了。

P2P模式:

 

来个更多交互的,点对点。已然是从层一物理层到层7应用层都引入了,除了NFC技术上使用了 基于ISO 18092的NFC-DEP之外,还有有别与其他的LLCP,SNEP。NDEF部分是读写模式和P2P都用到了,故而也不算独有或者邪门的地方了。

说说邪门的:

LLCP:基于IEEE 802.2的规范的。某种程度上依然算是层2实现的紧凑协议。初衷是可以更好的支持小应用的有限数据传输,所以,应用得小,真得小,或者说行为简单,换个名片,微博互粉,相互识别一串数(比如磁条卡号码啥的),数据得小,大了我不玩了,还是突出NFC的那个描述:“NFC offers a low speed connection with extremely simple setup”。另外LLCP的涉及也是为了支持一些网络协议如OBEX,TCP/IP啥的。说到着,对照OSI7层协议的模型,再看看LLCP的英文: logical link control protocol,逻辑链路控制协议,就全对上号。OSI是个好模型,一个模型走边天下噻!

SNEP:专门为P2P设计的,就是为了P2P 的时候使用NDEF交换信息,名字就能看出来:Simple NDEF exchange protocol,还是建立连接更简单(虽然数据的速度慢),回到刚才NFC的特点描述的那段洋文: “NFC offers a low speed connection with extremely simple setup”。了然!

另外读写模式上NFC技术使用ISO-DEP(基于14443), P2P 使用了基于18092的NFC-DEP,这个两个基础规范虽说差异不大,还是变态般的分列出来,回头细聊。

 

NFC场强,射频和耦合:

不少地方把NFC的物理部分叫射频,其实这个无线电射频还是两码事,这个还是叫耦合比较好点(couple),  轮询放给出能量和时钟和bit流请求,收听放给出反馈。之所以不用读卡器和卡是因为NFC的世界里象尽量淡化读卡器,卡,而是用NFC device( 啥都能当),至少这是2003年他们开始耍时候的想法。

稍微看看NFC论坛提及的测试方式,抓狂级,涉及14个点上不同的速度和角度的测试,先得找到贴着 DUT得0点位置,由此演化出同一水平面上得4个附加位置,再提升5厘米,上一个平面上2个圆环加圆心9个点共14个,测试相应耦合场,波形,敏感度,载波等等。

由此来看,NFC 还是属于proximity这种贴近式得方式。

关于两个混乱协议

ISO 18092:因该说兼容14443,为NFC设计得协议以解决如何交换数据流的问题。定义了 NFC 设备通讯的两种模式:poller模式和listen模式。并且分别定义了两种模式的选择和射频场防冲突方法、设备防冲突方法,定义了不同波特率通讯速率下的编码方式、调制解调方式等等最最底层的通讯方式和协议。 在 NFC 的世界里没有读卡器,没有卡,只有 NFC 设备。  初始设计是为了提供贴近式,后来增加了对 ISO15693(接近式) 的兼容,说实话,每必要,说拿手机隔着1米半搞啥呢?不过也比一定(仔细想下),比如不知道哪一代Iphone要实现数字家庭遥控的话,加入还考虑家里就是死活不装WiFi的人家儿,用这么距离的vicinity也没准噻!

ISO 14443非接触卡片用的不赘述了,被18092不小心包含了,小样,往哪跑,我做的晚,啥都包括!

NFC学习总结二的更多相关文章

  1. crawler4j 学习(二)

    crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...

  2. 从零开始学习jQuery (二) 万能的选择器

    本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...

  3. Android Animation学习(二) ApiDemos解析:基本Animators使用

    Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...

  4. AspectJ基础学习之二搭建环境(转载)

    AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...

  5. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  6. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  7. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

  8. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  9. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...

随机推荐

  1. 纯js轮播图练习-2,js+css旋转木马层叠轮播

    基于css3的新属性,加上js的操作,让现在js轮播图花样越来越多. 而现在出现的旋转木马层叠轮播的轮播图样式,却是得到了很多人都喜爱和投入使用. 尤其是在各大软件中,频繁的出现在大家的眼里,在web ...

  2. Mysql 关于处理NULL值的相关函数和操作符

    操作符 <=> NULL-safe equal. This operator performs an equality comparison like the = operator, bu ...

  3. wdcp v3 pureftpd 无法登录问题解决

    wdcp v3 新建站点和ftp账号 单位无法登录ftp 在端口中也确实可以看到有进行在登录状态 错误原因: 防火墙端口没有开启该端口范围  20000-30000 这时候发现 改端口为20078  ...

  4. php 批量去除项目文件bom头

    <?php if (isset($_GET['dir'])) { //设置文件目录 $basedir = $_GET['dir']; } else { $basedir = '.'; } $au ...

  5. 最完整的数据倾斜解决方案(spark)

    一.了解数据倾斜 数据倾斜的原理: 在执行shuffle操作的时候,按照key,来进行values的数据的输出,拉取和聚合.同一个key的values,一定是分配到一个Reduce task进行处理. ...

  6. BugkuWeb本地包含

    知识点:$_REQUEST不是一个函数,它是一个超全局变量,里面包括有$_GET $_POST $_COOKIE的值,$_REPUEST 是接收了 $_GET $_POST $_COOKIE 三个的集 ...

  7. js分片上传大文件,前端代码

    首先导入jQuery.form.js文件,下面src是相对于改js文件位置, <script type="text/JavaScript" src="jquery/ ...

  8. linux (ubuntu)安装pycharm

    1. 下载 http://www.jetbrains.com/pycharm/download/ 选择Linux Tab,选择下载免费的Community Edition. 2. 安装PyCharm ...

  9. 常见java异常英语词汇(一)

    denied   /dɪ'naɪəd/    adj 拒签  v 拒绝

  10. 【blockly教程】第五章 循环结构

    在这里,我们将介绍一个新游戏--Pond Tutor 在Pond Tutor(https://blockly-games.appspot.com/pond-tutor)这个游戏中,我们将扮演黄色的鸭子 ...