依照消息处理的流程,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的协议比较简单,所以介绍的篇幅会比较少。