Ich halte ein an HTTP-angelehntes Format am sinnvollsten. Die
Aufteilung in einfache Schlüssel-Werte-Paare als Header, die Angabe
einer Adresse, das Standardformat für die Version und der vom Header
sauber getrennte Body sind Anforderungen für jedes Protokoll und mit
HTTP erfolgreich im Einsatz. SIP hat das Format kopiert und ist damit
ebenfalls sehr erfolgreich. Ist das Protokoll nah genug an HTTP wäre
das Bedienen des Netzes per Webbrowser oder einfachem HTTP-Client
sogar möglich, wenn ein Node entsprechend tolerant ist.
Mögliche Anfragen an Hosts wären dann solche Geschichten:
DOWNLOAD /file-signature protokoll/1.2.3
…
mit einer Antwort:
protokoll/1.2.3 200 Download
Content-Length: 12312312
…
Dann gilt es das Problem zu lösen, dass sich Nodes im Netz anmelden
und andere Nodes mit gesuchten Chunks finden können müssen. Hier
kommen wir um eine zentrale Registry wohl nicht umher. Da könnten wir
auch wieder bei SIP schnüffeln - hier sind Registry-Server am Client
konfiguriert, die die Nodes zu gesuchten Chunks finden. Hierzu meldet
sich jeder Node bei seiner Registry an und nennt die bekannten Chunks.
Die Anmeldung wird in regelmäßigen Intervallen bestätigt (Hallo, ich
bin immer noch da) und Änderungen mitgeteilt. Geht der Node
kontrolliert offline, meldet sich dieser an der Registry ab - oder die
Anmeldung verfällt nach einer gewissen Frist (analog der Lease Time
bei DHCP). Der Masterknoten kann erkennen, wenn Chunks nur wenig im
Netz verteilt vorhanden sind oder ein früher erfolglos gesuchter Chunk
wieder verfügbar ist und dafür sorgen, dass andere Knoten diesen Chunk
ebenfalls vorrätig halten sollen (zur Not per Download vom Node und
Upload bei einem anderen Node). Da das ganze Dezentral laufen soll
kann auch jeder seine eigenen Masterknoten aufstellen. Um das eigene
Netz mit anderen Netzen verknüpfen zu können werden die Masterknoten
"per Hand" miteinander bekannt gemacht oder über eine Registry für
Masterknoten. Die Belastung dieser Registry wäre verhältnismäßig
gering, da es hier um reine Registrysuchen geht.
On 23 Aug., 22:20, Michael Kliewe <
michael.kli...@googlemail.com>
wrote: