mailto: payer@hbi-stuttgart.de
Zitierweise / cite as:
Payer, Margarete <1942 -- >: Computervermittelte Kommunikation. -- Kapitel 12: OSI-Schicht 6: Presentation Layer -- Datendarstellungsschicht. -- Teil 1: Allgemeines, ASN.1, ASCII, ISO ISO 8859, UNICODE, ISO/IEC 10646, UCS, UTF, PostScript, Acrobat. -- Fassung vom 2001-01-21. -- URL: http://www.payer.de/cmc/cmcs1201.htm. -- [Stichwort].
Erstmals publiziert: 1995
Überarbeitungen: 23. Juni 1997; 16.6.1999 [grundlegende Neubearbeitung und Erweiterung]; 2001-01-21 [Verbesserung kleiner Fehler]
Anlass: Lehrveranstaltungen an der HBI Stuttgart
©opyright: Dieser Text steht der Allgemeinheit zur Verfügung. Eine Verwertung in Publikationen, die über übliche Zitate hinausgeht, bedarf der ausdrücklichen Genehmigung der Verfasserin.
Zur Inhaltsübersicht von Margarete Payer: Computervermittelte Kommunikation.
Die Datendarstellungsschicht dient dazu, die Daten so darzustellen, wie sie tatsächlich auf der Leitung übertragen werden sollen. Diese Darstellung muss nicht identisch sein mit der Darstellung auf der Anwendungsschicht. |
Die Darstellungsschicht ist zuständig für:
Die Darstellungsschicht ist nur für die Syntax (die Darstellung der Daten) zuständig, nicht für die Semantik (d.h. die Bedeutung der Daten). Für die Semantik sind nur die Anwendungen zuständig. Die Darstellungsschicht soll gewährleisten, dass die Anwendungen Syntax-unabhängig miteinander kommunizieren können. Die Protokolle der Darstellungsschicht wandeln also die anwendungsspezifischen Syntaxe in eine gemeinsame Syntax um, sodass sich die Anwendungen nicht um die Kompatibilität ihrer Syntax zu kümmern brauchen.
Aufgaben der Datendarstellungsschicht:
Funktionen innerhalb der Datendarstellungsschicht:
Eine sehr klare Darstellung von ASN.1 ist in:
Stallings, William: Data and computer communications. -- 4. ed. -- London [u.a.] : Prentice Hall, 1994. -- 875 S. -- ISBN 0024154253. -- S. 639-672. -- {Wenn Sie HIER klicken, können Sie dieses Buch bei amazon.de bestellen}
ISO 8824 (CCITT/ITU X.208) -- Abstract Syntax Notation One (ASN.1)
ISO 8825 (CCITT/ITU X.209) -- Basic Encoding Rules (BER)
ASN.1 bietet eine Grammatik zur Definition von Datenstrukturen sowie Festlegungen zur Umsetzung von Datenstrukturen und Elementen in ein netzeinheitliches Format (Transfer Syntax). |
ASN.1 hat sich weitgehend durchgesetzt bei der Entwicklung von OSI-bezogenen Standards und TCP/IP-bezogenen Standards. Man verwendet ASN.1 um das Format von mittels der Protokolle ausgetauschten Daten sowie die diesbezüglichen Operationen zu definieren.
Die ASN.1-Umwandlung kann bis zu 80% (!) des CPU-Aufwandes für ein Paket bis zur Applikation hin ausmachen. ASN.1 ist nicht flexibel, sodass eine Verbesserung durch übliche Techniken der Leistungssteigerung (z.B. Parallelverarbeitung) nicht möglich ist.
ASN.1 ist eine Notation zur Beschreibung
Der Grundbaustein einer ASN.1-Spezifikation ist das Modul (module).
ASN.1 kann benutzt werden, um Datenstrukturen zu definieren. Diese Definition geschieht in Form eines benannten Moduls. Der Name des Moduls wird dann zur Bezeichnung der Datenstruktur verwendet.
Struktur eines Modul:
<modulreference> DEFINITIONS::= BEGIN EXPORTS IMPORTS AssignmentList END
Erklärung:
<name>::<description>
ASN.1 types und values werden in einer Programmiersprache-artigen Notation dargestellt. Dabei gelten folgende Regeln:
Ein type ist eine Menge von Werten (values). Für einige types gibt es eine endliche Anzahl von möglichen Werten, für andere eine unendliche. Ein Wert ist umgekehrt ein Element der type-Menge.
Arten von types:
Types und Werten kann man mit mittels des ASN.1 assignement operators ::= einen Namen zuordnen. Dieser Name kann dann verwendet werden bei der Definition anderer types und Werte.
Jeder ASN.1 type außer CHOICE und ANY hat einen tag (Identifikator). Jeder tag besteht aus einer tag-classe und einer nicht-negativen tag-number.
Tag classes:
Universal types (Auswahl):
Informelle Beschreibung eines persönlichen Datensatzes | ASN.1 Beschreibung des nebenstehenden einzelnen Datensatzes (record value) |
Name: John P Smith Title: Director |
{ {givenName "John", initial "P", familyName
"Smith"},
|
ASN.1 Beschreibung der Struktur des obigen Datensatzes:
PersonelRecord ::= [APPLICATION 0] IMPLICIT SET { Name, title [0] VisibleString, number EmployeeNumber, dateOfHire [1] Date, nameOfSpouse [2] Name, children [3] IMPLICIT SEQUENCE OF ChildInformation DEFAULT {}} ChildInformation ::= SET { Name, dateOfBirth [0] Date} Name ::= [APPLICATION 1] IMPLICIT SEQUENCE { givenName VisibleString, initial VisibleString, familyName Visible String } EmployeeNumber ::= [APPLICATION 2] IMPLICIT INTEGER Date ::= [APPLICATION 3] IMPLICIT VisibleString -- YYYYMMDD
Erklärung im Einzelnen in
Stallings, William: Data and computer communications. -- 4. ed. -- London [u.a.] : Prentice Hall, 1994. -- 875 S. -- ISBN 0024154253. -- S. 651-653. -- {Wenn Sie HIER klicken, können Sie dieses Buch bei amazon.de bestellen}
Die Basic Encoding Rules (BER) geben an, wie man einen ASN.1 value als Oktett-Reihe darstellen kann.
Es gibt drei Darstellungsmethoden. Die Wahl richtet sich nach der Art des value und danach, ob die Länge des value zuvor schon bekannt ist.
Bei jeder dieser Darstellungsmethoden hat die BER-Kodierung drei bzw. vier Teile:
Es gibt viele Versuche, hard- und software-unabhängige Formate für Dokumente zu schaffen und durchzusetzen. Bisher herrscht aber immer noch Chaos, und ohne Umwandlungsprogramme kommt man kaum aus.
ASCII (American Standard Code for Information Interchange) ist ein ISO (International Organization for Standardization) Standard (ISO/IEC 646).
ASCII ist ein 8-Bit-Code:
Tabelle: US-ASCII (128 Zeichen) mit Hexadezimalkodierung ([ZeilenNr][SpaltenNr]): (A = 41; a = 61)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
1 | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
2 | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
3 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
4 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
Leider blieb es nicht bei US-ASCII, sondern es wurden regionale ASCIIs entwickelt, um z.B. die Umlaute zu kodieren. Dies führt zu den bekannten Problemen mit der Darstellung von Umlauten (die dann z.B. als "[" wiedergegeben werden). So gibt es folgende ASCII-Varianten: International Reference Version (ISO 646.IRV), Deutschland (ISO 646.DE), Schweiz (ISO 646.CH), Französisch-Kanada (ISO 646.CA), Spanien (ISO 646.ES), Finnland (ISO 646.FI) , Frankreich (ISO 646.FR), Großbritannien (ISO 646.GB), Italien (ISO 646.NL), Norwegen/Dänemark (ISO 646.NO), Portugal (ISO 646.PT) , Schweden (ISO 646.SE), Korea (KS C 5363), China (GB 1988-80), Japan (JIS X 201). Alle sind nicht voll miteinander kompatibel.
ASCII-Text kann von fast allen Textbearbeitungsprogrammen verwertet werden. ASCII erlaubt aber keine unterschiedlichen Schriften, Schriftarten, kompliziertere Textformatierungen, Grafiken, Farben. SGML, XML und HTML haben den großen Vorteil, dass ihre Kodierungen in reinem US-ASCII sind!
Weiterführende Ressourcen zu ASCII:
Yahoo Categories:
Da moderne Computer weniger fehleranfällig sind als ältere Systeme, hat man das 8. Bit auch zur Zeichendefinition verwendet und Extended ASCII entwickelt, das 256 Zeichen und Steuerzeichen definiert. Diese 8-Bit-Kodierungen werden als ISO 8859-n international standardisiert.:
ISO 8859-n | Name | Sprachspezifische Zeichensätze |
---|---|---|
ISO 8859-1 | Latin-1 | für Englisch, Dänisch, Niederländisch, Finnisch, Französisch, Deutsch, Isländisch, Irisch, Italienisch, Bahasa Malaysisch, Norwegisch, Portugiesisch, Spanisch, Schwedisch, Tagalog (Philippinen) |
ISO 8859-2 | Latin-2 | für Albanisch, Tschechisch, Deutsch, Ungarisch, Polnisch, Rumänisch, Kroatisch, Slowakisch, Slowenisch, Schwedisch |
ISO 8859-3 | Latin-3 | für Afrikaans, Katalanisch, Französisch, Galizisch, Italienisch, Maltesisch, Türkisch |
ISO 8859-4 | Latin-4 | für Dänisch, Estnisch, Finnisch, Deutsch,
Grönländisch, Lappisch, Litauisch, Norwegisch, Schwedisch.
Jetzt ersetzt durch ISO 8859-10: Latin-6 |
ISO 8859-5 | Latin/Cyrillic | Bulgarisch, Belorussisch, Mazedonisch, Russisch, Serbisch, Ukrainisch |
ISO 8859-6 | Latin/Arabic | Arabisch ohne Punktation |
ISO 8859-7 | Latin/Greek | Griechisch |
ISO 8859-8 | Latin/Hebrew | Hebräisch ohne Punktation |
ISO 8859-9 | Latin-5 | Finnisch, Französisch, Deutsch, Irisch, Italienisch, Norwegisch, Portugiesisch, Spanisch, Schwedisch, Türkisch |
ISO 8859-10 | Latin-6 | Dänisch, Estnisch, Faroerisch, Finnisch, Deutsch, Grönländisch (Inuit), Isländisch, Lappisch (Samisch), Litauisch, Lettisch, Norwegisch, Schwedisch |
ISO 8859-14 [Entwurf] | Latin-7 | Gälische Sprachen |
Neun indische Hauptschriften (Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Kannada, Telugu, Malayalam) sind als ISCII (Indian Standard Codes for Information Interchange) in 8-Bit-Kode definiert (Indian Standard IS 13194:1991)..
Weiterführende Ressourcen zu ISO 8859:
Um alle Zeichensätze der Welt, sowohl Alphabete, nichtalphabetische sprachbezogene Zeichen (z.B. Chinesisch) sowie Symbole, mathematische Operatoren, chemische Zeichen usw. zu kodieren, wurden zwei Standards entwickelt:
Die historische Abfolge ist:
ISO 10646 besteht aus zwei miteinander kompatiblen Kodierungsschemata:
Beispiel "T" (ASCII 54) | ||
---|---|---|
binär kodiert |
hexadezimal kodiert |
|
UCS-2: Kodierung mit 2 Byte (16 Bit) | 0000 0000 0101 0100 |
0054 = 54 |
UCS-4: Kodierung mit 4 Byte (32 Bit) | 0000 0000 0000 0000 0000 0000 0101 0100 |
0000 0054 = 54 |
ISO 10646 ist kompatibel mit ISO 646 (US-ASCII) und ISO 8859 (Latin-1), d.h. die ersten 128 Zeichen haben (mit Ausnahme der führenden Nullen) in UCS dieselben Werte wie in US-ASCII., die ersten 256 Zeichen dieselben Werte wie ISO 8859 (Latin-1).
Die Abwärtskompatibilität zeigt folgende Tabelle für die Kodierung von "A":
Standard | Bits | Binärkodierung | Hexadezimal-Kodierung |
---|---|---|---|
ISO 646 (US-ASCII) | 7 | 100 0001 | 41 |
ISO 8859-1 (Latin-1) | 8 | 0100 0001 | 41 |
UCS-2, Unicode | 16 | 0000 0000 0100 0001 | 41 |
UCS-4 | 32 | 0000 0000 0000 0000 0000 0000 0100 0001 |
41 |
Den Bytegruppen in UCS wurden folgende Namen zugeordnet:
0000 0000 (4. Byte) | 0000 0000 (3. Byte) | 0000 0000 (2. Byte) | 0000 0000 (1. Byte) |
group | plane | row | cell |
Da man eine UCS-2-Kodierung in UCS-4 als 00 00 xx xx darstellen kann, enthält UCS-2 alle Zeichen von group 00, plane 00 von UCS-4. Die plane von UCS-2 nennt man Basic Multilingual Plane (BMP). Es gibt noch keine Zeichensätze, die außerhalb von BMP kodiert sind.
Unicode und UCS sind voll kompatibel, d.h. jede Unicode-Kodierung ist identisch mit der entsprechenden UCS-2-Kodierung.
Die UCS-Kodierung kann, wenn sie viele Nullen enthält, sehr speicherfressend sein, deshalb entwickelte man UTF-8 (UCS Transformation Format, 8-bit form): Wenn der Hauptteil des Textes aus mit hohen Zahlen kodierten Zeichen besteht ist UTF-8 speicherfressender als UCS, bei niedrig kodierten Zeichen erspart es bis zu 25% Speicherplatz. Andere UTFs haben die unten angegebenen Funktionen.
UTF-8 (UCS Transformation Format, 8-bit form) (ISO/IEC 10646 AM1): benutzt 1 Byte für ASCII-Zeichen und 2 bis 6 Byte für die übrigen Zeichen | Beispiel "T" (ASCII 54):
UCS-4:
UTF-8:
|
UTF-7 (UCS Transformation Format, 7-bit form): Unicode-Kodierung für Anwendungen, die das 8. Datenbit übergehen, z.B. e-mail nach dem SMTP (Simple Mail Transfer Protokol) des Internet (s. RFC 1642 : UTF-7 : A Mail-Safe Transformation Format of Unicode. -- URL: http://www.cis.ohio-state.edu/htbin/rfc/rfc1642.html. -- Zugriff am 14.6.1999). In MIME setzt man den character set identifier auf "UNICODE-1-1-UTF-7". | |
UTF-16 (UCS Transformation Format for Planes of Group 00): erlaubt es, unter UNICODE (UCS-2) Zeichen aus UCS-4 darzustellen (genau von 16 zusätzlichen planes); dies tut man, indem manche Werte reserviert sind, um auf höhere planes zu schalten. |
Alle XML-Implementierungen müssen UTF-8 und UTF-16 unterstützen.
ASCII, UCS, UNICODE und UTF sind miteinander voll kompatibel. Ihr gegenseitiges Verhältnis zeigt folgende Grafik (nicht maßstabgetreu!):
Den Zeichensätzen werden in UCS bzw. Unicode zusammenhängende Bereiche zugeordnet, deren Größe vom Umfang des Zeichensatzes abhängt. Je vier Bit werden als Hexadezimalzahl (0 bis F) kodiert und als Kennzeichnung für Unicode U+ davor gesetzt. Bisher wurden ca. 39000 Zeichen kodiert, davon ca. 21000 chinesische Zeichen!
In XML werden Unicode-Zeichen folgendermaßen kodiert:
&#x[Unicode Hexadezimalkodierung ohne führende Nullen];
Einige Beispiele, die das Prinzip klar machen sollen:
Lateinschrift Basic Latin: Bereich U+0000 bis U+007F
Zeichen | Binärcode | Hexadezimalcode | XML Codierung | Darstellung in UNICODE-fähigem Browser |
---|---|---|---|---|
A | 0000 0000 0100 0001 | U+0041 | A | A |
B | 0000 0000 0100 0010 | U+0042 | B | B |
% | 0000 0000 0010 0101 | U+0025 | % | % |
Kyrillisch: Bereich U+0400 bis 04FF
Zeichen | Hexadezimalcode | XML Codierung | Darstellung in UNICODE-fähigem Browser |
---|---|---|---|
![]() |
U+0430 | а | а |
![]() |
U+0431 | б | б
|
![]() |
U+0432 |
в |
в |
Devanagari (Hindi und Sanskrit): Bereich U+0900 bis U+097F
Zeichen | Hexadezimalcode | XML Codierung |
---|---|---|
![]() |
U+0905 | अ |
![]() |
U+0906 | आ |
![]() |
U+0907 | इ |
Thai: Bereich U+0E00 bis U+0E7F
Zeichen | Hexadezimalcode | XML Codierung | Darstellung in UNICODE-fähigem Browser |
---|---|---|---|
![]() |
U+0E07 | ง | ง |
![]() |
U+0E08 | จ | จ |
![]() |
U+0E09 | ฉ | ฉ |
Chinesisch: CJK Ideographs: Bereich U+4E00 bis U+9FA5
Zeichen | Hexadezimalcode | XML Codierung | Darstellung in UNICODE-fähigem Browser |
---|---|---|---|
|
U+4E08 | 丈 | 丈 |
|
U+4E83 | 亃 | 亃 |
|
U+72AC | 犬 | 犬 |
|
U+9B69 | 魩 | 魩 |
Etwas für Pharmakologen und Botaniker (nur mit UNICODE-fähigem Browser lesbar): 药 茶 莓 茉 莉 茄 菜 草
Die wichtigste und die schwierigste Aufgabe der Kodierung sind die chinesisch-japanisch-koreanisch-[klassisch-vietnamesischen] Ideographe. Einige wichtige Punkte in der Geschichte dieser Kodierung:
Mathematische Operatoren: U+2200 to U+22FF
Zeichen | Hexadezimalcode | XML Codierung |
---|---|---|
![]() |
U+221B | ∛ |
![]() |
U+222E | ∮ |
![]() |
U+22C2 | ⋂ |
Die gegenwärtig gültige Version des Unicode-Standards (2.1) unterstützt offiziell die im Folgenden genannten Schriften und Zeichensätze. Die Reihenfolge der Aufzählung entspricht der Abfolge in der Zuteilung der 16-Bit-Codes. Die Links verweisen auf Zeichentafeln mit der Kodierung der einzelnen Zeichen. (Zugriff auf alle Links am 11.6.1999).
Weiterführende Ressourcen zu UNICODE:
Organisationen:
Unicode Consortium. -- URL: http://www.unicode.org.. -- Zugriff am 11.6.1999 -- [Die Informationsquelle; sehr ergiebig!]
Ressourcen in Printform:
The Unicode Standard Version 2.0 / The Unicoder Consortium. -- Reading [u.a.] : Addison-Wesley, ©1996. -- getrennte Zählung [960 S.] : Ill. + 1 CD-ROM. -- ISBN 0201483459. -- [Unerlässlich für jede Implementierung von UNICODE]. -- {Wenn Sie HIER klicken, können Sie dieses Buch bei amazon.de bestellen}
PostScript ist eine von Adobe entwickelte und 1985 vorgestellte Layoutdefinitions-Sprache, die von vielen Softwarepaketen und Betriebssystemen unterstützt wird. PostScript erlaubt, kompliziert formatierte Dokumente mit unterschiedlichen Schriften, Schriftarten, Grafiken, Farben usw. zu definieren. PostScript macht die Files aber sehr groß (z.B. 100 Druckseiten u.U. = 40 Mb (!) PostScript). Auch gibt es durchaus lästige Inkompatibilitäten zwischen PostScript-Files, die mit verschiedenen Programmen erstellt wurden. PostScript wird vor allem zur Steuerung von Druckern und Fotosatzgeräten benutzt. Softwarepakete, die PostScript zur Druckerausgabe unterstützen, ermöglichen trotzdem oft nicht eine Bildschirmwiedergabe von PostScript-Dateien. Die Umsetzung einer Postscript-Datei zur Druckausgabe erfolgt innerhalb des Druckers durch einen speziellen Postscript-Interpreter. Mit Display PostScript besteht die Möglichkeit, auch die Bildschirmausgabe durch PostScript zu steuern.
Weiterführende Ressourcen zu Postscript:
Yahoo Categories:
Acrobat® ist eine von Adobe 1993 vorgestellte Software zum Datenaustausch. Adobe Acrobat hat ähnliche Features wie PostScript, Acrobat-Files sind aber weniger umfangreich als PostScript-Files. Lange Zeit war der Acrobat Reader nicht kostenlos erhältlich, was der Verbreitung von Adobe Acrobat sehr im Wege stand. Jetzt ist der Adobe Acrobat Reader Freeware und Files im Acrobat-Format .pdf (Portable Document Format) werden auch immer häufiger als Web-Seiten angeboten. Da pdf-Files viel umfangreicher und umständlicher in der Handhabung sind als html-Files, scheint mir die Publikation im WWW mittels von pdf-Files nur in den Fällen berechtigt, in denen ein unveränderliches Layout zwingend zum angebotenen Inhalt gehört (sonst gehört das in die Kategorie: "Protzige Form soll mangelhaften Inhalt verbergen").
Weiterführende Ressourcen Adobe Acrobat:
Yahoo Categories: