Added protocoll specs
This commit is contained in:
parent
950d729b3b
commit
04f3e33718
51
ws2012/P2P/uebungen/2/p2p_networkstack_protocoll.txt
Normal file
51
ws2012/P2P/uebungen/2/p2p_networkstack_protocoll.txt
Normal file
@ -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.
|
||||
Loading…
x
Reference in New Issue
Block a user