[XBUP]XBUP - Specifikace: Úroveň 3

Úvod

Tento dokument je součástí dokumentace projektu eXtensible Binary Universal Protocol. Obsahuje specifikaci 3. úrovně protokolu.

O úroveň výše

Obsah

1. Popis
2. Transformace
  2.1. Transformační blok
    2.1.1. Kompresní metody
    2.1.2. Šifrovací metody
  2.2. Extrakční blok
    2.2.1. Přímá extrakce
  2.3. Kontrolní bloky
    2.3.1. Kontrola mladších sourozenců
  2.4. Převodní bloky
  2.5. Analyzovatelnost dokumentu
3. Dědění typů

1. Popis

Úrovně 3 protokolu XBUP zavádí podporu pro transparentní transformace a podporu pro strukturu bloků kódovaných do datového bloku pomocí jiných metod, jako například použitím šifrování, nebo komprese. Umístění těchto funkcí na tuto úroveň je prozatímní a může být později změněno. Všechny vyšší úrovně jsou stále ve vývoji a lze očekávat jejich rozsáhlejší úpravy.

Na detailnější popis a argumentaci zvoleného řešení se můžete podívat do sekce vývoj protokolu.

2. Transformace

Rozšířením oproti předchozí úrovni je podpora bloků pro manipulace s daty. Tyto bloky umožňují převést datový blok na jiný tvar pomocí volitelného algoritmu a transparentní práci s takto realizovanými bloky.

Více o použitém kódování a jeho vývoji se můžete dozvědět v sekci transformace bloků.

2.1. Transformační blok

Tento blok je základním systémovým blokem pro všechny uvedené transformace. Má tyto hodnoty:

UBPointer - TransformMethod
UBPointer - DataSource

Ukazatel DataSource ukazuje na datový blok, který je zdrojem dat pro transformaci a ukazatel TransformMethod ukazuje na metodu, kterou je pro transformaci použít. Tento blok je možné použít místo datového bloku a transformace je na 2. úrovni implicitně prováděna. Pokud není transformační metoda uvedena, použijí se data přímo.

2.1.1. Komprese

Cílem kompresních metod je snížit velikost dat, obvykle pomocí snížení redundance dat, nebo pomocí statistických metod --- (teď si nevzpomenu na termín).

Pozn.: Součástí by měla být později implementace algoritmu v jazyce PROGJAZY

2.1.2. Šifrování

Cílem šifrování je zamezit čtení dat bez znalosti přístupového klíče. Má tak umožnit zabezpečený přenos dat, případně ověřování identity a nepopiratelnost doručení, případně další služby.

2.2. Extrakční blok

Vyšší formou je extrakce stromové struktury z datového bloku, která má stejné atributy jako transformační blok, ale liší se ve významu:

UBPointer - DataSource
UBPointer - ExtractMethod

Výsledkem extrakce je posloupnost bloků protokolu XBUP, kódována standardním způsobem. Tento blok je tak možné využít k šifrování celých podstromů dokumentu.

2.2.1. Přímá extrakce

Pokud je extrakční metoda neuvedena (hodnota 0), je vstupní datový blok přímo interpretován jako posloupnost bloků ve formátu XBUP.

2.2.2. Fragmentační blok

Další z možných využití je konstruovat datový blok tak, že data z tohoto datového bloku jsou před přímou extrakcí spojovány pomocí schématu. To umožňuje, aby byl datový blok fragmentován na menší části a menší změna dokumentu nutně neznamenala nutnost přepsání celého obsahu dokumentu. Vhodná se jeví například varianta se vstupním datovým blokem z rozšířené oblasti dokumentu.

2.3. Kontrolní bloky

Tyto bloky umějí naopak zpřístupnit datový obsah části podstromu a převést jej na virtuální datový blok pomocí volitelného algoritmu. To lze například využít pro kontrolu platnosti bloků.

UBPointer - DataSource
UBPointer - ExtractMethod

2.3.1. Kontrola mladších sourozenců

Pozn.: Bylo by asi vhodné, aby bylo možné zkontrolovat i platnost celého dokumentu, ovšem bez platnosti samotného kontrolního bloku. To by bylo možné ověřit například pomocí postupu, kdy by datový vstup pro kontrolní blok byl vytvořen z datového obsahu bloků, které jsou jeho mladšími sourozenci.

2.4. Převodní bloky

Poslední z variant manipulačních blok je blok určený pro převod blokové struktury do jiného tvaru.

UBPointer - DataSource
UBPointer - ExtractMethod

2.4.1. Odkazovací bloky

Dále jsou definovány základní základní bloky, jejich plná podpora je doporučená pro všechny aplikace, které uvádějí, že podporují protokol XBUP úrovně 1 a vyšší. Tyto bloky umožňují základní rozšiřování typů bloků a několik dalších funkcí.

2.4.1.1. Odkaz (6)

Odkaz umožňuje adresovat jiný blok ze stejného datového proudu. Jednotlivé bloky jsou číslovány ve standardním pořadí (dle pořadí, ve kterém jsou uvedeny) a to tak, že hodnota 0 odkazuje na datovou část bloku samotného a vyšší indexy pak na jednotlivé podřízené bloky. V dalších rozšířených variantách lze případně adresovat jakoukoli datovou strukturu, libovolný blok ve stejném nebo jiném souboru ať již v místní složce, nebo kdekoli jinde v lokální sítí nebo internetu. (Obdoba URL) V základní verzi je způsob získání bloku plně ponechán na aplikaci, a tedy to, zda bude blok stáhnut z Internetu, nebo bude použita jeho verze uložená v místní vyrovnávací paměti by nemělo být postatné. Adresace položky v rámci souboru. Hodnoty jsou následující:

UBPath - LinkPath
UBNatural - UpCount
UBPointer - LinkRoot

Tyto hodnoty jednoznačným způsobem určují cestu k bloku. Pro LinkRoot = 0 se jedná o vnitřní odkaz v datovém proudu. Hodnota UpCount = 0 odpovídá odkazu na nadřazený blok. Pokud hodnota UpCount přesáhne hloubku kořenové hloubky souboru, nebo pokud kterákoliv z hodnot PathPointer přesáhne počet bloků na dané úrovni, je celý odkaz považován za neplatný. Nutno ještě zmínit případ, kdy odkaz odkazuje na jiný odkaz, což není obecně zakázáno. V takovém případě je nutné ověřovat posloupnost odkazů na zacyklení. Obecně není omezena ani délka takové cesty.

Pro nenulové hodnoty se jedná o ukazatel na interpretaci kořene odkazu. Pokud ukazuje na jiný blok typu odkaz, pak odkazy typu 0 následuje a odkazy jiného typu považuje za kořen své cesty.

V případě, že nerozpozná typ odkazovaného bloku, je celý odkaz neplatný s chybou UnknownLinkRoot

Pozn. Je vhodné odlišit odkaz na jeden blok/celý podstrom?

2.4.1.2. Kořen internetového katalogu (7)

Uvedením tohoto bloku jako cílového určujete, že odkazované definice bloku jsou dostupné pomocí internetového katalogu.

2.5. Analyzovatelnost dokumentu

Dokument lze označit jako analyzovatelný, pokud má aplikace k dispozici všechny prostředky nutné pro úplné čtení dokumentu do úrovně 0. V případě komprese se tak jedná o dostupné kompresní aloritmy, podobně v případě šifrování o znalost požadovaného tajemství.

3. Dědění typů

Kromě počtu atributů je možné v bloku určit i jeho kompatibilního rodiče. Tento princip je vhodné využít především v případě, kdy chceme, aby aplikace byla schopna částečně zpracovat blok i v případě, kdy nezná kompletní definici dokumentu.


Homepage: http://xbup.sf.net
License: GNU Free Documentation License (FDL)
Latest update: 2008-10-05