| 102 | |
| 7 | |
| Erstellung | 22.12.2024 |
Autor:
1 Einleitung
Das Neocast Message Exchange Protocol (NCMEP) oder Neocast-Nachrichtenaustauschprotokoll dient dem Übertragen von Neocast-Nachrichtenpaketen und verwendet zumeist WebSocket oder HTTP-Polling als zugrundeliegende Protokolle, wenngleich keine standardisierte Implementierung oder Einordnung in das OSI-Modell existiert. Diese Norm legt nur die Struktur des Protokolls fest.
2 Paketstruktur
Jedes NCMEP-Paket besteht aus einem Statuscode, einem Nachrichtenkörper und einem Header,
durch welchen Metadaten im Schlüssel-Wert-Format kodiert werden können. Darüber hinaus
existieren Kontrollelemente, die durch das Backend interpretiert werden KÖNNEN.
Die Paketstruktur ist wie folgt definiert:
3 Statuscodes
NCMEP definiert folgende dreistellige Statuscodes, die Server wie Client verwenden SOLLTEN, um Logik zu implementieren.
4 Das Handshake-Protokoll
Vor dem Betreten eines Nachrichtentunnels tauschen Client und Server Informationen ob der Natur der Verbindungsaufnahme aus. Dabei wird dem folgenden Schema gefolgt:
-
Client-Hello
Der Client stellt eine Verbindung zum Server her. -
Server-Hello („Pförtner“)
Der Server antwortet mit einem der folgenden Statuscodes:- 101: Die Verbindung wird zugelassen.
- 252: Die Verbindung wird abgelehnt.
-
Kanalanfrage
Der Client übermittelt ein Paket mit leerem Körper und dem gewünschten Kanal in einem Header kodiert. -
Serverantwort („Operator“)
Der Server überprüft den Benutzernamen und die Prüfsumme sowie die Verfügbarkeit des gewünschten Kanals. Einer der folgenden Statuscodes wird zurückgesendet:- 200: Der Client wird dem Kanal zugewiesen; der Austausch ist abgeschlossen.
- 241: Authentifizierung nicht erfolgreich; Verbindung wird unterbrochen.
- 243: Authentifizierung ist erfolgreich, Zugriff zum Kanal jedoch verweigert.
5 Sicherheitsüberlegungen
- Prüfsummenvalidierung. Die signierte Prüfsumme (s.o.) stellt sicher, daß Benutzernamen authentifiziert werden und Nachrichten nicht leicht gefälscht werden können. Implementierungen SOLLTEN starke Schlüsselpaare potenter asymmetrischer Verschlüsselungsverfahren verwenden.
- Verschlüsselung. Die Transportschicht SOLLTE Transport Layer Security [TLS] implementieren, um das Abfangen von Nachrichten zu verhindern.
6 Maschinenlesbare Versionsnummern
Neben den Versionsnummern im Schema des Semantic Versioning [1] existieren auch maschinenlesbare Versionsnummern, die aus einer Ganzzahl bestehen und mit jeder Version um Eins inkrementiert werden („Versionsindex“). Folgende Zuordnung existiert:
| Versionsnummer | Versionsindex |
|---|---|
| 1.0 | 0 |
7 Referenzen
| 1 | Preston-Werner, T., “Semantic Versioning 2.0.0”, Semantic Versioning, 2024. |
|---|---|
| TLS | Rescorla, E., “The Transport Layer Security (TLS) Protocol Version 1.3”, RFC 8446, August 2018. |