NFC数据篇-NDEF格式详解
NDEF 是NFC 论坛标准化定义的通用数据封装格式,是 NFC 标签、NFC 读写器之间数据互通的标准协议,所有 NFC 设备(手机 NFC、NFC 读写器、NFC 卡片芯片)想要互相读取识别,绝大多数场景必须把卡片数据格式化为 NDEF,也是你 NFC 读写器读写标签的核心格式。
一、基础定位
制定方:NFC Forum(NFC 论坛)官方规范,统一不同厂商 NFC 芯片(NTAG、MIFARE Ultralight、Topaz、Felica 等)的数据存储结构;
作用:把文本、URL、蓝牙配对、电话、APP 跳转、vCard 名片等各类数据,封装成统一数据包,安卓 / 苹果手机原生 NFC 不用装 APP 即可自动解析;
适用卡片:NTAG213/215/216、Ultralight-C、ICODE SLIX 等可格式化为 NDEF 的 NFC 标签;经典 MIFARE1K 默认非 NDEF,需要特殊扇区配置才能 NDEF 化。
你的 NFC 读写器改 NDEF 本质:擦除卡片原有自定义数据,按照 NDEF 规范划分存储区、设置 CCID(能力容器),让卡片变成 NDEF 兼容标签。
二、NDEF 整体数据结构
NDEF 由两层结构:CC 文件(Capability Container,能力容器) + NDEF Message(NDEF 消息)
1. CC 容器(卡片控制区,固定在卡片起始地址)
卡片格式化 NDEF 时,读写器会自动在卡片前几个字节写入 CC 数据,用来告诉读取设备:
卡片总可用 NDEF 存储容量;
读写权限(只读 / 可擦写);
块大小、芯片类型;
无合法 CC 区 → 手机无法识别为 NDEF 标签,只能用专业读写器裸读原始扇区。
2. NDEF Message(NDEF 消息主体)
一条 NDEF 消息 = 1 个或多个 NDEF Record(NDEF 记录)
单标签可以存 1 条 Message,一条 Message 可以多条 Record(例如一条标签同时存网址 + 联系人信息)。
NDEF Record 单条记录头部结构(关键 8 字节以内头 + 负载 Payload)
字段 | 占用位 | 说明 |
MB(Message Begin) | 1bit | 消息起始标记,第一条 Record 置 1,其余 0 |
ME(Message End) | 1bit | 消息结束标记,最后一条 Record 置 1,其余 0 |
CF(Chunk Flag) | 1bit | 分片标记,大数据拆分多条记录用,普通数据 0 |
SR(Short Record) | 1bit | 短记录标识:Payload 长度 < 256 则置 1,只用 1 字节存负载长度;否则 4 字节 |
IL(ID Length Present) | 1bit | 是否存在 ID 字段,0 无 ID、1 带 ID |
TNF(Type Name Format) | 3bit | 类型编码(核心,决定数据类型) |
TYPE Length | 1 字节 | 后面 Type 字段的字节长度 |
ID Length | 0/1 字节 | IL=1 时才有,ID 字段长度 |
Payload Length | 1/4 字节 | SR=1 则 1 字节,否则 4 字节,负载数据长度 |
Type 域 | N 字节 | 数据类型标识(如 URI、TEXT、MIME) |
ID 域 | N 字节 | 可选自定义标识,极少使用 |
Payload 域 | N 字节 | 实际存储内容(网址、文字、名片原始数据) |
三、TNF 类型(3bit 共 8 种,最常用 4 种)
TNF 是 NDEF 的核心分类,决定 Payload 数据解析规则:
1、TNF 0x00 Empty:空记录
无 Type、无 Payload,空白 NDEF 标签默认内容;
2、TNF 0x01 Well-known:NFC 预定义标准类型(最常用)
NFC 论坛规定好的数据格式,手机系统原生解析:
T = TEXT 文本:存储多国语言文字(中文 / 英文);
U = URI 网址:存储 http/https、微信、APP 链接,手机碰标签直接跳转浏览器;
Sp = Smart Poster 智能海报:URL + 标题 + 图标复合数据;
Bt = Bluetooth 配对:存储蓝牙 MAC、设备名,碰标签自动配对蓝牙设备;
3、TNF 0x02 MIME Media:自定义 MIME 数据
自定义二进制 / 文件,如 PDF、APK、自定义协议数据,需要对应 APP 解析;
4、TNF 0x03 URI:保留扩展 URI(极少用)
TNF4~7:外部厂商自定义类型、未知、保留,工业 NFC 设备私有协议常用,手机无法自动识别。
四、常用 NDEF 数据封装示例
示例 1:TEXT 文本(内容:NFC测试,简体中文 UTF8)
TNF=01,Type=T
Payload 首字节:语言码长度(02=zh)+ 语言编码zh+ 正文NFC测试
手机刷卡直接弹窗显示文字。
示例 2:URL 链接(https://www.nuotasi.com)
TNF=01,Type=U
Payload 首字节为 URL 前缀编码:0x01 = https://,后面只存www.nuotasi.com(压缩节省空间)
U 类型前缀编码:0 = 无前缀、1=https://、2=http://、3=ftp:// 等,NDEF 规范固定编码表。
示例 3:vCard 电子名片(MIME 格式 TNF=02)
Payload 存储标准 VCF 名片文件,手机读取自动弹出保存联系人。
五、NFC 读写器格式化 NDEF 的内部流程(你设备改格式底层动作)
擦除卡片前导存储区:清空卡片 0 块 / 1 块原始数据;
写入 CC 容器参数:根据卡片型号(NTAG213=144 字节可用空间、NTAG215=504 字节)写入容量、权限配置;
配置访问权限:可选设置 NDEF 只读(锁卡,无法再次改写)或可擦写;
写入 NDEF 空 Message:默认写入空 NDEF 记录,完成格式化;
写入用户数据:读写器把你输入的文字 / URL,按照对应 TNF 规则打包成 NDEF Record,写入负载区。
反之:非 NDEF 格式标签:无 CC 区,数据按厂商自定义扇区存储(如 M1 卡扇区密钥存储),手机 NFC 读不出内容,只能专业读写器按扇区地址读写。
六、NDEF 优缺点
优点
1、跨设备通用:安卓 /iOS 原生支持,不用 APP;
2、压缩存储:URL 等数据内置前缀编码,节省标签存储空间;
3、标准化:全品牌 NFC 读写器、NFC 芯片统一兼容;
4、支持多数据复合:单标签同时存 URL + 文本 + 蓝牙。
缺点
1、容量受限:小标签 NTAG213 仅 144 字节 NDEF 可用,无法存大文件;
2、安全偏弱:标准 NDEF 无内置加密(部分芯片支持密码锁卡只读),无密钥加密 Payload;
3、M1 卡兼容性差:MIFARE Classic 1K 原生不支持标准 NDEF,改 NDEF 需要修改扇区配置,稳定性差。
七、补充:NDEF 相关衍生规范
NDEF RTD:Record Type Definition,即 Well-Known 下的子类型规范(TEXT/URI/Bluetooth 都是 RTD 标准);
TNEP:NFC 标签交换协议,基于 NDEF 做动态数据交互(NFC 读写器和标签实时交互数据);
NDEF Lock:NDEF 锁位,格式化后可永久锁定标签,禁止二次改写。
八、实操小提示(针对你的 NFC 读写器)
NTAG 全系列优先 NDEF 格式,是消费级 NFC 通用方案;
工业 RFID 卡(EM4100、ICODE2)大多不支持 NDEF,只能裸码读写;
已经写入自定义二进制数据的标签,必须先格式化 NDEF 才能写入 NDEF 内容(原有数据全部清空);
若需要加密 NDEF,选用带密码保护的 NTAG215,读写器设置标签访问密码。





