Im Jahre 2003 begann ich mit der Entwicklung einer eigenen Client/Server-Architektur. Zielsetzung war eine Architektur zu schaffen für eine unbegrenzte Benutzeranzahl und die Erfüllung paranoider Sicherheitsbedürfnisse. Der Daten-Overhead des Protokolls sollte sehr klein sein, da zum damaligen Zeitpunkt 64kB-ISDN-Verbindung noch der Standard war. Weiterhin sollte das Protokoll maximale Störsicherheit bieten damit auch eine Verbindung über eine damals noch üblichen 28,8kB-analogen Wald-und-Wiesen-Leitung möglich ist.

Die Architektur ist ein in sich geschlossenes System und damit zu jeder anderen Software inkompatibel. Sie gliedert sich in vier Teile.

Teil 1: Datendarstellung (Benutzeroberfläche)

Teil 2: Datenübertragung (Protokoll)

Teil 3: Datenspeicherung (Datenbank)

Teil 4: Datenmanagement (Abstrakte Datentypen, Konvertierungen, ect.)


Sie ist in zehn Schichten aufgebaut:

Schicht 1: Benutzeroberfläche

Schicht 2: Programmlogik - individuell

Schicht 3: Transportaufbereitung –- clientseitig – individuell/abstrakt
Die Daten werden in dieser Schicht für oder aus dem Transport aufbereitet

Schicht 4: Transportsteuerung -– clientseitig – abstrakt
Steuerung der Transportschicht auf der Clientseite

Schicht 5: Transport – abstrakt

Schicht 6: Transportsteuerung -– serverseitig – abstrakt
Steuerung der Transportschicht auf der Serverseite

Schicht 7: Transportaufbereitung –- serverseitig – individuell/abstrakt
Die Daten werden in dieser Schicht für oder aus dem Transport aufbereitet

Schicht 8: Datenbanklogik – individuell

Schicht 9: Datenbankengine – abstrakt

Schicht 10: Datenbankdateien


Das Protokoll verfügt über ein mehrfaches Fehlerprotokoll, welches in den verschiedenen Schichten des Transportes Datenübertragunsfehler automatische korrigieren kann. Auch ist ein paralller Betrieb zweier Server möglich, so dass bei Totalausfall eines Servers die Clients automatisch zum zweiten Server wechseln. Alle Fehler werden in einem Logbuch eingetragen. In diesem Logbuch werden auch alle anderen wichtigen Ereignisse festgehalten.

Die Daten werden verschlüsselt übertragen. Dafür gibt es zwei Schlüssel. Ein 4096-Bit-Schlüssel zur Verschlüsselung der Daten sowie ein 128-Bit-Schlüssel zur Verschlüsselung der Steuercodes des Protokolls. Der Datenschlüssel wird bei jedem neuen Login eines Benutzers neu generiert und gilt damit für die gesamte Sitzung bis zum Logout. Der Steuercodeschlüssel wird für jede neue Verbindung während einer Sitzung neu generiert. Für die Verschlüsselung des Steuercodes wird ein Verschlüsselungsalgorithmus und für die Verschlüsselung der Daten zwei verschiedene sich ergänzende Verschlüsselungsalgorithmen verwendet.

Die Architektur verfügt über eine eigene Benutzerverwaltung. Das Loginverfahren ist zweistufig und erfolgt über eine klassische Benutzernamen/Passwort-Kombination wobei Benutzername und Passwort dabei nicht gemeinsam übertragen werden. Es beinhaltet ein Programmrechtesystem womit ein Benutzeraccount an bestimmte Clientprogramme gebunden werden kann und einem klassischen
8-stufigen Rechtesystem innerhalb der Programme. Es ist ein Nachrichtensystem vorhanden womit Mitteilungen vom Administrator zum individuellen Benutzer gesendet werden können. Desweiteren ist ein Updatesystem enthalten durch die eine Aktualisierung der Clientprogramme möglich ist.

Die Datenbankengine verfügt über einen intelligenten Cache zum schnelleren abarbeiten von Datenbankaktionen. Weiterhin ist ein Rollback enthalten. Bei Datenbanktransaktionen die sich aus mehreren Datenbankaktionen zusammensetzen, kann damit das nur teilweise abarbeiten einer Datenbanktransaktion verhindert werden. Die Suchalgorithmen basieren auf sortierten Listen und pefekt ausgeglichenen Binary-Search-Tree.

Die Rechenlast des Servers kann auf drei bei paralllem Betrieb von zwei Servern auf sechs Rechner verteilt werden.