如有轉載此文,請註明出處,文中引用的數據,如果有涉及到版權問題,還請告知,會立馬刪除。
依照消息處理的流程,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的協議比較簡單,所以介紹的篇幅會比較少。