Zum Hauptinhalt springen

1. Einführung

1. Einführung

Das Concise Binary Object Representation (CBOR) [RFC7049] ermöglicht den Austausch strukturierter Daten ohne die Notwendigkeit eines zuvor vereinbarten Schemas. [RFC7049] definiert eine grundlegende Menge von Datentypen sowie einen Tagging-Mechanismus, der die Erweiterung der unterstützten Datentypen über ein IANA-Register ermöglicht.

In jüngerer Zeit haben einfache Formen typisierter Arrays numerischer Daten Interesse gefunden – sowohl in der Webgrafik-Community [TypedArray] als auch in der JavaScript-Spezifikation (siehe Abschnitt 22.2 (https://www.ecma-international.org/ecma-262/10.0/index.html#sec-typedarray-objects) von [ECMA-ES10]) sowie in entsprechenden Implementierungen [ArrayBuffer].

Da diese typisierten Arrays erhebliche Datenmengen enthalten können, besteht Interesse daran, sie in CBOR auszutauschen, ohne dass jedes einzelne Zahlenelement aufwendig umkodiert werden muss. Dadurch kann zudem Overhead eingespart werden, der entstünde, wenn für jedes Array-Element ein Typ kodiert würde.

Dieses Dokument definiert eine Reihe miteinander verknüpfter CBOR-Tags, die diese typisierten Arrays abdecken, sowie zusätzliche Tags für mehrdimensionale und homogene Arrays. Es dient als Referenzdokument für die IANA-Registrierung der definierten Tags.

Beachten Sie, dass eine Anwendung, die CBOR mit diesen Tags erzeugt, beträchtliche Freiheit bei der Wahl von Varianten hat (z. B. bezüglich Endianness, eingebettetem Typ (vorzeichenbehaftet vs. vorzeichenlos) und Bitbreite pro Element) oder ob überhaupt ein in dieser Spezifikation definierter Tag anstelle grundlegenderer CBOR-Darstellungen verwendet wird. Im Gegensatz zu Darstellungsvarianten einzelner CBOR-Zahlen gibt es hier keine Darstellung, die als „bevorzugt“ identifiziert werden könnte. Wenn deterministische Kodierung in einem CBOR-basierten Protokoll gewünscht ist, das diese Tags nutzt, muss das Protokoll festlegen, welche Kodierungsvarianten für jeden Einzelfall verwendet werden.

1.1 Terminologie

Die Schlüsselwörter "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" und "OPTIONAL" sind in diesem Dokument so zu interpretieren, wie in BCP 14 [RFC2119] [RFC8174] beschrieben, und nur dann, wenn sie vollständig in Großbuchstaben erscheinen, wie hier gezeigt.

Der Begriff "byte" wird in seiner heute üblichen Bedeutung als Synonym für "octet" verwendet. Wo Bit-Arithmetik erläutert wird, verwendet dieses Dokument die aus der Programmiersprache C [C] vertraute Notation (einschließlich der 0bnnn-Binärliterale aus C++14 [CPlusPlus]), mit Ausnahme des Operators "**", der für Potenzierung steht.

Der Begriff "array" wird in diesem Dokument allgemein verwendet, sofern nicht weiter spezifiziert. Der Begriff "classical CBOR array" beschreibt ein Array, das mit CBOR-Haupttyp 4 dargestellt wird. Ein "homogeneous array" ist ein Array aus Elementen, die alle denselben Typ haben (der Begriff ist neutral dahingehend, ob es sich um einen Darstellungstyp oder einen Typ des Anwendungsdatenmodells handelt).

Die Begriffe "big endian" und "little endian" werden verwendet, um eine Darstellung mit dem höchstwertigen Byte zuerst (MSB first) bzw. dem niederwertigsten Byte zuerst (LSB first) anzugeben.