Está en la página 1de 42

OBEX

OBject EXchange

Carmelo Cascone

1
OBEX - OBject EXchange

Índice
‣ Introducción a OBEX
‣ Modelo de objetos
‣ Protocolo
‣ OBEX sobre RFCOMM
‣ OBEX sobre TCP/IP
‣ Conclusión

2
OBEX - OBject EXchange

Introducción a OBEX

3
OBEX - OBject EXchange

Introducción a OBEX
‣ Protocolo de sesión que facilita el
intercambio de objetos binarios entre
dispositivos
‣ Introducido y mantenido por la
Infrared Data Association (IrDA)
por esto se conoce también como IrOBEX

‣ Adoptado por el Bluetooth SIG

Introducción a OBEX 4
OBEX - OBject EXchange

Introducción a OBEX (2)


‣ Objetivo del protocolo OBEX es permitir
el intercambio de objetos de datos.
‣ Ejemplo típicos de utilizo:
๏ Envio de datos de contacto (vCard)
๏ Sincronización de calendarios en varios
dispositivos
๏ Transferencia de archivos

Introducción a OBEX 5
OBEX - OBject EXchange

Introducción a OBEX (3)

‣ Los perfiles que utilizan OBEX son:


๏ Generic Object Exchange Profile
๏ Object Push Profile
๏ File Transfer Profile
๏ Synchronization Profile

Introducción a OBEX 6
OBEX - OBject EXchange

Especificación OBEX
‣ La especificación OBEX proporciona:
๏ Modelo para la representación de los objetos
๏ Protocolo de sesión, que estructura el diálogo
entre dos dispositivos
‣ Sigue el paradigma cliente/servidor de
petición-respuesta para el formato de la
conversación

Introducción a OBEX 7
OBEX - OBject EXchange

Arquitectura

Introducción a OBEX 8
OBEX - OBject EXchange

Modelo de objetos

9
OBEX - OBject EXchange

Objetos en OBEX
‣ El modelo de objeto en OBEX maneja
información sobre el objeto (ej. el tipo) y el
objeto en sí
‣ Los objetos son representados mediante una
secuencia de headers

HEADER ID HEADER ID HEADER ID

VALUE VALUE VALUE

Modelo de objeto en OBEX

Modelo de objetos 10
OBEX - OBject EXchange

Header

‣ Header ID
Describe lo que el header contiene y cómo se
formatea
‣ Value
Se compone de uno o más byte en el formato y el
sentido especificado por el Header ID

Modelo de objetos 11
OBEX - OBject EXchange

Headers

Modelo de objetos 12
OBEX - OBject EXchange

Ejemplo de objeto
Name Type Dimension

ejemplo.txt text 14

Body

Esto es un ejemplo de como se estructura un objeto en OBEX.

Modelo de objetos 13
OBEX - OBject EXchange

Protocolo

14
OBEX - OBject EXchange

Protocolo de sesión
‣ Las operaciones OBEX están formadas por
pares de petición-respuesta
Después de enviar una petición, el cliente espera una
respuesta del servidor antes de emitir una nueva petición

1 byte 2 byte N byte

Formato de OPERATION
petición LENGHT Otros datos requeridos u opcionales
CODE

1 byte 2 byte N byte

Formato de RESPONSE
LENGHT Otros datos requeridos u opcionales
respuesta CODE

Protocolo 15
OBEX - OBject EXchange

Operaciones OBEX
Connect

Disconnect

Put

Get
SetPath
Abort

Protocolo 16
OBEX - OBject EXchange

Connect
‣ Ante de transmitir un objeto es necesario
establecer una conexión
‣ La sesión se inicia mediante el envío de una
petición de conexión Connect

byte 0 byte 1 y 2 byte 3 byte 4 byte 5 y 6 byte de 7 a N


OPCODE LENGHT OBEX VERSION FLAGS MAXIMUM PACKET Headers opcionales
NUMBER LENGHT

Formato de un petición de conexión enviada por el cliente

Protocolo 17
OBEX - OBject EXchange

Connect
‣ El servidor acepta la conexión mediante el
envío de una respuesta afirmativa al cliente
‣ El envío de cualquier otra respuesta indica
que la conexión no se realice

byte 0 byte 1 y 2 byte 3 byte 4 byte 5 y 6 byte de 7 a N


RESPONSE CODE LENGHT OBEX VERSION FLAGS MAXIMUM PACKET Headers opcionales
NUMBER LENGHT

Formato de un respuesta de conexión enviada por el servidor

Protocolo 18
OBEX - OBject EXchange

Ejemplo de Connect
Valor Descripción Valor Descripción
0x80 CONNECT 0xA0 SUCCESS
0x0011 Paquete de longitud = 17 byte 0x0007 Paquete de longitud = 7 byte
0x10 Versión 1.0 de OBEX 0x10 Versión 1.0 de OBEX
0x00 Flags: todos 0 para esta versión de OBEX 0x00 Flags
0x2000 8KBytees el máximo tamaño de paquete que 0x0400 1KBytees el máximo tamaño de paquete que
el cliente OBEX puede aceptar el servidor OBEX puede aceptar

0xC0 Header ID = Count


Ejemplo de respuesta
0x00000004 Se van a enviar 4 objetos

0xC3 Header ID = Lenght

0x0000F483 F483 byte (hex) es el tamaño del los objetos


que se envían

Ejemplo de petición

Protocolo 19
OBEX - OBject EXchange

Disconnect
‣ La desconexión de una sesión OBEX se
produce cuando:
๏ Se cierra la aplicación
๏ La aplicación quiere cambiar el equipo al que se
envían las peticiones
byte 0 byte 1 y 2 byte de 3 a N
OPCODE LENGHT Headers opcionales

Formato de un petición de desconexión enviada por el cliente

Protocolo 20
OBEX - OBject EXchange

Disconnect
‣ Una petición de desconexión no puede ser
rechazada por el servidor
‣ El servidor siempre tiene que enviar una
respuesta

byte 0 byte 1 y 2 byte de 3 a N


RESPONSE CODE LENGHT Headers opcionales

Formato de la respuesta a una petición de desconexión enviada por el cliente

Protocolo 21
OBEX - OBject EXchange

Put
‣ Se utiliza para enviar un objeto OBEX
‣ Consiste de uno o más paquetes,
dependiendo del tamaño del objeto
transferido, y de cuánto es el tamaño del
paquete
byte 0 byte 1 y 2 byte de 3 a N
OPCODE LENGHT Secuencia de headers de el objeto
0x81

Formato de un petición Put enviada por el cliente

Protocolo 22
OBEX - OBject EXchange

Put
‣ Un paquete de respuesta del servidor es
necesario para cada petición
‣ No está permitida una sola respuesta para
varios paquetes de petición, aunque
representan un solo objeto
byte 0 byte 1 y 2 byte de 3 a N
RESPONSE CODE LENGHT Headers opcionales

Formato de un respuesta Put enviada por el servidor

Protocolo 23
OBEX - OBject EXchange

Ejemplo de Put (1)


Valor Descripción Valor Descripción
0x02 PUT 0x90 CONTINUE
0x0422 Paquete de longitud 1058 Byte 0x0003 Longitud del paquete de respuesta
0x01 Header Id Name
Ejemplo de respuesta
0x0017 Longitud del header Name (2 Byte por cada
carácter Unicode)
ejemplo.txt Nombre del objeto (null terminated Unicode)
0xC3 Header ID: Lenght

0x00001000 Objeto de longitud 4 KByte

0x48 Header ID: Body

0x0403 Longitud del header Body 1KByte


0x... 1 Kbyte de datos

Ejemplo de petición

Protocolo 24
OBEX - OBject EXchange

Ejemplo de Put (2)


Valor Descripción Valor Descripción
0x02 PUT 0x90 CONTINUE
0x0406 Paquete de longitud 1030 Byte 0x0003 Longitud del paquete de respuesta
0x48 Header ID: Body
Ejemplo de respuesta
0x0403 Longitud del header Body 1KByte

0x... 1 Kbyte de datos

Ejemplo de petición

Protocolo 25
OBEX - OBject EXchange

Ejemplo de Put (3)


Valor Descripción Valor Descripción
0x82 PUT (Final bit) 0xA0 SUCCESS
0x0406 Paquete de longitud 1030 Byte 0x0003 Longitud del paquete de respuesta
0x49 Header Id End-of-Body
Ejemplo de respuesta
0x0403 Longitud del header End-of-Body

0x... Ultimo 1 Kbyte de datos

Ejemplo de petición

Protocolo 26
OBEX - OBject EXchange

Get
‣ Se utiliza para obtener un objeto OBEX
‣ El objeto a obtener es identificado por el
header Name, que puede omitirse si el
servidor ya sabe qué enviar

byte 0 byte 1 y 2 byte de 3 a N


OPCODE LENGHT Secuencia de headers que empieza por Name

Formato de un petición Get enviada por el cliente

Protocolo 27
OBEX - OBject EXchange

Get
‣ El objeto se devuelve como una secuencia de
headers, de la misma manera que en una Put
‣ El cliente tiene que enviar un paquete de
petición por cada paquete de respuesta

byte 0 byte 1 y 2 byte de 3 a N


RESPONSE CODE LENGHT Secuencia de headers de el objeto

Formato de un respuesta Get enviada por el servidor

Protocolo 28
OBEX - OBject EXchange

Abort

‣ Se utiliza cuando el cliente decide de poner


fin a una operación de múltiples paquetes
(como la Put) antes su fin natural
‣ Si el servidor no contesta se cierra la
conexión

Protocolo 29
OBEX - OBject EXchange

SetPath
‣ Se utiliza para establecer la "carpeta actual"
en el lado receptor en el caso que la
trasferencia requiere informaciones
adicionales sobre las carpetas
‣ Ejemplo: cuando se envía un conjunto de
carpetas anidadas, SetPath se utiliza para
crear la estructura de carpetas en el lado
receptor

Protocolo 30
OBEX - OBject EXchange

OBEX sobre RFCOMM

31
OBEX - OBject EXchange

Requisitos
1. El dispositivo que soporte OBEX debe ser capaz de
funcionar como cliente, servidor, o ambos
2. Todos los servidores OBEX que se ejecutan
simultáneamente en un dispositivo deben utilizar
diferentes canales RFCOMM
3. Las aplicaciones que usan OBEX deben ser capaz de
registrar las informaciónes adecuada sobre el Service
Discovery Database

OBEX sobre RFCOMM 32


OBEX - OBject EXchange

Iniciación del servidor

‣ Antes de que el servidor OBEX está listo


para recibir peticiones de conexión deben
cumplirse algunos requisitos:
1. El servidor debe abrir un canal RFCOMM
2. Debe registrar sus características en el Service
Discovery Database.

OBEX sobre RFCOMM 33


OBEX - OBject EXchange

Conexión
1. Utilizando el protocolo SD (Service Discovery) el
cliente obtiene las informaciones sobre el
servidor necesarias para establecer la conexión
(ej. el canal RFCOMM)
2. El cliente usa el canal RFCOMM descubierto
para establecer la conexión RFCOMM
3. El cliente puede ahora enviar la petición de
conexión al servidor, para establecer una sesión
OBEX

OBEX sobre RFCOMM 34


OBEX - OBject EXchange

OBEX sobre TCP/IP

35
OBEX - OBject EXchange

Requisitos
1. El dispositivo que soporte OBEX debe ser capaz de
funcionar como cliente, servidor, o ambos
2. Se recomienda el utilizo del puerto TCP 650 elegido
por el IANA para el protocolo OBEX
3. El cliente tiene que elegir un puerto entre 1023 y
65356
4. Las aplicaciones que usan OBEX deben ser capaz de
registrar las informaciones adecuada sobre el Service
Discovery DB

OBEX sobre TCP/IP 36


OBEX - OBject EXchange

Iniciación del servidor


‣ Antes de que el servidor OBEX está listo
para recibir peticiones de conexión deben
cumplirse algunos requisitos:
1. El servidor debe abrir el puerto TCP 650 o otro
mayor de 1023
2. Debe registrar sus características en el Service
Discovery DB

OBEX sobre TCP/IP 37


OBEX - OBject EXchange

Conexión
1. Utilizando el protocolo SD (Service Discovery) el
cliente obtiene las informaciones sobre el
servidor necesarias para establecer la conexión
(ej. el puerto TCP)
2. El cliente elige un numero de puerto y crea un
socket de comunicación con el servidor a través
del puerto TCP descubierto
3. El cliente puede ahora enviar la petición de
conexión al servidor

OBEX sobre TCP/IP 38


OBEX - OBject EXchange

Conclusión

39
OBEX - OBject EXchange

Conclusion

‣ Los objetos en OBEX son representados


como una secuencia de headers
‣ Protocolo basado en el modelo
cliente/servidor petición-respuesta con
paquetes binarios
‣ Protocolo de sesión Connection-Oriented

Introducción a OBEX 40
OBEX - OBject EXchange

Interoperabilidad con IrDA


‣ Originalmente, IrOBEX fue desarrollado dentro de
la jerarquía de protocolos IrDA
‣ Sin embargo, puede aparecer por encima de otras
capas de transporte de Bluetooth, como RFCOMM
y TCP/IP
‣ En Bluetooth, OBEX ofrece las mismas
características para las aplicaciones como dentro de
la jerarquía de protocolos IrDA
‣ Las aplicaciones pueden trabajar sobre la pila de
protocolos Bluetooth, así como la pila IrDA
Introducción a OBEX 41
42

También podría gustarte