Eigenes Netzwerkprotokoll entwerfen



  • Hallo,

    ich hab schon ein wenig gegoogelt; gibt es sowas wie ein Design-Pattern für Netzwerkprotokolle? Ich hab eine Server Anwendung mit mehreren Clients. Jetzt sollen Daten ausgetauscht werden, sowas wie "Authentifizierung" "Sende Datei" usw.

    Gibt es irgendwo ein Beispiel wie man solch ein Protokoll aufsetzt? Programmiersprache wäre Java. Die ganz billige Variante mit Zeichenketten wie SendFileSendFile in einem Stream will ich dann doch nicht 😉





  • noobLolo schrieb:

    rpc?

    Remote Procedure Call?
    Role Play Convention?
    Reynolds Porter Chamberlain?

    Hat man eigentlich Vorteile, wenn man englischsprachige Browser verwendet?
    🙂



  • In letzter Zeit findet man immer mehr Applikationen, die einfach alles als XML-Schnippel rumschicken.

    Wenn man nicht will, dass jeder einfach mitlesen kann weil alles Klartext ist, kann man es schön in SSL einwickeln.

    Wenn man bedenken wegen des hohen Traffic hat den so ein Protokoll verursacht, kann man die Daten auch komprimieren. Text komprimiert ja seht gut. Man kommt damit zwar nicht an die Effizienz eines schlanken binären Protokolls dran, aber oft reicht es aus um in einen Bereich zu kommen wo es "OK" ist.

    Wenn man keine Connection braucht (z.B. weil man sowieso alles "stateless" macht), kann man auch gleich einen HTTP Application Server ala Tomcat dafür verwenden. Dann muss man nichtmal mehr auf die Socket-Ebene runtersteigen, sondern kann alles hübsch "high-level" machen.

    Hat natürlich mehr Overhead (Traffic, CPU) als ein eigenes binäres Protokoll mit eigener Server-Applikation, aber das ist bei vielen Anwendungen komplett egal.

    Dafür hat es einige Vorteile. Die IMO wichtigsten sind dass so ein Protokoll meist leicht erweiterbar/anpassbar ist, und dass es gut verständlich ist/die Einlernzeit (z.B. für neue Mitarbeiter) sehr kurz ist.



  • Protokollant schrieb:

    Hallo,

    ich hab schon ein wenig gegoogelt; gibt es sowas wie ein Design-Pattern für Netzwerkprotokolle? Ich hab eine Server Anwendung mit mehreren Clients. Jetzt sollen Daten ausgetauscht werden, sowas wie "Authentifizierung" "Sende Datei" usw.

    Gibt es irgendwo ein Beispiel wie man solch ein Protokoll aufsetzt? Programmiersprache wäre Java. Die ganz billige Variante mit Zeichenketten wie SendFileSendFile in einem Stream will ich dann doch nicht 😉

    Benutz doch ein bekanntes Protokoll, wie FTP z.B. Fertigen Code für Java wirst Du sicherlich irgendwo finden.



  • Ich wuerd mir auch RPC (was hier offensichtlich fuer Remote Proceure Call steht) anschauen, das geht in Java relativ einfach, ausser du hast spezielle Bedenken bzgl. Sicherheit etc.; k. A. welche Mechanismen Java-RPC dir da bietet.



  • Protokollant schrieb:

    Hallo,

    ich hab schon ein wenig gegoogelt; gibt es sowas wie ein Design-Pattern für Netzwerkprotokolle? Ich hab eine Server Anwendung mit mehreren Clients. Jetzt sollen Daten ausgetauscht werden, sowas wie "Authentifizierung" "Sende Datei" usw.

    Gibt es irgendwo ein Beispiel wie man solch ein Protokoll aufsetzt? Programmiersprache wäre Java. Die ganz billige Variante mit Zeichenketten wie SendFileSendFile in einem Stream will ich dann doch nicht 😉

    Es macht wenig Sinn eigene Securityprotokolle zu entwickeln, da sich so sehr schnell Fehler einschleichen können.

    Ich rate dir also Dringend auf eine bestehende Sicherheitsinfrastruktur aufzusetzen.
    Es gibt SSH, SSL und ganz einfach zum Einbau in eigene Programme: SASL

    http://de.wikipedia.org/wiki/SASL

    Das hat übrigens auch den Vorteil, daß du in einem Heterogenen Netzwerk, bei dem Benutzer verschiedene Dienste nutzen können sollen, nur eine einzige Benutzer- & Passwortverwaltung benötigst.

    Wenn du etwas eigenes entwickelst, dann kann dein eigenes Zeug z.b. nur mit deinem eigenen Zeug.
    Wenn du aber SASL oder ähnliches verwendest, dann kannst du für die Benutzer einen einheitlichen Zugriff auf dein Zeug, eine SQL Datenbank, den Apache https Server usw. einrichten.

    Machst du alles einzeln, dann hast du hinterher 10 verschiedene Passwörter für 10 verschiedene Dienste und das ist Müll. So macht man das nicht.


Anmelden zum Antworten