Introducción al protocolo OBEX

Post on 03-Jul-2015

451 views 2 download

Tags:

Transcript of Introducción al protocolo OBEX

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