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