依照消息处理的流程,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信息,示意图如下:
分片传输示意图如下:
需要注意的是:
1. 接收方收到第一个分片信息后,需要回复continue PDU给发送方。发送方收到continue PDU后,会继续传输剩余的分片信息。如果接收方不支持对应的Version,则不会回复continue PDU,并放弃接收后续数据。
2. SNEP中检查Version时,如果Major不一致时,可能会返回unsupportedversion;如果只是minor版本不一致,则会采用低版本的协议进行沟通
SNEP协议
主要从request和response两个方面进行介绍。
request和response的封包格式如下:
由于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信息,示意图如下:
分片传输示意图如下:
需要注意的是:
1. 接收方收到第一个分片信息后,需要回复continue PDU给发送方。发送方收到continue PDU后,会继续传输剩余的分片信息。如果接收方不支持对应的Version,则不会回复continue PDU,并放弃接收后续数据。
2. SNEP中检查Version时,如果Major不一致时,可能会返回unsupportedversion;如果只是minor版本不一致,则会采用低版本的协议进行沟通
SNEP协议
主要从request和response两个方面进行介绍。
request和response的封包格式如下:
由于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的协议比较简单,所以介绍的篇幅会比较少。