mailto: payer@hbi-stuttgart.de
Zitierweise / cite as:
Payer, Margarete <1942 -- >: Computervermittelte Kommunikation. -- Kapitel 12: OSI-Schicht 6: Presentation Layer -- Datendarstellungsschicht. -- Fassung vom 23. Juni 1997. -- URL: http://www.payer.de/cmc/cmcs12.htm. -- [Stichwort].
Letzte Überarbeitung: 23. Juni 1997
Anlaß: 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 muß 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, daß die Anwendungen Syntax-unabhängig miteinander kommunizieren können. Die Protokolle der Darstellungsschicht wandeln also die anwendungsspezifischen Syntaxe in eine gemeinsame Syntax um, sodaß 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 0-13-326828-4. -- S. 639-672
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 disebezü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, sodaß eine Verbesserung durch übliche Techniken der Leistungssteigerung (z.B. Paralellverarbeitung) 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:
Name: John P Smith
Title: Director
Employee Number: 51
Date of Hire: 17 September 1971
Name of Spouse: Mary T Smith
Number of Children: 2
Child Information:
Name: Ralph T Smith
Date of Birth: 11 November 1957
Child Information:
Name: Susan B Jones
Date of Birth: 17 July 1959
ASN.1 Beschreibung der Struktur des 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
ASN.1 Beschreibung des obigen einzelnen Datensatzes (record value):
{ {givenName "John", initial "P", familyName "Smith"}, title "Director" number51 dateOfHire "19710917" nameOfSpouse{givenName "Mary", initial "T", familyName "Smith"}, children { { {givenName "Ralph", initial "T", familyName "Smith"} dateOfBirth "19571111" { {givenName "Susan", initial "B", familyName "Jones"} dateOfBirth "19590717"}}}
Erklärung im Einzelnen in
Stallings, William: Data and computer communications. -- 4. ed. -- London [u.a.] : Prentice Hall, 1994. -- 875 S. -- ISBN 0-13-326828-4. -- S. 651-653.
Die Basic Encoding Rules (BER) geben an, wie man einen ASN.1 value als Oktett-Reihe darstellen kann.
Es gibt drei Dartellungsmethoden. 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-Text kann von fast allen Textbearbeitungsprogrammen verwertet werden. ASCII erlaubt aber keine unterschiedlichen Schriften, Schriftarten, kompliziertere Textformatierungen, Grafiken, Farben.
Weiterführende Ressourcen:
Yahoo Categories:
UNICODE ist ein Standard, der durch eine 16-bit-Kodierung die einheitliche Kodierung aller Zeichensätze derWelt erlaubt. |
Die gegenwärtig gültige Fassung des Standards (2.0) unterstützt offiziell die im Folgenden genannten Schriften und Zeichensätze. Die Reihenfolge der Aufzählung entspricht der Abfalge in der Zuteilung der 16-Bit-Codes. Die Links verweisen auf Zeichentafeln mit der Kodierung der einzelnen Zeichen. (Zugriff auf alle Links am 6. 6. 97).
WWW:
Unicode Homepage / Unicode Inc. -- Zugriff am 6. 6. 97. -- [Die Informationsquelle; sehr ergiebig!]
SGML -- Standard Generalized Markup Language ist eine Dokument-Definier-Sprache, die den Austausch von Informationen beliebiger Komplexität unabhängig von herstellerspezifischer Soft- und Hardware ermöglichen soll. |
SGML ist internationaler ISO-Standard:
ISO 8879 (1986): Information processing -- Text and office systems -- Standard Generalized Markup Language (SGML)
Ausgangspunkt zu SGML in ihrer jetzigen Form war der Paradigmawechsel vom Konzept des Specific Coding (Procedural Markup) zum Konzept des Generic Coding (Descriptive Markup).
Vermutlich geht die Anregung zu diesem Paradigmenwechsel auf William Tunnicliffe zurück, der 1967 bei einer Sitzung des Cannadian Government Printing Office vorschlug, den Informationsgehalt eines Dokumentes von seinem Format zu trennen. Diese und andere Anregungen führten zur Gründung des Generic Coding Projekt innerhalb des Composition Committe der Graphic Communications Association (GCA). In diesem Projekt wurde das GenCode(R)-Konzept entwickelt: man erkannte, daß verschiedene Arten von Dokumenten verschiedene Codes benötigen und, daß man kleinere Dokumente als Elemente in größere Dokumente einbinden könnte.
Es zeigte sich bald, daß der Versuch, ein Generic Coding für alle Dokumententypen zu entwerfen, daran scheitern würde, daß es zu viele verschiedene Dokumententypen mit zu vielen unterschiedlichen Arten von Elementen gibt. Die Lösung fand man darin, daß man SGML nicht als eine Gesamtheit von standardisierten Codes entwarf, sondern als eine Art Programmiersprache, mit der man eine Dokumenten-Typ-Definition (document type definition) (DTD) erstellen konnte. Die DTD kann die Elemente usw. definieren, die man für ein Dokument oder eine Gruppe ähnlicher Dokumente benötigt. Das Vorbild dafür lieferten Programmiersprachen, die es erlauben "primitives" zu definieren, Grundoperationen, die man in einem header file zusammenstellen kann, um Befehle zu definieren, die das Programm dann benutzt.
1980 wurde ein erster Entwurf von SGML veröffentlicht. Im Oktober 1985 wurde ein Draft International Standard veröffentlicht und vom Office of Official Publications of the European Community angenommen. 1986 wurde der endgültige Text, der am CERN ausgearbeitet wurde, von ISO als Standard akzeptiert und in Rekordzeit veröffentlicht.
Von 1983 bis 1987 entwickelt. SGML Anwendung zur Herstellung von Büchern, Zeitschriften und Zeitschriftenartikeln. Zweck ist u.a. die Ermöglichung des Manuskriptaustauschs zwischen Autoren und Verlegern. Enthalten sind optionelle Element-Definitionen für komplexe Tabellen und wissenschaftliche Formeln.
An der Entwicklung beteiligt waren u.a.:
Diese Anwendung wurde besonders von den CD-ROM-Verlegern weitgehend angenommen. Als ANSI Z39.50 wurde sie amerikanischer Standard. Zu Z39.50 s. unten.
CALS ist ein Projekt des U.S. Department of Defense und des U.S. Departement of Commerce zur elektronischen Erwerbung und Verwaltung von technischen Informationen, insbesondere zu Waffensystemen. Der SGML-Teil von Cals wurde seit 1987 entwickelt und wurde 1987 Militär-Standard MIL-M-28001. Ähnliche militärische SGML-Projekte laufen z.B. in Kanada, Schweden, Australien.
HyTime ist eine Anwendung von SGML für Hypermedia (Hypertext and Multimedia).
HyTime ist ISO-Standard 10744 (1992).
Wegen der rasanten Entwicklungen im Bereich der Hypermedia ist Hytime kein Standard, der alle Aspekte von Hypermedia umfaßt. Hytime standardisiert z.B. nicht bestimmte Datenformate. Hytime standardisiert aber folgende Teilgebiete:
Hytime ist ein Standard für
links to anything, anywhere, at any time
HyTime ist gedacht für Integrated Open Hypermedia (IOH) Anwendungen:
IOH folgt dem bibliographischen Modell des Hyperlinking: mögliche "bibliographische" Verweisungen auf jeden Teil jedes Dokumentes durch eine standardisierte bibliographische Verweisung:
Jedes Dokument besteht aus:
SGML ist eine Sprache zum Definieren des Markup
SGML ist eine Computer-Sprache: ein Computerprogramm -- ein validating SGML parser -- liest die Definitionen, lernt die daraus folgenden Regeln und wendet sie auf das Dokument an.
Die SGML declaration wird oft weggelassen, wenn man annehmen kann, daß sowohl das sendende als auch das empfangende System die default syntax (reference concrete syntax) benutzen
SGML beginnt jeweils mit der Definition eines character set, normalerweise auf der Grundlage von ASCII. Spezialzeichen werden mittels ASCII definiert in entity references. So benötigt man keine im Datenaustausch problematischen ESC-, CTRL- oder ALT-Zeichen.
Beispiel für Definitionen von Sonderzeichen: Umlaute und ß:
Die document type definition (DTD) definiert die Elemente und anderen Konstrukte, die für ein spezifisches Dokument oder eine Gruppe von Dokumenten benötigt werden.
Die Elemente werden in element declarations definiert. Element declarations haben zwei Aufgaben:
Beispiel: Definition des Elementes Kapitel: beginnt mit Kapitelüberschrift, enthält beliebig viele Paragraphen, eventuell auch Zwischenüberschriften:
<!ELEMENT Kapitel (KapTitel, (Para | Zwischentit)+) >
Erklärung:
<!ELEMENT = es folgt eine element declaration
Kapitel = Name des Elementes
( ) = Unterelemente
, = darauf folgend
| = oder
+ = eines oder mehrere
Die Anweisung für SGML-Software lautet also: "Kapitel ist der Name eines Elementes, welches aus einem KapTitel sowie ein oder mehreren Para oder Zwischentit besteht."
Nun müssen die Inhalte (contents) der Unterelemente (subelements) KapTitel, Para, Zwischentit definiert werden. Wenn alle das gleiche content model haben, kann man dies in einer einzigen element definition tun:
<!ELEMENT (KapTitel | Para | Zwischentit) (#PCDATA)>
PCDATA ist ein reservierter Name, der definiert, daß die betreffenden Elemente keine eigenen Unterelemente haben, sondern nur Zeichen enthalten, die zum Inhalt des Dokumentes gehören. PCDATA = parsed character data.
Mit diesen element definitions und den zuvor gegebenen entity references könnte man z.B. folgendes Dokument erstellen:
<Kapitel><KapTit>Katzenweisheit</KapTit>
<Para>Katzen sind äußerst kluge Tiere. Sie tun nichts, wovon sie keinen Nutzen für sich einsehen .... </Para>
<Zwischentit>Tüpfli zum Beispiel</Zwischentit>
<Para>Tüpfli ist ein Kater. Sein Vater oder Großvater war vermutlich ein sexuell frustrierter Wildkater, der seine sexuellen Bedürfnisse bei einer Hauskatze befriedigte ... </Para>
</Kapitel>
Man kann Elementen Attribute zuordnen. So könnte man z.B. dem Element Para zwei Stufen der Zugänglichkeit zuordnen: topsecret und public:
<!ATTLIST para secrecy (topsec|public) "public">
"public" definiert public als default value: Alle Paragraphen, die nicht ausdrücklich als topsecret gekennzeichnet werden, sind public.
Unser Beispiel könnte dann z.B. so aussehen:
<Kapitel><KapTit>Katzenweisheit</KapTit>
<Para>Katzen sind äußerst kluge Tiere. Sie tun nichts, wovon sie keinen Nutzen für sich einsehen .... </Para>
<Zwischentit>Tüpfli zum Beispiel</Zwischentit>
<Para secrecy=topsec>Tüpfli ist ein Kater. Sein Vater oder Großvater war vermutlich ein sexuell frustrierter Wildkater, der seine sexuellen Bedürfnisse bei einer Hauskatze befriedigte ... </Para>
</Kapitel>
In diesem Falle würde die Abstammung Tüpflis nur berechtigten Geheimnisträgern zugänglich gemacht.
<!keyword parameter associated_parameters(S)>
Erklärung:
Comment declarations für Anmerkungen und Erklärungen des Produzenten des SGML-Dokumentes, die vom System nicht beachtet werden sollen, haben folgende Syntax:
Innerhalb von associated_parameter können folgende Indikatoren und Verknüpfungszeichen (connectors) vorkommen:
Syntax:
<!ELEMENT element_type minimization content_model> |
Erklärung:
Syntax:
<!ATTLIST element_type attribute_name attribute_value default_value> |
Erklärung:
Syntax:
<!ENTITY entity_name "replacement_entity_text"> |
Entities werden im Dokument durch &entity_name; (z.B. &katzle;) gekennzeichnet.
Wirkung: der Parser ersetzt immer, wenn er auf &entity_name; stößt, dies durch das, was zwischen " " steht.
Eine Entity kann folgende Funktionen haben:
Entities ermöglichen globales Ersetzen und Updating. Entities unterstützen auch Standardisierung, da eine Entity nur an einer Stelle, der entity declaration, definiert und formuliert wird.
Syntax:
<!ENTITY % entity_name "replacement_entity_text"> |
Bei Parameter Entities besteht der replacement_entity_text aus associated parameters.
Parameter Entities werden durch %entity_name; gekennzeichnet
Syntax:
<!NOTATION notation_name SYSTEM "system_identifier"> |
Notations werden benötigt, wenn bei der Verarbeitung von SGMLDokumenten einzelne Daten eine spezielle Behandlung erfordern. Typische Beispiele: mathematische Formeln, Graphiken ...
SYSTEM verbindet Instruktionen usw. mit der Notation:
Die Notation verläuft in folgenden Schritten:
<!NOTATION tex SYSTEM "/usr/bin/tex" --mathematischer Text ist zu bearbeiten mit einem Sub-Programm, das als usr/bin/tex gespeichert ist-->
<!NOTATION eqn SYSTEM "/usr/bin/eqn" --mathematische Formeln sind zu bearbeiten mit einem Sub-Programm. das als /usr/bin/eqn gespeichert ist-->
Beispiel für SGML data characters (Weiterführung des obigen Beispiels):
<!ELEMENT math (#PCDATA) --Definition eines Elementes math, das keine weiteren Unterelemente, sondern nur Dokumentdaten (PCDATA) enthält-->
<!ATTLIST math type NOTATION (tex|eqn) #REQUIRED --das Element muß obligatorisch entweder als tex oder eqn erklärt werden-->
Beispiel einer Anwendung dieser Definitionen im Dokument: Es soll der Ausdruck "(3 hoch 4) hoch 10" in mathematischer Notierung dargestellt werden:
<math type="eqn">(3 hoch 4) hoch 10</math>
Der Ausdruck "(3 hoch 4) hoch 10" wird dann mittels der Subroutine dargestellt, die als /usr/bin/eqn gespeichert ist.
Beispiel für non-SGML data:
<!NOTATION pict SYSTEM "pictVIEW" --Verknüpfung von pict mit dem Programm pictVIEW-->
<!ENTITY sysmod SYSTEM "/usr/gfx/sysmodel" NDATA pict>
Erklärung der ENTITY declaration:
Die Entity sysmod befindet sich auf dem System (SYSTEM) als /usr/gfx/sysmodel und ist mit der Notation pict verknüpft, die Daten haben nur innerhalb der durch diese Notation angegebenen Anwendung einen Sinn (NDATA).
Syntax:
<![status_keyword [text_of_marked_section]]> |
Beispiel: zwei Versionen eines Mathematik-Schulbuches sollen von einem File aus hergestellt werden: das für den Lehrer mit den Auflösungen, das für die Schüler ohne Auflösungen.
Die Schüler-Version könnte z.B. folgendermaßen gekennzeichnet werden:
<equation> 2 + 2 = <![IGNORE [4]]><equation>
Nun könnte man Parameter Entity Declarations verwenden:
Für die Schüler Version:
<!ENTITY % teacher "IGNORE" --ignoriere alles, was nur für den Lehrer ist-->
<!ENTITY % student "INCLUDE">
Für die Lehrer-Version:
<!ENTITY % teacher "INCLUDE" --füge alles ein, was nur für Lehrer ist>
Unser obiges Markup kann nun so umgestaltet werden:
<equation> 2 + 2 = <![%teacher; [4]]<equation>
Um die beiden Versionen zu produzieren, muß man also nur die Entity Declaration für %teacher ändern und der Parser tut alles Weitere.
Yahoo Categories:
WWW:
Ressourcen in Printform:
SGML primer
The SGML Primer : SoftQuad's quick reference guide to the essentials of the standard. -- 3. ed. -- Toronto : SoftQuad, 1991. -- 36 S. -- ISBN 1-896172-00-8
Elektronische Medien:
SGML world tour
SoftQuad SGML world tour. -- 1 CD-ROM. -- [Toronto] : SoftQuad, 1994. -- ISBN 1-896172-01-6
PostScript ist ein von Adobe entwickeltes Format, das 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 Druckersteuerung benutzt. Softwarepakete, die PostScript zu 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.
Weiterführende Ressourcen:
Yahoo Categories:
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.
Weiterführende Ressourcen:
Yahoo Categories:
Zum nächsten Kapitel:
Kapitel 13,1: OSI-Schicht 7:
Application Layer -- Anwendungsschicht, Teil 1