Universität Mannheim
Lehrstuhl für Praktische Informatik IV
Prof. Dr. W. Effelsberg
Silvia Pfeiffer
Christoph Kuhmünch

Übungsblatt 13

Übung: 29.1.99

Die Aufgaben, die auf dieser Seite ausgefüllt werden können, werden auch über das Web ausgewertet. Dazu muß die Matrikelnummer eingegeben werden und das Ganze abgeschickt werden. Voraussetzung ist allerdings, daß der Studierende auch für die elektronische Auswertung angemeldet ist.



Aufgabe 1

Als Spezifikationssprache für den Presentation-Layer wurde ASN.1 von der ISO genormt, als Transfersyntax dienen die Basic-Encoding-Rules (BER). Ein Versandhaus möchte nun mit Hilfe dieser Normen Bestellungen über ein Rechnernetz entgegennehmen. Eine einzelne Bestellung enthält eine Warennummer, eine Kurzbezeichnung, die Anzahl und optional eine Größe (für Bekleidung). Die Artikelkurzbezeichnung enthält maximal 20 Zeichen.

  1. Definieren Sie einen geeigneten Datentyp in ASN.1 sowie in einer Programmiersprache Ihrer Wahl (C oder Pascal). Ihre ASN.1-Spezifikation sollte nur Universal-Typen enthalten.

  2. Die Kodierung der Bestellungen soll nun von einem Programm ermöglicht werden. Dazu bedarf es einiger Kodierroutinen. Entwerfen Sie eine Kodierroutine, die einen Standard-Integerwert von C oder Pascal gemäß BER (Basic-Encoding-Rules) kodiert:

    function int_to_asn1(a: int; var ausgabe: array[1..100] of byte): integer;
          

    Sie können dabei davon ausgehen, daß der Integerwert im Bereich von 0 bis 32.000 liegt.

    Welchen Wert muß die Funktion zurückliefern, damit aufrufende Funktionen korrekt weiterarbeiten können?

  3. Skizzieren Sie die Probleme, die auftreten, wenn eine weitere Komponente in einer Bestellung vom Typ Integer optional definiert wird.

    Können Sie diese Probleme lösen, aber trotzdem weiterhin nur Daten vom Typ Universal verwenden?

    Begründen Sie Ihr Ergebnis!


Aufgabe 2

Gegeben ist einen Datentyp in der abstrakten Syntax von ASN.1 und ein Datensatz in der Transfer-Syntax, wobei zur Kodierung die Basic-Encoding-Rules (BER) verwendet wurden.

Haeuser ::= [APPLICATION 0] IMPLICIT SET
        {  adr           Adresse,
           wohnungen     [APPLICATION 1] IMPLICIT INTEGER,
           stockwerke    [APPLICATION 2] IMPLICIT INTEGER
        }
Adresse ::= [APPLICATION 3] IMPLICIT  SEQUENCE
        {  strasse TeletexString,
           hausnummer INTEGER
        }

60161510 4216110 3104116 110610 6316710 1416210 'A''5'0216 110F16

  1. Geben Sie den Record-Value dieses Datensatzes in der Syntax von ASN.1 an.

    Haeuser ::= { adr ::= { strasse ::= "???",
                            hausnummer ::= ???,
                          },
                  wohnungen ::= ???,
                  stockwerke ::= ???
                }
          

    • Welcher Straßennahme wurde übergeben:

    • Welche Hausnummer wurde übergeben:

    • Welche Anzahl an Wohnungen wurde übergeben:

    • Welche Anzahl an Stockwerken wurde übergeben:

  2. Erweitern Sie den Datentyp um eine Ganzzahlkomponente "belegt" als primitive Type. (Fügen Sie die neue Komponente am Ende der bisherigen Definition an)

  3. Wie sieht der kodierte Rekord (also die Transfer-Syntax) aus, wenn 5 Wohnungen belegt sind?

  4. Kodieren Sie den erweiterten Rekord zusätzlich mittels XDR (eXternal Data Represenation). Achtung: Bei XDR gilt 32 Bit Alignment. Dies hat zur Folge, daß an einigen Stellen Padding Bytes eingefügt werden müssen. Markieren Sie Padding Felder mit "-".

Hilfestellung:

Definition des Tagbytes:
Abbildung: blatt13.BER.gif

Tabelle der Tags für das Encoding von Universal types:
Tag Meaning
1 BOOLEAN
2 INTEGER
3 BIT STRING
4 OCTET STRING
5 NULL
6 OBJECT IDENTIFIER
7 OBJECT DESCRIPTOR
8 EXTERNAL
16 SEQUENCE and SEQUENCE OF
17 SET and SET OF
18 NumericString
19 PrintableString
20 TeletexString
21 VideotexString
22 IA5String
23 Generalized Time
24 UTCTime
25 GraphicString
27 GeneralString



Abgabedaten:

Matrikelnummer: Password: 

Universität:
Mannheim
Heidelberg
Freiburg
Karlsruhe
andere


{ pfeiffer , kuhmünch}@pi4.informatik.uni-mannheim.de
Last modified: Wed Jan 13 16:45:39 MET 1999