ããã«ã¡ã¯
ãã®èšäºã§ã¯ã以äžã§æåŸ
ããããã«ãçŸä»£ã®æ§é åããããã¢ããŒãã¢ãããã¯ãŒã¯ã®1ã€ã«ã€ããŠèª¬æããŸãã ãã®è³æã«ã¯ããããã¯ã«é¢ããããã¥ã¡ã³ãã説æãèšäºã®åŠçãå«ãŸããŠããŸãã åºè«ãšããŠãp2pãããã¯ãŒã¯ã®äžè¬çãªç°¡åãªçè«ã§ããDHTãæ瀺ããããã®åŸã«ã®ã¿ãã¡ã¢ãåœãŠãããäž»èŠéšåãç¶ããŸãã
1.äžè¬çãªp2pçè«
ãŠãŒã¶ãŒéã®ããŒã¿ãããã»ããµæéãããã³ãã®ä»ã®ãªãœãŒã¹ã®åé
ã¯ãããŸããŸãªã¬ãã«ããã³çžäºäœçšã§ã®ãããã¯ãŒãã³ã°ã®ãœãªã¥ãŒã·ã§ã³ãæ¢ãããšãäœåãªããããŠããŸãã
ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®çžäºäœçšã®ä»£ããã«ãp2pïŒãã€ã³ãããŒãã€ã³ãïŒãããã¯ãŒã¯ã¯ãããé«ãã¬ãã«ã®ã¹ã±ãŒã©ããªãã£ãèªåŸæ§ãå¿åæ§ãããã³èé害æ§ãæäŸââããŸãã
以äžã«äžè¬çãªåé¡ã瀺ããŸãã
éäžåã®çšåºŠã«å¿ããŠã次ã®ã¿ã€ãã®p2pãããã¯ãŒã¯ãåºå¥ã§ããŸãã
- äžå
å
- ãã€ããªãã
- å®å
šã«åæ£å
éäžç®¡ç -ã«ãŒãã£ã³ã°ãšæ€çŽ¢ã«1ã€ä»¥äžã®ãµãŒããŒã䜿çšãããããã¯ãŒã¯ã æªåé«ã
Napsterã¯ãäžå€®éäžåã®p2pãããã¯ãŒã¯ã®å
žåçãªäŸã§ãã
ãã®ã¿ã€ãã®ãããã¯ãŒã¯ã®çæïŒ
- ãµãŒããŒã¯ãããã¯ãŒã¯ã®ããã«ããã¯ãè¡šããŸãã 倱æãããšãã·ã¹ãã ããã©ãŒãã³ã¹ãå®å
šã«å€±ãããŸãã
- ãµãŒããŒç«æ³ã®è匱æ§
- ãããã¯ãŒã¯äººå£ã倧å¹
ã«å¢å ãããšããµãŒããŒã¯äžçš®ã®DDoSæ»æãåããé害ã«ã€ãªãããŸãã
é·æïŒ
- æ€çŽ¢ãããã¡ã€ã«ã®åä¿¡ãŸã§ã®å
šããã»ã¹ã¯ãå¯èœãªéãæçã®ã¹ããŒã ïŒãµãŒããŒãžã®æ€çŽ¢èŠæ±ããµãŒããŒããã®çµæã®é
ä¿¡ãç®çã®ããŒããžã®æ¥ç¶ïŒã«åŸã£ãŠå®è¡ãããŸãã
ããã«ãåŸã§ç€ºãããã«ãå®å
šäžèŽã ãã§ãªãéèŠãªæ€çŽ¢ãå¯èœã§ãã
ãã€ããªãã-2çš®é¡ã®ããŒããå«ããããã¯ãŒã¯ïŒæ±çšããŒããšã¹ãŒããŒããŒãïŒã¹ãŒããŒãã¢ïŒã åŸè
ã¯ç¹å®ã®æ¡ä»¶ã«å¿ããŠåçã«å²ãåœãŠããããããã¯ãŒã¯äžã®ããŒã¿ã®ã«ãŒãã£ã³ã°ãšã€ã³ããã¯ã¹äœæãå¶åŸ¡ã§ããŸãã
çæãšé·æã¯ãããã€ããªãããã®çšåºŠã«äŸåããŸã-ã©ã®ç¹æ§ãéäžåããç¶æ¿ããã©ã®ç¹æ§ãåæ£åããç¶æ¿ããŸãïŒåŸã§èª¬æããŸãïŒã
åæ£å -ãã®ã¿ã€ãã®ãããã¯ãŒã¯ã¯ããµãŒããŒã®å®å
šãªæ¬ åŠãæå³ããŸãã ããã«ããããããã¯ãŒã¯ã®ããã«ããã¯ã解æ¶ãããŸãã
çæïŒ
- çµæã®ä¿¡é Œæ§ãä¿èšŒããªãå Žåãããç¹å®ã®ã«ãŒãã£ã³ã°ããã³æ€çŽ¢ã¢ã«ãŽãªãºã ãå¿
èŠã§ãã
- ãã®ãããªãããã¯ãŒã¯ã«å«ããã«ã¯ãå°ãªããšã1ã€ã®ããŒãã®åº§æšãç¥ãå¿
èŠããããŸãããã®ããããããã¯ãŒã¯åå è
ã®äžå®éã®ã¢ãã¬ã¹ããŒã¿ãå«ããªã¹ãã¯ãå
¬éãµã€ãïŒãµã€ããªã©ïŒã§å
¬éããå¿
èŠããããŸãã æ¥ç¶ããã»ã¹èªäœã¯ãããŒãã¹ãã©ãã/ããŒãã¹ãã©ããã¹ããŒãžãæå³ããããããã®ãããªãªã¹ãã¯ããŒãã¹ãã©ãããªã¹ããšãåŒã°ããŸãã
é·æïŒ
- ãµãŒããŒã®é€å€ã«ãããåå è
ã®æ°ãæ¥éã«å¢å /æžå°ããŠãããããã¯ãŒã¯ã¯ãã©ãŒã«ããã¬ã©ã³ãã«ãªããŸãã
- æ€é²ä¿è·ã®åŒ·å
åæ£ãããã¯ãŒã¯ã¯ãæ§é åãšéæ§é åã«åããããšãã§ããŸãã æåã®ã±ãŒã¹ã§ã¯ããããã¯ãŒã¯ããããžã¯ç¹å®ã®ã«ãŒã«ã«åŸã£ãŠæ§ç¯ãããŸããããã«ãããæ£ç¢ºãªäžèŽã«ãã£ãŠã®ã¿ã¯ã€ãã¯ããŒã¿æ€çŽ¢ãæŽçã§ããŸãã å®éãåããŒãã¯ãç¬èªã®ããŒã¿é åïŒãã®ãããªé åã®å²ãåœãŠæ¹æ³ãå€èŠ³ãã«ãŒãã£ã³ã°ããŒãã«ã®é
眮-ãã¹ãŠãç¹å®ã®ãããã¯ãŒã¯ããããžã«äŸåããŸãïŒãæ
åœããŸãã éæ§é åãããã¯ãŒã¯ã§ã¯ããªã¯ãšã¹ããéä¿¡ã§ããå Žæãäºåã«ããããªããããæãåçŽãªããŒãžã§ã³ã§ã¯ããã©ãããªã¯ãšã¹ãã®ãªãã·ã§ã³ã䜿çšãããŸããããŒãã¯ãªã¯ãšã¹ããè¿é£ã®ããŒããç¬èªã®ããŒããªã©ã«éä¿¡ããŸãã ãã®ãããªèŠæ±ã«å¯ŸããŠTTLïŒTime To LiveïŒãå®çŸ©ãããŠããããšãéèŠã§ããããã«ãããç¹å®ã®æ°ã®ãããã¯ãŒã¯ããžã£ã³ãããåŸã«ããããåæã§ããŸãã æããã«ãTTLãäœããšããããã¯ãŒã¯ã¯ïŒäžéšã®ãœãŒã¹ã«å°éããããšãªãïŒèª€ã£ãæ€çŽ¢çµæãçæããé«ãæ€çŽ¢çµæ-èŠæ±ã®æéãšãã©ãã£ãã¯éã容èªã§ããªãã»ã©å¢å ããå¯èœæ§ããããŸãã ãã ããæ§é åãããã¯ãŒã¯ãšã¯ç°ãªããå®å
šã«äžèŽãããã®ã ããæ€çŽ¢ããããšã¯ã§ããŸãããããã¯ããã¡ã€ã«å
±æã·ã¹ãã ã«ãšã£ãŠéèŠã§ãã æ§é åãããŠããªããããã¯ãŒã¯ã®æ¡åŒµæ§ã¯ãååšããªããšããŠããéåžžã«åé¡ããããŸãïŒTTLã®ååšãšããŒã¿ã®æ€çŽ¢æéã®å¢å ïŒã
æ§é åãããã¯ãŒã¯ã®ããããžãšãããã³ã«ãèšèšããå Žåã次ã®é¢ä¿ãæé©ãšèŠãªãããŸãã
-åããŒãã®ã«ãŒãã£ã³ã°ããŒãã«ã®ãµã€ãºïŒOïŒlogïŒnïŒïŒ
-æ€çŽ¢ã®é£æ床ïŒOïŒãã°ïŒnïŒïŒ
2. DHT
DHTïŒåæ£ããã·ã¥ããŒãã«ïŒ-åæ£ããã·ã¥ããŒãã«ã ãã®æ§é ã¯ãåæ£ããããžã«ãã䜿çšãããŸãã ãã ãããããå¯äžã®éžæè¢ã§ã¯ãããŸããïŒãã ããæç®ã瀺åããŠããããã«ãããã§ããã«ç¬ç«ããæ€çŽ¢ãè¡ãããšããå§ãããŸãïŒã
åããŒãã®åå€ïŒããŒã¿ïŒã«å¯ŸããŠãããã·ã¥ãç¹å®ã®ã«ãŒã«ïŒSHA-1ã䜿çšãããªã©ïŒã«åŸã£ãŠèšç®ããããããããŒã«ãªããŸãã ãŸããããŒãèå¥åãèšç®ãããŸãïŒããã·ã¥ãšåãé·ãã§ãå€ãã®å Žååãé¢æ°ã§ãïŒã ãããã£ãŠãåãã¹ãã«ã¯ç¬èªã®èå¥åããããŸãã ããŒã¯ãªã³ã©ã€ã³ã§å
¬éãããŸãã ããŒãã¯ãç¹å®ã®ã¡ããªãã¯ïŒè·é¢ïŒã§ããã«è¿ãããŒãã«ã®ããŒãæ
åœããŸããããã§ãæ°åŠã®èšèªãçç¥ããå ŽåãããŒã¯èå¥åãšãé¡äŒŒãããŠããããšãããããŸãã ãã®ãããããŒãšé¢é£æ
å ±ïŒå€ãé
眮ãããŠããããŒãã®åº§æšïŒãä¿åãããšããåããŒãã¯ç¬èªã®è²¬ä»»é åãå æããŸãã ããã«ãããç¹å®ã®æ¹æ³ã§æ£ç¢ºãªå€ã«åŸã£ãŠæ€çŽ¢ã¢ã«ãŽãªãºã ãæŽçã§ããŸãïŒæåã«ããã¡ã€ã«åãªã©ã®æ€çŽ¢çšã®å€ããŒãèšç®ãã次ã«ããã«ãã¹ãæäŸãã仲ä»è
ãä»ããŠãããæ
åœããããŒãã«èŠæ±ãéä¿¡ããããšã«ããããã®ããŒãæ€çŽ¢ããŸãïŒã
DHTã¯ã埩å
åãšã¹ã±ãŒã©ããªãã£ãå®å
šã«æäŸããŸãã ããšãã°ãPeer Exchangeãšçµã¿åãããŠãDHTã䜿çšãããšãTorrentãã©ãã«ãŒã®æ©èœãååã§ããŸãã
3.ã«ãã ãªã¢
ã¡ãŒãã«æ³
ãã®ããããžã®äœæè
ã¯ãPetar MaymounkovãšDavidMaziÚresã§ãã ãããã³ã«ãšããŒãã«ã®æ§ç¯ã¯ãXORã¡ããªãã¯ã«ããããŒãéã®è·é¢ã®æ±ºå®ã«åºã¥ããŠããŸãã
dïŒxãyïŒ= x XOR yã è·é¢ã¯XORæŒç®ã®çµæã§ãããç°ãªããããã®æ°ã§ã¯ãªããæ°å€ãšããŠè§£éãããããšã«æ³šæããããšãéèŠã§ãïŒãã®åºæºã¯ãããŒ/èå¥åã¹ããŒã¹ã§ã¡ããªãã¯ãçæããããšãã§ããŸãïŒã ã€ãŸã ããŒé·ã4ãããã®å ŽåïŒdïŒ2,5ïŒ= 0010 XOR 0101 = 0111 = 7ã
XORã¡ããªãã¯ã¯ãã¡ããªãã¯ã®ãã¹ãŠã®å
¬çãæºãããŸãã
-
d ( x , y ) >= 0 // d ( x , y ) == 0 <=> x == y d ( x , y ) = d ( y , x ) // d ( x , y ) <= d ( x , z ) + d ( z , y ) //
-
d ( x , y ) >= 0 // d ( x , y ) == 0 <=> x == y d ( x , y ) = d ( y , x ) // d ( x , y ) <= d ( x , z ) + d ( z , y ) //
-
d ( x , y ) >= 0 // d ( x , y ) == 0 <=> x == y d ( x , y ) = d ( y , x ) // d ( x , y ) <= d ( x , z ) + d ( z , y ) //
-
d ( x , y ) >= 0 // d ( x , y ) == 0 <=> x == y d ( x , y ) = d ( y , x ) // d ( x , y ) <= d ( x , z ) + d ( z , y ) //
ãã®ããããã£ã¯ãã«ãŒãã£ã³ã°ããŒãã«ã®ãµã€ãºãšæ€çŽ¢ã®è€éãã«é¢ããè«æã®æ£åŒãªèšŒæã®å¯èœæ§ã«é¢é£ããŠèšèŒãããŠããŸãã ïŒå
¬å¹³ã«ãæŠèŠãšããŠæäŸïŒã
ã«ãŒãã£ã³ã°ããŒãã«
ã«ãŒãã£ã³ã°ããŒãã«ãæ§ç¯ããããã®ã¢ã«ãŽãªãºã ã¯ãããŒãéã®è·é¢ã®èšç®ã«åºã¥ããŠããŸãïŒèå¥åã«ã¡ããªãã¯ãé©çšããããšã«ããïŒã
ããŒãã«ã®içªç®ã®ååã¯ã2 ^ïŒi + 1ïŒãã2 ^ iãŸã§ã®è·é¢ã«ããããŒãã«é¢ããæ
å ±ãæ ŒçŽããŸãã ãããã£ãŠãããŒã0111ã®æåŸã®åã«ã¯ãããŒã1xxxã«é¢ããæ
å ±ãæåŸãã2çªç®ã®ããŒãã«é¢ããæ
å ±ãããŒã00xxã«é¢ããæ
å ±ãããã«1ã¬ãã«è¿ãããŒã010xã«é¢ããæ
å ±ãå«ããããšãã§ããŸãã
ãã¡ãããå®éã®ãããã¯ãŒã¯ã§ã¯ãããŒã®é·ãã¯éåžž128ããããŸãã¯160ãããã«é©çšãããŸãã å®è£
ã«äŸåããŸãã
ããã«ãåã¬ãã«ã®æ ŒçŽããŒãã®æ°Kã«å¶éãå°å
¥ãããŸãããããã£ãŠããã®ãããªKã«éå®ãããããŒãã«ã®åã¯Kãã±ãããšåŒã°ããŸãïŒæ®å¿µãªããããã·ã¢ã®åçé³ã¯å®å
šã«äžååé³ã§ãïŒã
ã·ãŒãã«ããŒãã®èå¥åãå«ãŸããŠãããã€ããªæ€çŽ¢ããªãŒãèŠããšããã®ãããªKãã±ããæ§é ã¯ã©ã³ãã ã§ã¯ãªãããšãæããã«ãªããŸãïŒåããŒãïŒ110ã®äŸã®ããã«ïŒã¯ãåãµãããªãŒã®å°ãªããšã1ã€ã®ã¡ã³ããŒã®ç¥èãåãåããŸãïŒå¡ãã€ã¶ãããæ¥åã§ããŒã¯ããã110ã«ã€ããŠïŒã ãããã£ãŠãåKãã±ããã¯ãã¬ãã«iã®ãµãããªãŒã®åå è
ãK人以äžã§ããããŒãã®æ¥ç¶ãåæ ããŸãã
ãããã³ã«
Kademliaãããã³ã«ã«ã¯ã4çš®é¡ã®ã¡ãã»ãŒãžãå«ãŸããŠããŸãã
- ping
- åºè
- FIND_VALUE
- FIND_NODE
PING㯠ããããã¯ãŒã¯å
ã®ç¹å®ã®ããŒãã®ååšã確èªããããã«å¿
èŠã§ãã ããšãã°ãKãã±ããã«ããŒããè¿œå ããããšãããšãããã§ã«ãã£ã±ãã«ãªã£ãŠãããšãã«äœ¿çšãããŸããæ¢åã®ããŒããããŒãªã³ã°ãããå¿çããªãå ŽåãããŒããæ¿å
¥ãããŸãã å€ãããŒããKãã±ããã®äžéšã«ããããšã¯æ³šç®ã«å€ããŸããããã¯ãããŒãããããã¯ãŒã¯äžã«é·ãæ®ãã»ã©ãé¢ããå¯èœæ§ãäœãããšã瀺åããå®éšããŒã¿ã«åºã¥ããŠããŸãã ãããã£ãŠã圌ãã¯æ°ãããã®ã®åŸã«ã®ã¿ã€ã³ã¿ãã¥ãŒãããŸãã
ç¹å®ã®ããŒãã«æ
å ±ãé
眮ã§ããããã«ãã
STOREãªã¯ãšã¹ãã STOREãå®è¡ããåã«ãããŒãã¯ãããªãã·ã¥ããããŒã«æãè¿ãKãèŠã€ããŠãããããŒãšãã®åº§æšãšãšãã«åSTOREã«éä¿¡ããå¿
èŠããããŸãã Kåã®ããŒãã«ããã«ã¹ãã¬ãŒãžã䜿çšãããšãæ
å ±ã®å¯çšæ§ãé«ããããšãã§ããŸãã
FIND_VALUEã¯ãšãªãããã¯å埩ã圢æããããã«é »ç¹ã«ç¹°ãè¿ããã
ããŒããšã«å€ãèŠã€ããããšãã§ããŸãã ãããã¯ãŒã¯ã«å€æ€çŽ¢ãå®è£
ããŸãã ç®çã®ããŒã¿ãæ ŒçŽããããŒãã®éæ床ã«å¿ããŠãæãè¿ãããŒãã®KãŸãã¯å€èªäœãè¿ããŸãã å埩ã¯ãå€ãè¿ããããšãïŒæåïŒããŸãã¯ãã§ã«ããŒãªã³ã°ãããKåã®ããŒããè¿ããããšãïŒãããã¯ãŒã¯ã«å€ããªããšãïŒã«åæ¢ããŸãã
FIND_NODEã¯ãæå®ãããèå¥åã«æãè¿ãKãèŠã€ããããã«äœ¿çšãããã¯ãšãª
ã§ã ïŒåäœã¯FIND_VALUEã«äŒŒãŠãããå€ãè¿ãããšã¯ãªããåžžã«ããŒããè¿ããŸãïŒïŒã ããšãã°ã次ã®ã¹ããŒã ã«åŸã£ãŠããŒãããããã¯ãŒã¯ã«æ¥ç¶ããå Žåã«äœ¿çšãããŸãã
-ããŒãã¹ãã©ããããŒãã«é£çµ¡ãã
-FINS_NODEãªã¯ãšã¹ããšãã®èå¥åãbsããŒãã«éä¿¡ããããã«ç¹°ãè¿ãéä¿¡
-Kãã±ãããæŽæ°ããŸãïŒãã®å Žåãæ°ããããŒãã®Kãã±ãããšãæž¡ããããã¹ãŠã®èŠæ±ãæŽæ°ãããŸãïŒããã§ã¯XORã¡ããªãã¯ã®å¯Ÿç§°æ§ãæå
ã«ãããŸãïŒïŒ
ã芧ã®ãšãããä»æ§ã®ãããã³ã«ã¯å®è³ªçã«ã»ãã¥ãªãã£ã®åé¡ãã«ããŒããŠããŸãããããã¯KademliaããŒã¹ã®ãããã¯ãŒã¯ã®æ»æã«é¢ããç 究ãšåãçµã¿ã«åæ ãããŠããŸãã
æ©èœã®ãã¡ãã¬ããªã±ãŒã·ã§ã³ã®ååšãå€ã®ã©ã€ãã¿ã€ã ïŒäžå®æéåŸã®åå²ãåœãŠã®å¿
èŠæ§ïŒãããçãæéã§å¿
èŠãªããŒãã«å°éããããã«FIND_ *èŠæ±ãéä¿¡ããéã®åæå®è¡ïŒÎ±ã§ç€ºãããéåžžã¯3ã«çããïŒã匷調ãã䟡å€ããããŸãã èŠæ±ãæž¡ããããã³ã«ãKãã±ããã®æŽæ°ãè©Šè¡ãããŸããããã«ãããã«ãŒãã£ã³ã°ããŒãã«ãå¯èœãªéãæé©ãªç¶æ
ã«ä¿ã€ããšãã§ããŸãã
4.å®è£
ãŸããæãæåãªKademliaããŒã¹ã®ãããã¯ãŒã¯ã¯ã
aMule /
eMuleã§å©çšå¯èœãªKadãããã¯ãŒã¯ã§ãã ããŒãã¹ãã©ããã«ã¯ãeDonkeyã®æ¢åã®ããŒãã䜿çšãããŸãã
Khashmir -BitTorrentã§äœ¿çšãããKademlia Pythonå®è£
çŸåšéçºäžã®ã¢ã¯ãã£ããªã©ã€ãã©ãªã®ãã¡ã
maidsafe-dht -
UDTããã³
NAT TraversalããµããŒãããC ++ã€ã³ãã©ã¹ãã©ã¯ãã£ã®å®è£
ã
Mojito -LimeWireã®Javaã©ã€ãã©ãªã
5.次ã¯ïŒ
ãã詳现ã«æãäžããã¹ãã§ãããã®ã«ã€ããŠã®ã³ã¡ã³ããåãåããã ãã®èšäºã¯éåžžã«è¡šé¢çãªãã®ã§ãã èå³ãããããäžåºŠã«ãã¹ãŠã®ã«ãŒããããŒãã«ã«çœ®ããªãããã ç§èªèº«ã¯ãKademliaã«ã€ããŠã®æ¬¡ã®èšäºã§ãã»ãã¥ãªãã£ã®åé¡ãæ»æãããã³ãã®é²æ¢ã«ã€ããŠè©±ãäºå®ã§ãã
6.ææãšãªã³ã¯