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