Thema: Begriffserklärungen
-
30.07.2011, 06:49 #1
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsBegriffserklärungen
Da man hier immer wieder Begriffe wie Paket, Token und Opcode durcheinander bringt, hab ich mal eine kleine Übersicht für euch zusammen gestellt. Ich hoffe, dass es ist nicht zu kompliziert ist und ich durch diesen Thread einige Missverständnisse aus dem Weg räumen kann. Wenn mir nachträglich noch was einfällt, werde ich es selbstverständlich ergänzen.
Paket
Client und Server sprechen nicht etwa Deutsch oder Englisch, sondern eine eigene Sprache. Sie kommunizieren mit Bytes, welche aber nicht einzeln verschickt werden, sondern als Paket. Bytes - und so auch Pakete - drückt man am besten in Hex aus, Bsp.: 9D A4 EE 84 88. Bei Knuddels ergeben die Bytes zusammengefügt einen String - 1999 halt, also kann man es auch in ASCII ausdrücken. Bei einem Paket aber, dem Module-Paket, ist das nicht der Fall, hier heißt es dann bspw. einfach 5 statt "Hallo". Bei dem Popup-Paket ist es teilweise auch so.
Delimiter
Oder anders ausgedrückt: Trennzeichen. Heutzutage braucht man Delimiter eigentlich gar nicht mehr, da Client und Server genau wissen wie lang das Paket oder einzelne Teile des Pakets sind, statt einem Trennzeichen stellt man hierzu ein Byte voran welches die Länge angibt. Aber bei Knuddels hat sich das noch nicht durchgesetzt, um das Paket in verschiedene Teile zu splitten verwenden sie das Null Char (Oktal: \0 bzw. \000, Hex: 00) als Delimiter.
Token
Token sind die einzelnen Teile eines Pakets welche durch einen Delimiter getrennt werden.
Opcode
Der Opcode (Operation Code) ist der erste Teil des Pakets, bei Knuddels ebenfalls durch einen Delimiter vom Rest getrennt, welcher angibt um welches Paket es sich handelt.
Paketname
Der Paketname ist der Name des durch den Opcode gekennzeichneten Pakets. Wie Knuddels die Pakete nennt bleibt uns vorenthalten, aber wir können ihnen ja eigene Namen verpassen. Das einfachste wäre bspw. das Paket welches durch den Opcode "e" gekennzeichnet wird e-Paket zu nennen, oder um es einen Namen zu verpassen welcher das Paket etwas besser beschreibt: Message-Paket.
Input
Vom Client aus bezeichnen wir die Pakete als Input, die der Server zum Client sendet. Vom Server aus (relevant für Emulatoren) sind es die, die der Client zum Server sendet.
Output
Wie man sich denken kann ist Output das Gegenteil von Input, sprich die Pakete die vom Client aus gesehen von Client zu Server und vom Server aus gesehen von Server zu Client gesendet werden.
KLogger
Download: Source ist mal wieder nicht mehr vorhanden, aber ich schreib die Tage eine neue Version und stell euch diese dann hier zur Verfügung.
Der KLogger ist ein manipulierter Client (Input entspricht also Server->Client und Output entspricht Client->Server) zum Loggen von Paketen. Pakete werden sowohl als Hex als auch als Ascii dargestellt, mit Ausnahme von Sonderzeichen welche in der Ascii-Darstellung durch einen Punkt ersetzt werden. Um zu identifizieren um welches Zeichen es sich handelt muss man sich die Hex-Darstellung anschauen und gegebenfalls mit einen Hex Converter arbeiten.
Beispiel
Code:>> 65 00 2F 4B 61 63 6B 70 6F 6F 00 54 65 73 74 e.Knuddels.Test
-
30.07.2011, 09:46 #2
- Registriert seit
- 31.01.2011
- Beiträge
- 54
Thanked 106 Times in 41 PostsBegriffserklärungen
Warum nicht UTF-8 und nullbytes als \0 anzeigen das man sie gleich besser erkennen kann im KLogger?
-
30.07.2011, 10:25 #3
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsBegriffserklärungen
Weil es nicht nur beim Null Char der Fall ist, es gibt viel zu viele Sonderzeichen. Bspw. \001, wie willst du das Zeichen erkennen, ob es nun durch ein Punkt ersetzt wurde oder nicht? Zum Loggen von Paketen eignet sich Hex halt am besten, oder wie stellst du dir das beim Module-Paket vor? Gewöhnt euch besser mal daran, denn Knuddels ist veraltet.
Edit: Und Ascii bezieht sich hier auf die Darstellung, nicht auf die Kodierung.
Edit: Und was ist wenn jemand im Chat \0 schreibt? Wenn man alles richtig loggen will, kann man auf Hex einfach nicht verzichten.
-
30.07.2011, 20:06 #4
- Registriert seit
- 22.05.2012
- Beiträge
- 203
Thanked 21 Times in 9 PostsBegriffserklärungen
Bis Flav einen neuen KLogger codet, hab ich für euch den alten mal updatet. Ich hatte den Logger ein wenig geändert, loggt kein Hex sondern ganz normal.
Download:
Mirror 1: Klogger afg
Mirror 2: Klogger afg
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.