ä»åã¯ããã·ã¢èªã®ããã¹ããããå°ãèªç±ã«èªãããšãã§ããŸãã
ç®æ¬¡ïŒ
ããŒã1ïŒãç¥ãããããšãI2Pã«ã€ããŠè³ªåããããšãæããŠãããã¹ãŠã®ããšã
ããŒã2ïŒãã³ãã«ããžãã¯ãNetDBãããã³ãããã³ã«ãžã£ã°ãªã³ã°
ããŒã3ïŒããžã¿ã«ã¬ãŒãªãã¯
ãã³ãã«
ã€ã³ããŠã³ããã³ãã«ãšã¢ãŠãããŠã³ããã³ãã«ã¯ãåæ§ã®åçã§æ©èœããŸãã ãã³ãã«ã²ãŒããŠã§ã€ã¯ããã³ãã«ããäžå®éã®ã¡ãã»ãŒãžãèç©ããæçµçã«ãã³ãã«ã«éä¿¡ããããã®ã¡ãã»ãŒãžã圢æããŸãã 次ã«ãã²ãŒããŠã§ã€ã¯ããŒã¿ãäºåã«æå·åããæåã®ãããã§éä¿¡ããŸãã ãã®ãã¢ãšåŸç¶ã®ãã³ãã«ã¡ã³ããŒã¯ãæå·åã®å¥ã®ã¬ã€ã€ãŒãè¿œå ããŠã¡ãã»ãŒãžãéè€ããŠãããã©ããã確èªãã次ã®ãã³ãã«ã«è»¢éããŸãã
æçµçã«ãã¡ãã»ãŒãžã¯ã¿ãŒã²ããã«å°éãããã®åŸã¿ãŒã²ããèªäœã«ãã£ãŠå®å šã«åŸ©å·åããã³åŠçãããŸãã éãã¯ããã©ã³ãžãããã³ãã«ã®ãã³ãã«ã®äœæè ãã¿ãŒã²ããã«ãªãããã©ã³ãžãããã³ãã«ã®è¿œå -æå·åã®ã¬ãã«ã«ãªããŸãã ã¢ãŠãããŠã³ããã³ãã«ã®äœæè ã¯ã²ãŒããŠã§ã€ã§ãããåä¿¡è ã«å±ãã¡ãã»ãŒãžããã¢ã«ãšã£ãŠç®ç«ããªãããã«ã¡ãã»ãŒãžãäºå埩å·åããŸãã
ãã¢ã®éžæãšç¹å®ã®ã·ãŒã±ã³ã¹ã§ã®ãããã®çµã¿åããã¯ãI2Pãå¿åã§çç£æ§ãç¶æããæ¹æ³ãç解ããããã«éåžžã«éèŠã§ãïŒåŒ·åãé«é-çŽPerãïŒã
NetDBïŒãããã¯ãŒã¯ããŒã¿ããŒã¹ïŒïŒä»¥äžãåç §ïŒã«ã¯ãã¢ã¬ã³ãŒãã®éžæãã¯ãšãªãããã³ä¿åã«é¢ããç¬èªã®åºæºããããŸããããã³ãã«åæååã¯1ã€ã®ãã³ãã«ã§ä»»æã®é åºãšåæ°ã§ãã¢ã䜿çšã§ããŸãã
æå°éã®é 延ãšæ倧éã®å¹çæ§ãåããããŒã¿ãäžçäžã§å©çšã§ããå Žåãæœåšçãªè åšãèæ ®ããŠãèŠä»¶ã«åºã¥ããŠé¡§å®¢ã®ããŒãºã確ä¿ãããŸãã æ®å¿µãªãããåŸ ã¡æéãšåž¯åå¹ ã¯çæ³çã§ã¯ãªãã垯åå¹ ãæäŸã§ãããã¢ã«äŸåããŠããŸãã æäŸãããå¿åæ§ã®ã¬ãã«ã¯ããããã¯ãŒã¯ã®é床ã«åœ±é¿ãäžããŸãã
å¿åæ§ã¯åçŽã«æäŸãããŸãããã¢ã¯ãããã¯ãŒã¯å šäœããã©ã³ãã ã«éžæããããã¢ãªã¯ãšã¹ãã¯ã©ã³ãã ã«çºçããæ°žä¹ ã«æç¶ããŸãã æéã®ãã¢ããµã³ããªã³ã°ãããããã®éã®è² è·åæ£ãè¡ãããšã§ããã©ãŒãã³ã¹ãæäŸãããééæ§ãšãã©ãŒã«ããã¬ã©ã³ã¹ã確ä¿ãããŸãã ãŸãããããã¯ãŒã¯åž¯åå¹ ãå€æŽããããšãã«ãã³ãã«ã埩å ããã³åæ§ç¯ããããã«ã䜿çšãããŸãã 以åã¯ããã¹ãŠãè匱ã§éå¹ççã§ãããæ å ±ãžã®ã¢ã¯ã»ã¹ã«åé¡ããããå¿åæ§ãäžååã§ããããšã瀺åãããŠããŸããã
I2Pã¯ããããã¡ã€ã«ããšã®ãã¢ã®å¿åçµç¹ãšçµã¿åãããŠãããŸããŸãªãµã³ããªã³ã°æŠç¥ãå¹ åºãæäŸããŠããŸãã
I2Pã¯ãäžå®ã®ãã¢ãããã¡ã€ã«ã䜿çšããŠåäœããŸããããšãã°ããã¢ã1.3ç§ä»¥å ã«netDBæ€çŽ¢ã«å¿çããå Žåãäž¡æ¹ã®ãã³ãã«ïŒçä¿¡ããã³çºä¿¡ïŒã®ã«ãŒãæ å ±ãšé 延ããããã¡ã€ã«ã«èšé²ãããŸãã ããã¡ããã®ãã¹ãŠã®ãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ãå«ãŸããŠããŸãã 転éé 延ãšèŒ»èŒ³ã®æž¬å®äžã«ååŸãããããŒã¿ã¯ããã¢ãããã¡ã€ã«ã®äžéšãšããŠäœ¿çšãããŸããããç¹å®ã®ã«ãŒã¿ãŒã«é¢é£ä»ããããŸãã
ãããã¡ã€ã«ã®æ å ±ã®åéäžã«ãæ å ±ã¯äœç³»åããããã®çµæãããã©ãŒãã³ã¹ãé 延ã倧éã®æ å ±ãåŠçãããã¢ã®èœåãçŸåšããŒããããŠããéãããã³ãããã¯ãŒã¯ãžã®çµ±åã®çšåºŠã«é¢ããæ å ±ãååŸããŸãã ãããã®èšç®ã¯ãåãã¡ããããšã«åå¥ã«å®è¡ããããã®åŸããã¡ãããæ¯èŒãããæ£ã«é 眮ãããŸããé«éã§å®¹éããããé«ã¹ã«ãŒããããé皌åäžã§ãã
ãããã®ã¬ãã«ã«åæ£ããããã®ãããå€ã¯åçã«çæãããããã«ã¯ããªãåçŽãªã¢ã«ãŽãªãºã ãçŸåšäœ¿çšãããŠããŸããã代æ¿æ段ãååšããŸãã
以äžã®ããã¹ãã¯éåžžã«å ·äœçãªãã€ã³ãã説æããŠããŸãããæ»æã®åéããšããçšèªã¯ãI2Pã§äœæ¥ããŠãããŠãŒã¶ãŒã®ãªã¹ããäœæã§ããæ»æã®çš®é¡ãæããŸãã ç§ã¯èª°ããããè¯ãåçç©ãææ¡ããŠæ¬²ãããšæããŸãããã®ãªãã·ã§ã³ã¯ç§ã®è³ãåãã
ã¯ã©ã€ã¢ã³ããã³ãã«ã®å±éã¯ã容éãšé床ãæé©ãªãã¢ã®åçŽã§å¹æçãªã©ã³ãã ãµã³ããªã³ã°ã«ãã£ãŠå®è¡ãããŸãã ãµã³ããªã³ã°ãã¢ã¯netDBããå®è¡ãããæ¡åŒµã«äœ¿çšããããã¢ã¯ããçšåºŠã®å®å®æ§ïŒå€±æã§ã¯ãªãïŒããæããããäžã®é äžãïŒäžå€®ã®è² è·ãã€ã³ã-çŽPerãïŒã®è»¢éã«äœ¿çšãããŸãã ãã®ã¿ã€ãã®äœæ¥ã§ã¯ããåç©«ããªã©ã®æ»æã«å¯Ÿããèæ§ãéåžžã«äœããªããŸãã 解決çãšããŠãã«ãŒã¿ãŒã¯ãã¢éã®è² è·ãåæ£ããããå¥ã®ãã£ãã«ã®ã¿ã䜿çšããŠãã®æ»æã®åœ±é¿ã匱ããããšãã§ããŸãããä»ã®çš®é¡ã®è åšã«å¯Ÿãããããã¯ãŒã¯ã®èæ§ã匱ããŸãã
ã©ã³ãã ããŒãåä¿¡ãããšãXORã䜿çšããŠã«ãŒããçæãããŸãã ãåç©«ãæ»æãçºçããå Žåãæ å ±ã¯å€±ããããã¡ããã¯ãšã©ãŒãå ±åãããã®åŸãªãã«ãªããŸãã
æ å ±ã¢ã»ã³ããªã®ã¢ã»ã³ããªãé²ããã1ã€ã®ç°¡åãªæŠç¥ã¯ãæ°ãããã¢ã䜿çšããŠçä¿¡ãã³ãã«ãåçæããæ°ãããã³ãã«ãäœæããããšã§ãã ã¯ã©ã€ã¢ã³ããæšçãšããæ»æã®çš®é¡ã«å¯ŸåŠããã«ã¯ãã¢ãŠãããŠã³ããã³ãã«ã®ãšã³ããã€ã³ããå€æŽããªãã§ããå¿ èŠããããŸãã æåŸã«ããã³ãã«ã®ãšã³ããã€ã³ããšããŠã®ãã¢ãåºå®ããããŸãŸã§ããå Žåãæ¥ç¶æéå¶éãèšå®ããå¿ èŠããããŸãã ãã¢ã¯ããã³ãã«ã®ãšã³ããã€ã³ããšããŠãã«ãŒã¿ãŒã®äžæçãªé害ãã·ãã¥ã¬ãŒãã§ããŸãããã®çµæããã³ãã«ã¯èªåçã«åäœæãããŸãã
ãããã®2ã€ã®ä¿è·æŠç¥ãçµã¿åãããŠãåå è ãåºå®ããXORæ©èœã䜿çšããŠãã³ãã«ãäœæã§ããŸãã ãã匷åãªé²åŸ¡æŠç¥ã¯ãä¿¡é Œãããåãæ¡ä»¶äžã§ã«ãŒãã®äœæã«åå ããåã ã®ãã¢éã®æ£ç¢ºãªïŒç¹å®ã®ïŒæ¥ç¶ãæå³ããŸãïŒTorãæãåºãããŸã-çŽPerãïŒã XORã®äœ¿çšã¯ãé åºã®äžå€æ§ãããã³æåãšæåŸã®ãã¡ãããåžžã«åãã§ãããšããäºå®ãæå³ããXORã¯é åºã®äžå€æ§ã®ã¿ãä¿èšŒããŸãã
åè¿°ã®ããã«ãI2PïŒãªãªãŒã¹0.8ïŒã«ã¯çŸåšããã«ãã¬ãã«XORãµã³ããªã³ã°æŠç¥ãå«ãŸããŠããŸãã ãã³ãã«ã®ä»çµã¿ããã¢ã®ç®¡çãšéžæã«é¢ãããã詳现ãªèª¬æã¯ã ãã³ãã«ä»æ§ã«èšèŒãããŠããŸãã
ãããã¯ãŒã¯ããŒã¿ããŒã¹
I2Pã¯åè¿°ã®ãšããããããã¯ãŒã¯ã¡ã¿ããŒã¿ã亀æããããšã§æ©èœããŸããããã«ã€ããŠã¯ã以äžã§è©³çŽ°ã«èª¬æããŸãã
I2PãŠãŒã¶ãŒã®æ°ããŒã»ã³ãã¯ãFloodFillãïŒãã«ããŒãïŒãšåŒã°ããŸãã çŸåšãI2Pãã€ã³ã¹ããŒã«ãããŠãããã·ã³ã®ã¹ã«ãŒãããã¯ããªãé«ãããããFloodFillãã«ãŒã¿ãŒã®æ°ãæ¥æ¿ã«æžå°ããå Žåãã«ãŒã¿ãŒïŒããŒãããžãŒïŒèªäœããFloodFillãã«å²ãåœãŠãããŸãã
ä»ã®ã«ãŒã¿ãŒã¯ãæ€çŽ¢çšã®æ å ±ãšããŒã¿ãä¿åã§ããŸãããããã¯ãå®å šã«å®è£ ãããã«ãŒã¿ãŒã«ç §äŒããããšã§åä¿¡ããŸãã ãFloodFillãã«ãŒã¿ãŒãã¹ãã¬ãŒãžèŠæ±ãåä¿¡ãããšããFloodFillãã«ãŒã¿ãŒã¯ã Kademliaã¢ã«ãŽãªãºã ã䜿çšããŠä»ã®ãFloodFillãã«ãŒã¿ãŒã«ãã®ã¡ãã»ãŒãžã®è»¢éãéå§ããŸãã æ€çŽ¢ã¯ãšãªã¯ããŸããŸãªæ¹æ³ã§å®è£ ãããã»ãã¥ãªãã£äžã®åé¡ãé²æ¢ããŸããæ€çŽ¢ãå®äºãããšããFloodFillãã«ãŒã¿ãŒã¯çµæã誰ã«ã転éãããããŒã¿ãèŠæ±ãããå Žåã«å¿çããŸãã
ãããã¯ãŒã¯ããŒã¿ããŒã¹ã«ã¯ã次ã®2çš®é¡ã®æ å ±ãä¿åãããŸãã
- RouterInfoã¯ãç¹å®ã®I2Pã«ãŒã¿ãŒã«é¢ããæ å ±ãšãã®é£çµ¡æ¹æ³ãä¿åããŸãã
- leaseSetã¯ãç¹å®ã®å®å ã«é¢ããæ å ±ïŒäŸïŒI2P WebãµãŒããŒãé»åã¡ãŒã«ãµãŒããŒãªã©ïŒãä¿åããŸãã
ãã®ãã¹ãŠã®æ å ±ã¯ããçºè¡è ãïŒçºè¡è ïŒã«ãã£ãŠçœ²åãããI2Pã«ãŒã¿ãŒã«ãã£ãŠæ€èšŒãããããã«ãã£ãŠä¿åãããŸãã ãŸããä¿åãããæ å ±ã«ã¯ãå€ãæ å ±ã®ä¿åãé¿ããèµ·ããããããã€ãã®ã¿ã€ãã®æ»æãé²ãããã«ãã¿ã€ã ã¹ã¿ã³ããå«ãŸããŠããŸãã
ãŸããããã€ãã®éèŠãªæ³šæäºé ïŒ
æªå ¬éããã³æå·åããããªãŒã¹ã»ããïŒ
ãã®å Žåãç¹å®ã®äººãç¹å®ã®åä¿¡è ã«é£çµ¡ãããå Žåã ããã¯ãnetDbã§å®å ãå ¬éããã«å®è¡ã§ããå¯èœæ§ããããŸãã ãã ããå¥ã®æ¹æ³ã§ã¢ãã¬ã¹ãæž¡ãå¿ èŠããããŸãã ããšãã°ãæå·åããã代æ¿ã®leaseSetsã ãã®ãªãŒã¹ã»ããã¯ã解èªããŒã«ã¢ã¯ã»ã¹ã§ãã人ã解èªã§ããŸãã
èªå·±èª¿æŽïŒ
NetDBã®èªå·±èª¿æŽã¯éåžžã«ç°¡åã§ãã ã«ãŒã¿ãŒã¯ã䜿çšå¯èœãªãã¢ããå°ãªããšã1ã€ã®routerInfoãååŸããåŸããã¢ãããããã¯ãŒã¯äžã®ä»ã®ã«ãŒã¿ãŒãžã®ãªã³ã¯ãèŠæ±ã§ããŸãã çŸåšããŠãŒã¶ãŒã¯routerInfoã«é¢ããæ å ±ãWebãµã€ãã«æçš¿ããŠã誰ã§ãã¢ã¯ã»ã¹ã§ããããã«ããŸãã I2Pã¯ãããã®Webãµã€ãã®1ã€ã«èªåçã«æ¥ç¶ããŠãrouterInfoãã¡ã€ã«ãåéããŠããŠã³ããŒãããŸãã
æ€çŽ¢ã®ã¹ã±ãŒã©ããªãã£ïŒ
I2Pãããã¯ãŒã¯ã§ã®æ€çŽ¢ã¯ãä»ã®ã«ãŒã¿ãŒã®netDbã§ã¯çºçããŸããã ãããã¯ãŒã¯ã¯ããã»ã©å€§ãããªãã®ã§ãããã¯çŸåšå€§ããªåé¡ã§ã¯ãããŸããã ãã ãããããã¯ãŒã¯ãæé·ããã«ã€ããŠããã¹ãŠã®routerInfoããã³leaseSetãã¡ã€ã«ããã¹ãŠã®netDbã«ãŒã¿ãŒã«ååšããããã§ã¯ãããŸããã ããã«ãããæ€çŽ¢ã®æåçãäœäžããŸãã ãã®ãããnetDbã®ä¿®æ£ã¯å°æ¥ã®ãªãªãŒã¹ã§è¡ãããŸãã
転éãããã³ã«
ã«ãŒã¿ãŒéã®éä¿¡ã§ã¯ãããŒã¿ã®æ©å¯æ§ãšæŽåæ§ã確ä¿ããå¿ èŠããããèªèšŒãšèªèšŒã§ã¯ãã«ãŒã¿ãŒããã®ã¡ãã»ãŒãžã®åä¿¡è ãšç¢ºå®ã«é£çµ¡ããå¿ èŠããããŸãã ã«ãŒã¿ãŒãçžäºã«éä¿¡ããæ¹æ³ã«é¢ãã詳现ãªæ å ±ã¯éèŠã§ã¯ãããŸãããããããã®ãå¿ èŠæ§ããæäŸããããã«ç°ãªãããŒãã§äœ¿çšããã3ã€ã®åå¥ã®ãããã³ã«ãèŠãŠãããŸãã
I2Pã®è©±ã¯TCPãããã³ã«ã«åºã¥ããŠå§ãŸããŸãããããã®ãããã³ã«ã¯åŸã«äœ¿çšãããªããªããŸããã 次ã«ãè¯å¥œãªéä¿¡å質ã®å¿ èŠæ§ã«å¯Ÿããé«ãéèŠãæºããããã«ïŒæçµçã«ã¯ã«ãŒã¿ãŒã®æ°ãå¢å ããã ãã§ãïŒãI2Pã¯TCPããŒã¹ã®ãããã³ã«ããUDPããŒã¹ã®ãããã³ã«ã«åãæ¿ããŸãã-ãSecure Semireliable UDPããŸãã¯ãSSUãã
SSUä»æ§ã§èª¬æãããŠããããã«ïŒ
ãã®ãããã³ã«ã®ç®çã¯ãå®å šãªèªèšŒãä¿¡é Œæ§ã®é«ãã¡ãã»ãŒãžã®ã©ã³ãã é ä¿¡ãæäŸãã第äžè ãé²èŠ§ã§ããæå°éã®ããŒã¿ãæ®ãããšã§ãã é«å質ã®éä¿¡ãšTCPãã¬ã³ããªãŒãªè² è·ç®¡çãæäŸããå¿ èŠããããPMTUãã£ã¹ã«ããªãŒãå«ãŸããå ŽåããããŸãã ããŒã ãŠãŒã¶ãŒã«ãšã£ãŠååãªé床ã§å€§éã®ããŒã¿ãå¹ççã«ç§»åã§ããå¿ èŠããããŸãã ããã«ãã»ãšãã©ã®NATïŒãã¡ã€ã¢ãŠã©ãŒã«ïŒãšåæ§ã«ããããã¯ãŒã¯ãåé¢ïŒå¶éïŒããæ©èœããµããŒãããå¿ èŠããããŸãã
SSUã®å°å ¥åŸããããã¯ãŒã¯ã®ã茻茳ãã«é¢ããåé¡ã¯ãNTCPãããã³ã«ãå«ããããšãã§ããNIOãããã³ã«ã§ããTCPã«åºã¥ããæ°ãããã®ã«ãã£ãŠè§£æ±ºãããŸããã çºä¿¡æ¥ç¶ã§ã¯ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸãã çä¿¡æ¥ç¶ãèš±å¯ããå€éšãã¹ããšããŒãïŒDynDNSãªã©ïŒãæå®ããããã«NAT /ãã¡ã€ã¢ãŠã©ãŒã«ãæ§æããå Žåã/ config.jspã䜿çšããŠçä¿¡æ¥ç¶ã確ç«ã§ããŸãã NTCPã¯NIOã«åºã¥ããŠãããå€ãããŒãžã§ã³ã®TCPãããã³ã«ã®ãããª1ã¹ããªãŒã ã®å¶éãåããŸããã
I2Pã¯ããŸããŸãªãã©ã³ã¹ããŒããããã³ã«ããµããŒãããŸãã çºä¿¡æ¥ç¶ã«å¿ èŠãªãã©ã³ã¹ããŒããããã³ã«ã¯ãã¬ãŒãã§éžæãããŸãã ã¬ãŒãã«å¿ããŠãåªå 床ãéžæãããŸãã ãã©ã³ã¹ããŒãã¯ãããŒãããŒãšã®æ¥ç¶ãæ¢ã«ç¢ºç«ãããŠãããã©ããã«å¿ããŠãç°ãªãã¬ãŒãã§å¿çããŸãã
ã»ãšãã©ã®å ŽåãNTCPã®çŸåšã®å®è£ ã¯ãã¢ãŠãããŠã³ãæ¥ç¶ãããåªå ãããŸãã SSUã¯ãçºä¿¡æ¥ç¶ãšçä¿¡æ¥ç¶ã®äž¡æ¹ã§æå¹ã«ãªã£ãŠããŸãã NTCPæ¥ç¶ã確ç«ããã«ã¯ããã¡ã€ã¢ãŠã©ãŒã«ãšI2Pã«ãŒã¿ãŒãæ£ããæ§æããå¿ èŠããããŸãã
詳现ã«ã€ããŠã¯ã NTCPãåç §ããŠãã ããã