Universität Mannheim
Lehrstuhl für Praktische Informatik IV
Prof. Dr. W. Effelsberg


Übungsblatt 10

Übung: 10.7.96 (Raum S 108)

Zunächst werden die Aufgaben 4 und 5 des Übungsblatts 9 in der Übung vom 10.7.96 besprochen. Dabei wird u.a. das Konzept endlicher Automaten zur Darstellung von Protokollen näher betrachtet. Im Anschluß daran werden noch die beiden folgenden Darstellungsschicht-Aufgaben besprochen.

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?

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
        }
Abbildung: blatt10.Aufgabe2.gif

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

  2. Erweitern Sie den Datentyp um eine Ganzzahlkomponente "belegt" als primitive Type. Wie sieht der kodierte Rekord (also die Transfer-Syntax) aus, wenn 5 Wohnungen belegt sind?

  3. Kodieren Sie den erweiterten Rekord zusätzlich mittels XDR (eXternal Data Represenation).

Hilfestellung:

Definition des Tagbytes:
Abbildung: blatt10.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


{ lienhart , pfeiffer}@pi4.informatik.uni-m annheim.de
Last modified: Wed Jul 10 15:45:54 MET DST 1996