introducción al protocolo obex
TRANSCRIPT
OBEXOBject EXchange
Carmelo Cascone
1
Índice
‣ Introducción a OBEX
‣ Modelo de objetos
‣ Protocolo
‣ OBEX sobre RFCOMM
‣ OBEX sobre TCP/IP
‣ Conclusión
OBEX - OBject EXchange
2
Introducción a OBEX
OBEX - OBject EXchange
3
Introducción a OBEX
‣ Protocolo de sesión que facilita el intercambio de objetos binarios entre dispositivos
‣ Introducido y mantenido por laInfrared Data Association (IrDA)por esto se conoce también como IrOBEX
‣ Adoptado por el Bluetooth SIG
OBEX - OBject EXchange
4Introducción a OBEX
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
OBEX - OBject EXchange
5Introducción a OBEX
Introducción a OBEX (3)
‣ Los perfiles que utilizan OBEX son:
๏ Generic Object Exchange Profile
๏ Object Push Profile
๏ File Transfer Profile
๏ Synchronization Profile
OBEX - OBject EXchange
6Introducción a OBEX
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
OBEX - OBject EXchange
7Introducción a OBEX
Arquitectura
OBEX - OBject EXchange
8Introducción a OBEX
Modelo de objetos
OBEX - OBject EXchange
9
Objetos en OBEX
OBEX - OBject EXchange
10
‣ 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
VALUE
HEADER ID
VALUE
HEADER ID
VALUE
Modelo de objeto en OBEX
Modelo de objetos
Header
‣ Header IDDescribe lo que el header contiene y cómo se formatea
‣ ValueSe compone de uno o más byte en el formato y el sentido especificado por el Header ID
OBEX - OBject EXchange
11Modelo de objetos
Headers
OBEX - OBject EXchange
12Modelo de objetos
Ejemplo de objeto
OBEX - OBject EXchange
13
Name
ejemplo.txt
Type
text
Dimension
14
Body
Esto es un ejemplo de como se estructura un objeto en OBEX.
Modelo de objetos
Protocolo
OBEX - OBject EXchange
14
Protocolo de sesión
‣ Las operaciones OBEX están formadas por pares de petición-respuestaDespués de enviar una petición, el cliente espera una respuesta del servidor antes de emitir una nueva petición
OBEX - OBject EXchange
15
OPERATIONCODE
LENGHT Otros datos requeridos u opcionales
1 byte 2 byte N byte
RESPONSECODE
LENGHT Otros datos requeridos u opcionales
1 byte 2 byte N byte
Formato de petición
Formato de respuesta
Protocolo
Operaciones OBEX
OBEX - OBject EXchange
16
Connect
Disconnect
Put
Get
SetPath
Abort
Protocolo
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
OBEX - OBject EXchange
17
byte 0 byte 1 y 2 byte 3 byte 4 byte 5 y 6 byte de 7 a N
OPCODE LENGHT OBEX VERSION NUMBER
FLAGS MAXIMUM PACKET LENGHT
Headers opcionales
Formato de un petición de conexión enviada por el cliente
Protocolo
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
OBEX - OBject EXchange
18
byte 0 byte 1 y 2 byte 3 byte 4 byte 5 y 6 byte de 7 a N
RESPONSE CODE LENGHT OBEX VERSION NUMBER
FLAGS MAXIMUM PACKET LENGHT
Headers opcionales
Formato de un respuesta de conexión enviada por el servidor
Protocolo
Ejemplo de Connect
OBEX - OBject EXchange
19
Ejemplo de petición
Valor Descripción
0x80 CONNECT
0x0011 Paquete de longitud = 17 byte
0x10 Versión 1.0 de OBEX
0x00 Flags: todos 0 para esta versión de OBEX
0x2000 8KBytees el máximo tamaño de paquete que el cliente OBEX puede aceptar
0xC0 Header ID = Count
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
Valor Descripción
0xA0 SUCCESS
0x0007 Paquete de longitud = 7 byte
0x10 Versión 1.0 de OBEX
0x00 Flags
0x0400 1KBytees el máximo tamaño de paquete que el servidor OBEX puede aceptar
Ejemplo de respuesta
Protocolo
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
OBEX - OBject EXchange
20
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
Disconnect‣ Una petición de desconexión no puede ser
rechazada por el servidor
‣ El servidor siempre tiene que enviar una respuesta
OBEX - OBject EXchange
21
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
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
OBEX - OBject EXchange
22
Formato de un petición Put enviada por el cliente
0x81
byte 0 byte 1 y 2 byte de 3 a N
OPCODE LENGHT Secuencia de headers de el objeto
Protocolo
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
OBEX - OBject EXchange
23
Formato de un respuesta Put enviada por el servidor
byte 0 byte 1 y 2 byte de 3 a N
RESPONSE CODE LENGHT Headers opcionales
Protocolo
Ejemplo de Put (1)
OBEX - OBject EXchange
24
Ejemplo de petición
Valor Descripción
0x02 PUT
0x0422 Paquete de longitud 1058 Byte
0x01 Header Id Name
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
Valor Descripción
0x90 CONTINUE
0x0003 Longitud del paquete de respuesta
Ejemplo de respuesta
Protocolo
Ejemplo de Put (2)
OBEX - OBject EXchange
25
Ejemplo de petición
Valor Descripción
0x02 PUT
0x0406 Paquete de longitud 1030 Byte
0x48 Header ID: Body
0x0403 Longitud del header Body 1KByte
0x... 1 Kbyte de datos
Valor Descripción
0x90 CONTINUE
0x0003 Longitud del paquete de respuesta
Ejemplo de respuesta
Protocolo
Ejemplo de Put (3)
OBEX - OBject EXchange
26
Ejemplo de petición
Valor Descripción
0x82 PUT (Final bit)
0x0406 Paquete de longitud 1030 Byte
0x49 Header Id End-of-Body
0x0403 Longitud del header End-of-Body
0x... Ultimo 1 Kbyte de datos
Valor Descripción
0xA0 SUCCESS
0x0003 Longitud del paquete de respuesta
Ejemplo de respuesta
Protocolo
Get
OBEX - OBject EXchange
27
Formato de un petición Get enviada por el cliente
byte 0 byte 1 y 2 byte de 3 a N
OPCODE LENGHT Secuencia de headers que empieza por Name
‣ 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
Protocolo
Get
OBEX - OBject EXchange
28
Formato de un respuesta Get enviada por el servidor
‣ 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
Protocolo
Abort
OBEX - OBject EXchange
29
‣ 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
SetPath
OBEX - OBject EXchange
30
‣ 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
OBEX sobre RFCOMM
OBEX - OBject EXchange
31
Requisitos
OBEX - OBject EXchange
32
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
Iniciación del servidor
OBEX - OBject EXchange
33
‣ 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
Conexión
OBEX - OBject EXchange
34
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
OBEX sobre TCP/IP
OBEX - OBject EXchange
35
Requisitos
OBEX - OBject EXchange
36
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
Iniciación del servidor
OBEX - OBject EXchange
37
‣ 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
Conexión
OBEX - OBject EXchange
38
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
Conclusión
OBEX - OBject EXchange
39
Conclusion
‣ Los objetos en OBEX son representados como una secuencia de headers
‣ Protocolo basado en el modelocliente/servidor petición-respuesta con paquetes binarios
‣ Protocolo de sesión Connection-Oriented
OBEX - OBject EXchange
40Introducción a OBEX
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
OBEX - OBject EXchange
41Introducción a OBEX
42