Universität Mannheim
Lehrstuhl für Praktische Informatik IV
Prof. Dr. W. Effelsberg
Übungsblatt 10
Übung: 11.7.96
Zunächst werden die Aufgaben 4 und 5 des Übungsblatts 9 in
der Übung vom 27.6.97 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.
- 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.
- 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?
- 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
}
- Geben Sie den Record-Value dieses Datensatzes in der Syntax von
ASN.1 an.
- 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?
- Kodieren Sie den erweiterten Rekord zusätzlich mittels XDR
(eXternal Data Represenation).
Hilfestellung:
Definition des Tagbytes:
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: Mon Jun 30 12:24:11 MET DST 1997