La representación de datos externos ( XDR ) es un formato de serialización de datos estándar , para usos tales como protocolos de redes informáticas . Permite transferir datos entre diferentes tipos de sistemas informáticos. La conversión de la representación local a XDR se denomina codificación . La conversión de XDR a la representación local se denomina decodificación . XDR se implementa como una biblioteca de software de funciones que es portable entre diferentes sistemas operativos y también es independiente de la capa de transporte .
XDR utiliza una unidad base de 4 bytes, serializados en orden big-endian ; los tipos de datos más pequeños aún ocupan cuatro bytes cada uno después de la codificación. Los tipos de longitud variable, como string y opaque, se rellenan hasta un total divisible por cuatro bytes. Los números de punto flotante se representan en formato IEEE 754 .
Historia
XDR se desarrolló a mediados de la década de 1980 en Sun Microsystems y se publicó ampliamente por primera vez en 1987. [2] XDR se convirtió en un estándar IETF en 1995.
El formato de datos XDR se utiliza en muchos sistemas, incluidos:
- Sistema de archivos de red (protocolo)
- Sistema de archivos ZFS
- Protocolo de gestión de datos de red NDMP
- Llamada a procedimiento remoto de Open Network Computing
- Software de copia de seguridad Legato NetWorker (posteriormente vendido por EMC)
- NetCDF (un formato de datos científicos)
- El lenguaje R y el entorno para el cálculo estadístico
- El protocolo de cable binario HTTP-NG
- El motor JavaScript SpiderMonkey , para serializar/deserializar código JavaScript compilado
- El sistema de monitoreo distribuido Ganglia
- El estándar de monitoreo de red sFlow
- La biblioteca de virtualización libvirt , API y UI
- El Firebird (servidor de base de datos) para el protocolo de conexión binaria remota
- Red de pago estelar
Tipos de datos XDR
- booleano
- int – entero de 32 bits
- unsigned int – entero de 32 bits sin signo
- hiper – entero de 64 bits
- hiper sin signo: entero de 64 bits sin signo
- Flotador IEEE
- IEEE doble
- cuádruple (nuevo en RFC1832)
- enumeración
- estructura
- cadena
- matriz de longitud fija
- matriz de longitud variable
- sindicato – sindicato discriminado
- datos opacos de longitud fija
- datos opacos de longitud variable
- void – cantidad de bytes cero
- opcional: los datos opcionales se anotan de forma similar a los punteros de C, pero se representan como el tipo de datos "apuntado" con un indicador booleano "presente o no". Semánticamente, este es el tipo de opción .
Véase también
- Formato de intercambio de datos estructurados ( SDXF )
- Llamada a procedimiento remoto
- Notación de sintaxis abstracta uno
- Lenguaje de descripción del formato de datos
- Comparación de formatos de serialización de datos
Referencias
- ^ «X.225: Tecnología de la información – Interconexión de sistemas abiertos – Protocolo de sesión orientado a la conexión: Especificación del protocolo». Archivado desde el original el 1 de febrero de 2021. Consultado el 10 de marzo de 2023 .
- ^ Sun Microsystems (1987). «XDR: External Data Representation Standard». RFC 1014. Grupo de trabajo de redes. doi : 10.17487/RFC1014 . Consultado el 11 de julio de 2011 .
Enlaces externos
El estándar XDR existe en tres versiones diferentes en los siguientes RFC:
- RFC 4506 2006 Este documento no realiza cambios técnicos al RFC 1832 y se publica con el propósito de señalar las consideraciones de la IANA, aumentar las consideraciones de seguridad y distinguir las referencias normativas de las informativas.
- RFC 1832 versión 1995. Se agregó punto flotante de precisión cuádruple a RFC 1014.
- RFC 1014 versión 1987.
- Notas técnicas sobre XDR de Cisco
- jsxdrapi.c, el archivo fuente principal de SpiderMonkey que utiliza XDR
- Archivo fuente principal xdr protocol.cpp utilizado en el protocolo remoto Firebird
- La implementación de GNU Libc de rpcgen, el analizador XDR.
- Gramática racc de Mu Dynamics Research Labs para XDR
- Herramientas IvmaiAsn ASN1/ECN/XDR (una colección de herramientas que contiene un convertidor XDR/RPC a ASN.1)