summaryrefslogtreecommitdiffstats
path: root/Konzept/Netzwerk.txt
blob: 53cd9a1e2d357b511eb8334e02d8c370ef0f5cdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Ideen zum Netzwerkstack:


Alles TLS-verschlüsselt.


Initalisierung der Verbindung:

Client/Dämon -> Server
+---+---+---+-------+-------+---------------------+---------------------+
| 1 | 2 | 3 |   4   | 5 - 6 |          7          |          8          |
+---+---+---+-------+-------+---------------------+---------------------+
|'M'|'A'|'D'|'C'/'D'|Version|min. Protokollversion|max. Protokollversion|
+---+---+---+-------+-------+---------------------+---------------------+

Server -> Client/Dämon
+---+---+---+---+-------+----------------+---+
| 1 | 2 | 3 | 4 | 5 - 6 |        7       | 8 |
+---+---+---+---+-------+----------------+---+
|'M'|'A'|'D'| 0 |Version|Protokollversion| 0 |
+---+---+---+---+-------+----------------+---+


Datenpakete:

+-------------------+----------+-------+-------------------+-----
|       1 - 2       |  3 - 4   | 5 - 6 |        7 - 8      | 9 - ...
+-------------------+----------+-------+-------------------+-----
|Typ des Datenpakets|Request-ID|   0   |Größe der Nutzdaten|Nutzdaten
+-------------------+----------+-------+-------------------+-----

Jeder Client/Dämon und der Kern verwalten ihre eigenen Request-IDs, und insgesamt wird ein Request durch Quelle und ID identifiziert.
Damit es nicht zu Konflikten zwischen vom Kern und von Clients/Dämonen generierten IDs kommt, ist bei Client/Dämon-IDs das letzte Bit gesetzt, bei Kern-IDs nicht. 


Implementierte Pakettypen:

0000: OK (leeres Paket)
0001: Error (Fehlerinformationen)
0002: Disconnect (leeres Paket)
0010: Identify request (bisher: enthält den Namen des identifizierenden Dämons)
0011: Identify reply (bisher: leer)

Mögliche Pakettypen:

* Zertifikat-Anfrage
* Zertifikat-Antwort
* Login-Anfrage -> Übertragung von Kerberos-Daten
* Login-Antwort
* Dämon-Discovery
* Status-Anfrage (an Kern/Dämon)
* Status-Antwort
* Kommando (Shutdown, etc.)
* Kommando-Antwort
* Verbindung trennen - Anfrage und Antwort (implementiert)
+ weitere Anfragen und Antworten...