P2P realiseerimise märkmeid
Allikas: Lambda
Kuidas P2P suhtlus õige käib? Ideid ja tähelepanekuid arutelust loengul:
Nodede list:
- igal nodel on hardcodetud ip/port list
kellega ühendust võtta
- küsija võtab järjest listi elementidega
ühendust,kuni üks vastab:
iga küsimuse juures
saadetakse enda ip/ ja kuulamis-port
a la
http://12.22.33.11:81/givemenodes?
ip=1.2.3.4&port=9000
kus 9000 on küsija kuulamis-port
ja ip on 1.2.3.4 kus ip on avalik/väline
NB! ip on optional
Vastaja võtab küsija IP/pordi ja lisab
oma listi
NB!
* nat puhul sisemine ja välimine
ja port on tihti erinevad
* natist sõltumatult on küsimise ja
vastamise port erinevad (väljuv
port on teine)
Vastaja annab küsijale oma kogu-node-listi:
NB! see on vbl halb mõte: idee et saata
list nendega, kellega ma olen viimati
suhelnud.
Küsija täiendab oma listi saadud listiga
Kui küsija ei suuda mingi masinaga
listis ühendust võtta, siis
a) ta kustutab selle (ajutiselt?)
oma listist
b) NB! Siin on mõttetu saata (st
kui ei saand kellegagi ühendust)
saadab oma (lühema) listi
kõigile teistele, postitades selle
teiste endpoindile.
Keegi X masin saab selle listi kätte,
mis siis saab? Siis ta kirjutab
oma listi üle. NB! NB! See on raske
probleem: saab maha kustutada kõigi
teiste masinate listid!!!!
Samuti ei ole realistlik reageerida
mitte-ühendusele saamisele sellega,
et kõigile saata datat.
NB! Idee, et küsija ei lepi ühe vastusega
vaid küsib hästi paljudelt.
a teab hardcodetult: b ja c
a küsib b-lt: b ei tea kedagi
nüüd b teab a-d.
a küsib edasi (N tk) c-lt: c ei tea kedagi
nüüd c teab a-d.
vahepeal läheb b küsima a käest (sest
teab a-d) ja saab listi: b ja c
nüüd b teab c-d!
nüüd b küsib c-lt: c teab a-d.
nüüd teab c ka b-d.
NB! mingi sagedusega tuleks käia
automaatselt küsimas, siis see
skeem propageerib ok.
a b c
d e f
tsentr serverid on kõigile
hardcodetud eriti reliable noded
iga node, kellele saadetakse ip/port
kontrollib, kas ta saab sellega
ühendust ja alles siis lisab
kuidas panna tsentraalsesse serverisse
piisav hulk infot?
hardcodetud tsentraalsed serverid?
võiks olla mitu tsentraalset
serverit
variant:
- igaüks püüab ennast tsentr
serverisse panna
- kui palju node peaks tsentr
serveris olema?
- optional:
keegi algul ise käsitsi lisab 100
aga mis edasi?
- iga node regulaarselt püüab ennast
saata tsentr serverisse ennast?
tsentr server kontrollib, kas sinuga
saab ühendust, et ei saaks mass
valeinfot
Bloki saatmise teema
====================
väga sarnane node listi maintainisega:
kõigil peaks olema sama blokilist
erinevused:
- vahel tekivad uued blokid,
mida tuleks propageerida,
a la nagu tuleks üles uus node?
- blokid on ahelas: uus blokk peab
olema sama eellasega
alguscase:
a: pole ühtegi blokki
b: pole ühtegi blokki
a ja b samaaegselt teevad blokid
1212 ja 45234
hiljem:
a: blokk 1
b: blokk 1, blokk 2
c: blokk 1, blokk 2
genereerib blokk 3
siis b saab selle lisada
ja a ei saa (kui ta ei lisa
blokk 2 vahele)
taustaks:
- node peaks valima pikema
ahela kui on mitu ahelakandidaati