Jump to content

ОБМЕН ОБЪЕКТАМИ

OBEX (аббревиатура OBject EXchange , также называемая IrOBEX ) — это протокол связи , который облегчает обмен двоичными объектами между устройствами. Он поддерживается Ассоциацией инфракрасных данных , но также был принят Специальной группой по Bluetooth и SyncML крылом Открытого мобильного альянса (OMA). Одно из первых популярных приложений OBEX было в Palm III . Этот КПК и его многочисленные преемники используют OBEX для обмена визитными карточками, данными и даже приложениями.

Хотя OBEX изначально был разработан для инфракрасного порта, теперь он адаптирован для Bluetooth , а также используется через RS-232 , USB , WAP и в таких устройствах, как смарт-ручки Livescribe .

Сравнение с HTTP

[ редактировать ]

OBEX по конструкции и функциям аналогичен HTTP: он предоставляет клиенту надежный транспорт для подключения к серверу, а затем может запрашивать или предоставлять объекты. Но OBEX отличается во многих важных отношениях:

  • HTTP обычно располагается над ссылкой TCP/IP . OBEX также может быть, но обычно он реализуется в стеке IrLAP / IrLMP / Tiny TP на устройстве IrDA . В Bluetooth OBEX реализован на стеке Baseband / ACL / L2CAP (и, для устаревшего использования, RFCOMM ). Возможны и другие подобные «привязки» OBEX, например через USB .
  • HTTP использует удобочитаемый текст, но OBEX использует тройки тип-длина-значение в двоичном формате , называемые «Заголовки», для обмена информацией о запросе или объекте. Их гораздо легче анализировать устройствами с ограниченными ресурсами.
  • HTTP-транзакции по своей сути не имеют состояния; обычно HTTP-клиент открывает соединение, выполняет один запрос, получает ответ и либо закрывает соединение, либо выполняет другие несвязанные запросы . В OBEX одно транспортное соединение может выполнять множество связанных операций. Фактически, недавние дополнения к спецификации OBEX позволяют возобновить внезапно закрытую транзакцию с сохранением всей информации о состоянии.

OBEX работает путем обмена объектами , которые используются для различных целей: установления параметров соединения, отправки и запроса данных, изменения текущего пути или атрибутов файла.

Объекты — это поля и заголовки . В качестве примера можно привести следующий объект, используемый для запроса телефонной книги с мобильного телефона:

Объект Поля Команда ПОЛУЧИТЬ, Финал 0x83
Длина общая длина объекта 0x00 0x29
Заголовки Идентификатор соединения 1 0xCB 0x00 0x00 0x00 0x01
Имя "телеком/pb.vcf" 0x01 0x00 0x1e 0x00 0x74 0x00 0x65 0x00 0x6c 0x00 0x65 0x00 0x63 0x00 0x6f 0x00 0x6d 0x00 0x2f 0x00 0x70 0x00 0x62 0x00 2e 0x00 0x76 0x00 0x63 0x00 0x66 0x00 0x00

Этот объект содержит два поля (команда и длина) и два заголовка. Первое поле (команда) указывает, что это запрос данных (GET). Второе поле — это общий размер объекта, включая два поля.

Этот объект также содержит два заголовка, а именно «Идентификатор соединения» и «Имя». Первый байт каждого заголовка — это имя заголовка и тип его содержимого. В этом случае:

  • 0xCB означает, что этот заголовок представляет собой «Идентификатор соединения», число, полученное ранее; два старших бита 0xCB равны 11, и эта пара указывает, что это 4-байтовая величина;
  • первый байт второго заголовка равен 0x01; этот байт идентифицирует этот заголовок как «Имя»; первые два бита 0x01 равны 00, что означает, что содержимое этого заголовка представляет собой строку Юникода, завершающуюся нулем (в форме UCS-2 ), с префиксом количества байтов, из которых она состоит (0x00 0x1e).

Возможный ответ, содержащий запрошенные данные, может быть:

Ответ Поля Код ответа ОК, Конец 0xA0
Длина общая длина объекта 0x00 0x35
Заголовки Конец тела «НАЧАЛО: VCARD...» 0x49 0x00 0x2F 0x42 0x45 0x47 0x49 0x4e 0x3a 0x56 0x43 0x41 0x52 0x44

В этом примере предполагается, что телефонная книга достаточно коротка, чтобы содержаться в одном объекте ответа. Единственный заголовок имеет идентификатор 0x49, что означает, что это «Конец тела», последний фрагмент информации (в данном случае также единственный). Первые два бита 0x49 равны 01, что означает, что содержимое этого заголовка представляет собой данные с префиксом длины: два следующих байта 0x00 и 0x2F сообщают длину этих данных (в десятичном формате 47), последующие - это данные, в этом случай, когда телефонная книга содержит только пустую визитную карточку размером 47 байт.

В этом примере показана одна команда GET и ее ответ, причем единственными заголовками, которые используются, являются идентификатор соединения, имя и конец тела. Перед его выдачей должна была быть отправлена ​​команда CONNECT для установления некоторых параметров соединения, включая идентификатор соединения. Другие команды: put, setpath, action, Abort, Disconnect. Некоторые другие примечательные заголовки включают: тип, время, описание, цель.

После того, как клиент (например, компьютер) подключается к серверу (например, мобильному телефону), типичный сеанс состоит в том, что клиент отправляет несколько объектов и получает на них ответы от сервера. В качестве примера:

  • CONNECT: одно из полей указывает максимальный размер пакетов, которые может получить клиент; заголовок TARGET указывает тип услуги, которую ожидает клиент (просмотр файлов, синхронизация-ml, доступ к телефонной книге); ответ сервера с максимальной длиной пакета, идентификатором соединения и другими данными
  • GET: клиент запрашивает файл, указывая идентификатор соединения, имя файла и/или его тип; сервер отвечает содержимым файла или только его частью; в последнем случае клиент должен отправить другие объекты GET, чтобы получить остальную часть файла.
  • SETPATH: клиент сообщает серверу переключиться на другую папку с файлами, указывая идентификатор соединения и имя папки в двух заголовках.
  • GET: клиент запрашивает список содержимого папки, отправляя объект с идентификатором соединения и соответствующим заголовком TYPE (например, «x-obex/folder-listing» для передачи файлов, «x-bt/vcard-listing» для доступ к телефонной книге)
  • PUT: клиент отправляет файл на сервер; если он слишком велик, чтобы уместиться в один пакет, сервер запросит следующую часть с ответом CONTINUE.
  • ОТКЛЮЧИТЬ: клиент сообщает серверу, что закрывает сеанс.

Обмен может существенно отличаться в зависимости от сервиса. Например, SyncML не использует SETPATH, а передача OBEX состоит из просто CONNECT (без заголовка TARGET), PUT и необязательного DISCONNECT.

Протоколы

[ редактировать ]

Следующие протоколы работают через OBEX или имеют для этого привязки:

ОБЕКС Пуш
Передает файл от отправителя запроса получателю; отправляется объект CONNECTION, не содержащий цели, затем используется PUT для передачи файла
Протокол передачи файлов OBEX
Сохраняет и извлекает файлы аналогично FTP . Целевой заголовок объекта CONNECTION: {0xF9, 0xEC, 0x7B, 0xC4, 0x95, 0x3C, 0x11, 0xD2, 0x98, 0x4E, 0x52, 0x54, 0x00, 0xDC, 0x9E, 0x09}; ответ содержит идентификатор соединения, который будет использоваться в последующих объектах GET, PUT, SETPATH ​​и ACTION.
Доступ к телефонной книге
Аналогично передаче файлов, но использует цель {0x79, 0x61, 0x35, 0xF0, 0xF0, 0xC5, 0x11, 0xD8, 0x09, 0x66, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66}; записи телефонной книги могут быть перечислены (с различными возможными порядками и фильтрами) и извлечены из определенных каталогов в разделе telecom/ с помощью GET и SETPATH.
ИрМЦ
IrMC был разработан для обмена записями телефонной книги, календаря, цифровыми визитными карточками и списками дел . В форме без установления соединения для передачи данных используется один PUT; в противном случае различные файлы и папки внутри telecom/ могут быть извлечены или отправлены; целевой заголовок {'I', 'R', 'M', 'C', '-', 'S', 'Y', 'N', 'C'} может использоваться в запросах GET для различения типа использовано индексации
СинкМЛ
SyncML может синхронизировать телефонные книги, календари, заметки и другие данные. В привязке OBEX целью объекта CONNECT является {'S', 'Y', 'N', 'C', 'M', 'L', '-', 'S', 'Y', ' Н', 'С'}; тогда сеанс состоит из последовательности пар PUT-GET, в которых XML или WBXML . по очереди отправляются и принимаются безымянные файлы

Реализации

[ редактировать ]

Дополнительный пакет javax.obex в API Java для Bluetooth обеспечивает реализацию OBEX в Java . [1]

ОпенОбекс

[ редактировать ]

это реализация OBEX с открытым исходным кодом на C. OpenObex — Он предоставляет функции для подключения через IrDA , Bluetooth , USB и TCP/IP , построения объектов и обработки полученных данных. Пример схемы клиентского приложения:

void callback_function(...) {  /* process received data */}int main() {  OBEX_Init(..., callback_function);  OBEX_TransportConnect(...);  object = OBEX_ObjectNew(...);  OBEX_ObjectAddHeader(object, ...);  OBEX_ObjectAddHeader(object, ...);  OBEX_Request(..., object);  while (...)    OBEX_HandleInput(...)  object = OBEX_ObjectNew(...);  OBEX_ObjectAddHeader(object, ...);  OBEX_Request(..., object);  while (...)    OBEX_HandleInput(...)  /* ... */  OBEX_TransportDisconnect(handle);  OBEX_Cleanup(handle);}

Объекты отправляются OBEX_Request. После звонка OBEX_HandleInput, полученные данные обрабатываются в функции обратного вызова (которая была указана при вызове OBEX_Init). Функция обратного вызова может определить, был ли получен ответ полностью и, следовательно, может ли основная программа выйти из while цикл, который он выполняет.

ПиОБЕКС и ноБЕКС

[ редактировать ]

PyOBEX обеспечивает частичную поддержку OBEX в Python . [2] noBEX — это ответвление PyOBEX с более полной поддержкой OBEX и поддержкой профиля Bluetooth Hands Free для облегчения тестирования OBEX в автомобильных информационно-развлекательных системах. [3]

OBEX является основой для многих «профилей» более высокого уровня:

Профили
Классификация Профиль
ИК-порт Профиль «Наведи и стреляй»
инфракрасных финансовых сообщений (IrFM) Профиль
Bluetooth-сигнал Общий профиль обмена объектами
Профиль Object Push (передача с телефона на телефон)
Профиль передачи файлов (передача с телефона на ПК)
Профиль синхронизации
Базовый профиль визуализации
Базовый профиль печати
СОБСТВЕННЫЙ SyncML Привязка

Поддерживаемые устройства

[ редактировать ]

См. также

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b8a9e35a22896ab35736f5696c6f124f__1713698820
URL1:https://arc.ask3.ru/arc/aa/b8/4f/b8a9e35a22896ab35736f5696c6f124f.html
Заголовок, (Title) документа по адресу, URL1:
OBject EXchange - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)