This article needs additional citations for verification .(September 2014) |
OBEX (abbreviation of OBject EXchange, also termed IrOBEX) is a communication protocol that facilitates the exchange of binary objects between devices. It is maintained by the Infrared Data Association but has also been adopted by the Bluetooth Special Interest Group and the SyncML wing of the Open Mobile Alliance (OMA). One of OBEX's earliest popular applications was in the Palm III. This PDA and its many successors use OBEX to exchange business cards, data, even applications.
Although OBEX was initially designed for infrared, it has now been adopted by Bluetooth, and is also used over RS-232, USB, WAP and in devices such as Livescribe smartpens.
OBEX is similar in design and function to HTTP in providing the client with a reliable transport for connecting to a server and may then request or provide objects. But OBEX differs in many important respects:
OBEX works by exchanging objects, which are used for a variety of purposes: establishing the parameters of a connection, sending and requesting data, changing the current path or the attributes of a file.
Objects are fields and headers. As an example, the following may be the object used for requesting the phonebook from a mobile:
Object | Fields | Command | GET, Final | 0x83 |
---|---|---|---|---|
Length | total length of object | 0x00 0x29 | ||
Headers | Connection ID | 1 | 0xCB 0x00 0x00 0x00 0x01 | |
Name | "telecom/pb.vcf" | 0x010x00 0x1e 0x00 0x74 0x00 0x65 0x00 0x6c 0x00 0x65 0x00 0x63 0x00 0x6f 0x00 0x6d 0x00 0x2f 0x00 0x70 0x00 0x62 0x00 0x2e 0x00 0x76 0x00 0x63 0x00 0x66 0x00 0x00 |
This object contains two fields (command and length) and two headers. The first field (command) specifies that it is a request for data (GET). The second field is the total size of the object, including the two fields.
This object also contains two headers, specifically a "Connection ID" and a "Name". The first byte of each header is the header's name and its content type. In this case:
A possible response, containing the requested data, could be:
Response | Fields | Response code | OK, Final | 0xA0 |
---|---|---|---|---|
Length | total length of object | 0x00 0x35 | ||
Headers | End-of-Body | "BEGIN:VCARD..." | 0x490x00 0x2F 0x42 0x45 0x47 0x49 0x4e 0x3a 0x56 0x43 0x41 0x52 0x44 |
In this example, the phonebook is assumed short enough to be contained in a single response object. The only header has 0x49 as its identifier, meaning that it is an "End of Body", the last chunk of information (also the only one, in this case). The first two bits of 0x49 are 01, meaning that the content of this header is length-prefixed data: the two next bytes 0x00 0x2F tells the length of this data (in decimal, 47), the succeeding ones are the data, in this case a phonebook comprising only an empty vCard of 47 bytes.
This example shows a single GET command and its response, the only headers involved being connection id, name and end-of-body. Before issuing it, a CONNECT command should have been sent for establishing some parameters of the connection, including the connection id. Other commands are: put, setpath, action, abort, disconnect. Some other notable headers include: type, time, description, target.
After the client (e.g., computer) connects to the server (e.g., mobile), a typical session consists in the client sending a number of objects and getting their responses from the server. As an example:
The exchange may differ significantly depending on the service. For example, SyncML does not use SETPATH, while an OBEX push is made of just CONNECT (without a TARGET header), PUT and an optional DISCONNECT.
The following protocols runs over OBEX, or have bindings to do so:
Optional package javax.obex in Java APIs for Bluetooth provides an implementation of OBEX in Java. [1]
OpenObex is an open-source implementation of OBEX in C. It provides functions for connecting over IrDA, Bluetooth, USB and TCP/IP, building objects and handling received data. An example schema of a client application is:
voidcallback_function(...){/* process received data */}intmain(){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);}
Objects are sent by OBEX_Request
. After calling OBEX_HandleInput
, received data is processed in the callback function (which was specified when calling OBEX_Init
). The callback function can determine whether the response has been completely received, and therefore whether the main program can exit from the while
loop it is executing.
PyOBEX provides partial support for OBEX in Python. [2] nOBEX is a fork of PyOBEX with more complete OBEX support, and support for the Bluetooth Hands Free Profile to facilitate OBEX testing on automotive infotainment systems. [3]
OBEX is the foundation for many higher-layer "profiles":
Classification | Profile |
---|---|
IrDA | Point and Shoot profile |
Infrared Financial Messaging (IrFM) profile | |
Bluetooth SIG | Generic Object Exchange Profile |
Object Push Profile (phone to phone transfers) | |
File Transfer Profile (phone to PC transfers) | |
Synchronization Profile | |
Basic Imaging Profile | |
Basic Printing Profile | |
OMA | SyncML binding |
HTTP is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, where hypertext documents include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen in a web browser.
A personal digital assistant (PDA) is a multi-purpose mobile device which functions as a personal information manager. Following a boom in the 1990s and 2000s, PDA's were mostly displaced by the widespread adoption of more highly capable smartphones, in particular those based on iOS and Android in the late 2000s, and thus saw a rapid decline.
The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data connections between the client and the server. FTP users may authenticate themselves with a plain-text sign-in protocol, normally in the form of a username and password, but can connect anonymously if the server is configured to allow it. For secure transmission that protects the username and password, and encrypts the content, FTP is often secured with SSL/TLS (FTPS) or replaced with SSH File Transfer Protocol (SFTP).
SOCKS is an Internet protocol that exchanges network packets between a client and server through a proxy server. SOCKS5 optionally provides authentication so only authorized users may access a server. Practically, a SOCKS server proxies TCP connections to an arbitrary IP address, and provides a means for UDP packets to be forwarded. A SOCKS server accepts incoming client connection on TCP port 1080, as defined in RFC 1928.
SyncML, or Synchronization Markup Language, was originally developed as a platform-independent standard for information synchronization. Established by the SyncML Initiative, this project has evolved to become a key component in data synchronization and device management. The project is currently referred to as Open Mobile Alliance Data Synchronization and Device Management. The purpose of SyncML is to offer an open standard as a replacement for existing data synchronization solutions; which have mostly been somewhat vendor, application, or operating system specific. SyncML 1.0 specification was released on December 17, 2000, and 1.1 on February 26, 2002.
Modbus or MODBUS is a client/server data communications protocol in the application layer. It was originally designed for use with programmable logic controllers (PLCs), but has become a de facto standard communication protocol for communication between industrial electronic devices in a wide range of buses and networks.
In classic Mac OS System 7 and later, and in macOS, an alias is a small file that represents another object in a local, remote, or removable file system and provides a dynamic link to it; the target object may be moved or renamed, and the alias will still link to it. In Windows, a "shortcut", a file with a .lnk extension, performs a similar function.
Real-Time Messaging Protocol (RTMP) is a communication protocol for streaming audio, video, and data over the Internet. Originally developed as a proprietary protocol by Macromedia for streaming between Flash Player and the Flash Communication Server, Adobe has released an incomplete version of the specification of the protocol for public use.
CANopen is a communication protocol stack and device profile specification for embedded systems used in automation. In terms of the OSI model, CANopen implements the layers above and including the network layer. The CANopen standard consists of an addressing scheme, several small communication protocols and an application layer defined by a device profile. The communication protocols have support for network management, device monitoring and communication between nodes, including a simple transport layer for message segmentation/desegmentation. The lower level protocol implementing the data link and physical layers is usually Controller Area Network (CAN), although devices using some other means of communication can also implement the CANopen device profile.
Nokia PC Suite is a discontinued software package used to establish an interface between Nokia mobile devices and computers that run the Microsoft Windows operating system. Its first release was in 1997, originally called Nokia Data Suite. It was replaced by Nokia Suite and integrated into the Ovi service suite.
Windows Live Mesh is a discontinued free-to-use Internet-based file synchronization application by Microsoft designed to allow files and folders between two or more computers to be in sync with each other on Windows and Mac OS X computers or the Web via SkyDrive. Windows Live Mesh also enabled remote desktop access via the Internet.
OMA Device Management is a device management protocol specified by the Open Mobile Alliance (OMA) Device Management (DM) Working Group and the Data Synchronization (DS) Working Group. The current approved specification of OMA DM is version 1.2.1, the latest modifications to this version released in June 2008. The candidate release 2.0 was scheduled to be finalized in September 2013.
In computing, a shared resource, or network share, is a computer resource made available from one host to other hosts on a computer network. It is a device or piece of information on a computer that can be remotely accessed from another computer transparently as if it were a resource in the local machine. Network sharing is made possible by inter-process communication over the network.
Action Message Format (AMF) is a binary format used to serialize object graphs such as ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service, usually a Flash Media Server or third party alternatives. The Actionscript 3 language provides classes for encoding and decoding from the AMF format.
The Data Stream Interface (DSI) is a session layer used to carry Apple Filing Protocol traffic over Transmission Control Protocol.
Exchange ActiveSync is a proprietary protocol by Microsoft, designed for the synchronization of email, contacts, calendar, tasks, and notes from a messaging server to a smartphone or other mobile devices. The protocol also provides mobile device management and policy controls. The protocol is based on XML. The mobile device communicates over HTTP or HTTPS.
Constrained Application Protocol (CoAP) is a specialized UDP-based Internet application protocol for constrained devices, as defined in RFC 7252. It enables those constrained devices called "nodes" to communicate with the wider Internet using similar protocols. CoAP is designed for use between devices on the same constrained network, between devices and general nodes on the Internet, and between devices on different constrained networks both joined by an internet. CoAP is also being used via other mechanisms, such as SMS on mobile communication networks.
MOBILedit Forensic is a digital forensics product by Compelson Labs that searches, examines and report on data from GSM/CDMA/PCS cell phone devices. MOBILedit connects to cell phone devices via an Infrared (IR) port, a Bluetooth link, Wi-Fi, or a cable interface. After connectivity has been established, the phone model is identified by its manufacturer, model number, and serial number (IMEI) and with a corresponding picture of the phone.