introducción al protocolo obex

42
OBEX OBject EXchange Carmelo Cascone 1

Upload: ccascone

Post on 03-Jul-2015

456 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Introducción al protocolo OBEX

OBEXOBject EXchange

Carmelo Cascone

1

Page 2: Introducción al protocolo OBEX

Índice

‣ Introducción a OBEX

‣ Modelo de objetos

‣ Protocolo

‣ OBEX sobre RFCOMM

‣ OBEX sobre TCP/IP

‣ Conclusión

OBEX - OBject EXchange

2

Page 3: Introducción al protocolo OBEX

Introducción a OBEX

OBEX - OBject EXchange

3

Page 4: Introducción al protocolo OBEX

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

Page 5: Introducción al protocolo 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

Page 6: Introducción al protocolo 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

Page 7: Introducción al protocolo 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

Page 8: Introducción al protocolo OBEX

Arquitectura

OBEX - OBject EXchange

8Introducción a OBEX

Page 9: Introducción al protocolo OBEX

Modelo de objetos

OBEX - OBject EXchange

9

Page 10: Introducción al protocolo OBEX

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

Page 11: Introducción al protocolo OBEX

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

Page 12: Introducción al protocolo OBEX

Headers

OBEX - OBject EXchange

12Modelo de objetos

Page 13: Introducción al protocolo OBEX

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

Page 14: Introducción al protocolo OBEX

Protocolo

OBEX - OBject EXchange

14

Page 15: Introducción al protocolo OBEX

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

Page 16: Introducción al protocolo OBEX

Operaciones OBEX

OBEX - OBject EXchange

16

Connect

Disconnect

Put

Get

SetPath

Abort

Protocolo

Page 17: Introducción al protocolo OBEX

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

Page 18: Introducción al protocolo OBEX

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

Page 19: Introducción al protocolo OBEX

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

Page 20: Introducción al protocolo OBEX

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

Page 21: Introducción al protocolo OBEX

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

Page 22: Introducción al protocolo OBEX

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

Page 23: Introducción al protocolo OBEX

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

Page 24: Introducción al protocolo OBEX

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

Page 25: Introducción al protocolo OBEX

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

Page 26: Introducción al protocolo OBEX

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

Page 27: Introducción al protocolo OBEX

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

Page 28: Introducción al protocolo OBEX

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

Page 29: Introducción al protocolo OBEX

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

Page 30: Introducción al protocolo OBEX

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

Page 31: Introducción al protocolo OBEX

OBEX sobre RFCOMM

OBEX - OBject EXchange

31

Page 32: Introducción al protocolo OBEX

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

Page 33: Introducción al protocolo OBEX

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

Page 34: Introducción al protocolo OBEX

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

Page 35: Introducción al protocolo OBEX

OBEX sobre TCP/IP

OBEX - OBject EXchange

35

Page 36: Introducción al protocolo OBEX

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

Page 37: Introducción al protocolo OBEX

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

Page 38: Introducción al protocolo OBEX

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

Page 39: Introducción al protocolo OBEX

Conclusión

OBEX - OBject EXchange

39

Page 40: Introducción al protocolo OBEX

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

Page 41: Introducción al protocolo 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

Page 42: Introducción al protocolo OBEX

42