From 04f3e3371891dedcf4c4abb99afc83dbbdbe17c1 Mon Sep 17 00:00:00 2001 From: senft-lap Date: Wed, 7 Nov 2012 11:53:14 +0100 Subject: [PATCH] Added protocoll specs --- .../uebungen/2/p2p_networkstack_protocoll.txt | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 ws2012/P2P/uebungen/2/p2p_networkstack_protocoll.txt diff --git a/ws2012/P2P/uebungen/2/p2p_networkstack_protocoll.txt b/ws2012/P2P/uebungen/2/p2p_networkstack_protocoll.txt new file mode 100644 index 00000000..83309b92 --- /dev/null +++ b/ws2012/P2P/uebungen/2/p2p_networkstack_protocoll.txt @@ -0,0 +1,51 @@ + Client Server +1. push,length -----------------> +2. <---------------- buffer size, DATA_ID +3. chunks -----------------> + + ------------------------------------------------ +| MESSAGE_TYPE | SESSION_ID | CHUNK_ID | DATA | + ------------------------------------------------ + +MESSAGE_TYPE (1 byte) = 0 (push) + 1 (data) + 2 (pop) + 3 (print) + +SESSION_ID = Große Daten kommen in mehrere Packeten an. Damit der Server weiß, zu +welchem "Datensatz" (Session) ein Packet, gehört, gibt er jeder "Session" eine +eindeutige ID (SESSION_ID). + +CHUNK_ID = Die aufgeteilten Daten müssen nicht unbedingt in der richtigen +Reihenfolge beim Server ankommen, deshalb nummeriert der Client die "Chunks". + +DATA = Die eigentlichen Daten. + +Beispiel: + +- Server hat eine Buffersize von 5 (heißt wir können 2 Zeichen in einen + Chunk packen, weil 3 Bytes für Metadaten (MESSAGE_TYPE, SESSION_ID, + CHUNK_ID draufgehen) +- Client will "hase" pushen + + Client Server +1. --------------- Client meldet an, dass er etwas pushen möchte. + | 0 | 4 | - | - | -----------> Er teilt dem Server auch mit wie lang die + --------------- Nachricht ist, damit dieser schon Platz für die + Chunks reservieren kann. + +2. ------------------ Server gibt Client seine buffersize (5) und einen + <----------- | 1 | 2, 0 | - | - | eindeutigen Identifier für die Daten (0) + ------------------ + +3. ---------------- Client teilt seine Daten auf und schickt das erste + | 2 | 0 | 0 | ha | -----------> Datenpacket, SESSION_ID = 0 (vom Server vergeben), + ---------------- CHUNK_ID = 0 (erster Teil der Daten) + +4. ---------------- Client schickt das zweite Datenpacket + | 2 | 0 | 1 | se | -----------> SESSION_ID = 0, CHUNK_ID = 1 + ---------------- + +Der Server muss dann halt zusehen, dass er die Packet richtig zusammenbaut. +Dazu hält er alle (bisher) unvollständigen Packete zunächst in einer seperaten +List und packt diese erst auf den eigentlichen Stack, wenn alle Chunks da sind.