NDEF-сообщение¶
NDEF-сообщение (англ. NFC Data Exchange Format) — стандартизированный формат данных, используемый для обмена информацией между устройствами, поддерживающими технологию Near Field Communication (NFC). NDEF определяет структуру и правила кодирования записей, которые упаковываются в единое сообщение и передаются при поднесении устройств друг к другу на расстояние до 10 сантиметров. Формат разработан Форумом NFC (NFC Forum) и описан в спецификации NFC Data Exchange Format (NDEF) Technical Specification.
¶Структура и принципы
NDEF-сообщение представляет собой последовательность одной или нескольких NDEF-записей (records). Каждая запись имеет заголовок и полезную нагрузку (payload). Заголовок содержит управляющие флаги, информацию о длине полей и типе данных. Основные элементы заголовка:
- Flags — битовое поле, определяющее свойства записи: является ли она первой или последней в сообщении, содержит ли короткую полезную нагрузку, имеет ли поле идентификатора и другие атрибуты.
- Type Name Format (TNF) — трёхбитное поле, указывающее структуру и семантику поля типа. Определяет, как интерпретировать тип записи (например, MIME-тип, URI, абсолютное имя или внешний тип).
- Type — идентификатор типа данных, зависящий от TNF. Может содержать, например, MIME-тип (text/plain, application/json) или сокращённый URI.
- Payload Length — длина полезной нагрузки в байтах.
- Payload — непосредственно передаваемые данные.
Максимальный размер одного NDEF-сообщения ограничен ёмкостью носителя или буфера обмена устройства, но на практике для NFC-меток и бесконтактных карт он обычно не превышает нескольких килобайт.
¶Типы записей и TNF
Поле TNF определяет способ интерпретации типа записи. Основные значения:
- Empty (0x00) — пустая запись без полезной нагрузки.
- Well-known Type (0x01) — тип, определённый NFC Forum, например текстовые записи (T), URI (U), умные плакаты (Sp) и записи с данными MIME.
- MIME Type (0x02) — тип, соответствующий стандартным MIME-типам (например, image/png, application/pdf).
- Absolute URI (0x03) — полный URI, заданный в поле типа.
- External Type (0x04) — пользовательские типы, определяемые организациями или разработчиками, с именем в формате домена.
- Unknown (0x05) — тип не определён, обработка зависит от приложения.
- Unchanged (0x06) — используется для записей, которые являются частью чанка (фрагментации) и продолжают предыдущую запись.
Наиболее распространёнными являются well-known-типы: текстовая запись (T) содержит строку в кодировке UTF-8 или UTF-16 с указанием языка, а запись URI (U) — сокращённый или полный интернет-адрес.
¶Применение
NDEF-сообщения используются в широком спектре устройств и сценариев:
- NFC-метки — пассивные элементы (стикеры, брелоки, карты), на которые записано NDEF-сообщение. При поднесении смартфона метка передаёт данные, например URL, текст или команду для запуска приложения.
- Бесконтактная оплата — платёжные карты и смартфоны передают NDEF-сообщения с данными транзакций в платёжные терминалы.
- Сопряжение устройств — обмен конфигурационными данными (например, параметрами Bluetooth или Wi-Fi) между смартфоном и периферией.
- Умные плакаты (Smart Poster) — составное NDEF-сообщение, содержащее URI, текст, заголовок и другие данные, предназначенное для считывания с рекламных носителей.
- Электронные документы — передача визитных карточек (vCard), билетов, пропусков и других структурированных данных.
¶Запись и чтение
Запись NDEF-сообщений на метки производится с помощью специальных устройств (считывателей) или смартфонов с поддержкой NFC. В операционных системах Android и iOS существуют встроенные механизмы для чтения и записи NDEF-сообщений, а также библиотеки для разработчиков (например, android.nfc.NdefMessage в Android). При чтении устройство извлекает записи, анализирует их типы и передаёт данные приложениям, которые зарегистрированы для обработки соответствующих типов.
¶Ограничения и особенности
NDEF-сообщения имеют ряд ограничений, связанных с физическими свойствами NFC:
- Малая ёмкость — объём передаваемых данных ограничен памятью метки (обычно от 48 байт до нескольких килобайт) и скоростью передачи (424 кбит/с в максимальном режиме).
- Короткая дистанция — для успешного обмена необходимо поднести устройства на расстояние не более 10 см.
- Отсутствие шифрования — формат не предусматривает встроенных механизмов защиты; конфиденциальные данные должны шифроваться на уровне приложения.
Несмотря на ограничения, NDEF остаётся основным форматом обмена данными в экосистеме NFC благодаря простоте, стандартизации и широкой поддержке производителями устройств и операционных систем.
¶См. также
- NFC
- RFID
- Бесконтактная оплата