[NFC]SNEP协议介绍



        依照消息处理的流程,LLCP的消息会封装成SNEP,交由上层进行分析处理。此章节将重点介绍SNEP Spec中重要的部分。

        1.      SNEP简介

        2.      SNEP协议

 


SNEP简介

            SNEP(SimpleNDEF Exchange Protocol)是通过request/response的方式进行交互,对应的服务名称(Service Name):urn:nfc:sn:snep,服务访问点(Service AccessPoint):4.


       SNEP支持分片传输,传输的第一个fragment必须包含完整的Header信息,示意图如下:

[NFC]SNEP协议介绍_第1张图片

         

        分片传输示意图如下:

[NFC]SNEP协议介绍_第2张图片


        需要注意的是:

        1.      接收方收到第一个分片信息后,需要回复continue PDU给发送方。发送方收到continue PDU后,会继续传输剩余的分片信息。如果接收方不支持对应的Version,则不会回复continue PDU,并放弃接收后续数据。

        2.      SNEP中检查Version时,如果Major不一致时,可能会返回unsupportedversion;如果只是minor版本不一致,则会采用低版本的协议进行沟通



SNEP协议

        主要从request和response两个方面进行介绍。

        request和response的封包格式如下

[NFC]SNEP协议介绍_第3张图片[NFC]SNEP协议介绍_第4张图片


        由于Request/Response中的type字段都是由8bits数据表征其含义,所以整理了总表如下:

代码

名称

说明

解释

00

Continue

[Req]Send remain fragment

Client请求Server发送剩余分片信息

01

Get

[Req] Server should return a NDEF MSG

请求Server发送NDEF,此消息含Client能接收的最大消息长度

02

Put

[Req]Server should accept a NDEF MSG

请求Server接收NDEF,理论上Server端不要支持此部分

03-7E

Reserve

---

----

7F

Reject

[Req]Server should not send remaining msg

停止发送数据,此消息不含information field

80

Continue

[Resp] Send remain fragment

Server回复的消息过长时,会以frag的方式发送

81

Success

[Resp] Operation Success

回复PUT时不含信息域,回复GET时含信息域

82-BF

Reserve

---

---

C0

Not Found

[Resp]Resource not found

不含信息域

C1

Excess Data

[Resp]Resource exceed max size

不含信息域

C2

Bad request

[Resp]malformed request

无法解析Request消息

C3-DF

Reserve

---

---

E0

Not impelement

[Resp]Unsupported functionality request

无法识别的request code

E1

Unsupported Version

[Resp]version not support

不支持的版本信息

E2-FE

Reserve

---

---

FF

Reject

[Resp]don’t send remaining fragment

不在接收剩余的分片信息

 


        SNEP的协议比较简单,所以介绍的篇幅会比较少。

        依照消息处理的流程,LLCP的消息会封装成SNEP,交由上层进行分析处理。此章节将重点介绍SNEP Spec中重要的部分。

        1.      SNEP简介

        2.      SNEP协议

 


SNEP简介

            SNEP(SimpleNDEF Exchange Protocol)是通过request/response的方式进行交互,对应的服务名称(Service Name):urn:nfc:sn:snep,服务访问点(Service AccessPoint):4.


       SNEP支持分片传输,传输的第一个fragment必须包含完整的Header信息,示意图如下:

[NFC]SNEP协议介绍_第5张图片

         

        分片传输示意图如下:

[NFC]SNEP协议介绍_第6张图片


        需要注意的是:

        1.      接收方收到第一个分片信息后,需要回复continue PDU给发送方。发送方收到continue PDU后,会继续传输剩余的分片信息。如果接收方不支持对应的Version,则不会回复continue PDU,并放弃接收后续数据。

        2.      SNEP中检查Version时,如果Major不一致时,可能会返回unsupportedversion;如果只是minor版本不一致,则会采用低版本的协议进行沟通



SNEP协议

        主要从request和response两个方面进行介绍。

        request和response的封包格式如下

[NFC]SNEP协议介绍_第7张图片[NFC]SNEP协议介绍_第8张图片


        由于Request/Response中的type字段都是由8bits数据表征其含义,所以整理了总表如下:

代码

名称

说明

解释

00

Continue

[Req]Send remain fragment

Client请求Server发送剩余分片信息

01

Get

[Req] Server should return a NDEF MSG

请求Server发送NDEF,此消息含Client能接收的最大消息长度

02

Put

[Req]Server should accept a NDEF MSG

请求Server接收NDEF,理论上Server端不要支持此部分

03-7E

Reserve

---

----

7F

Reject

[Req]Server should not send remaining msg

停止发送数据,此消息不含information field

80

Continue

[Resp] Send remain fragment

Server回复的消息过长时,会以frag的方式发送

81

Success

[Resp] Operation Success

回复PUT时不含信息域,回复GET时含信息域

82-BF

Reserve

---

---

C0

Not Found

[Resp]Resource not found

不含信息域

C1

Excess Data

[Resp]Resource exceed max size

不含信息域

C2

Bad request

[Resp]malformed request

无法解析Request消息

C3-DF

Reserve

---

---

E0

Not impelement

[Resp]Unsupported functionality request

无法识别的request code

E1

Unsupported Version

[Resp]version not support

不支持的版本信息

E2-FE

Reserve

---

---

FF

Reject

[Resp]don’t send remaining fragment

不在接收剩余的分片信息

 


        SNEP的协议比较简单,所以介绍的篇幅会比较少。

你可能感兴趣的:(NFC)