P2P»ù´¡ÖªÊ¶ÆÕ¼°
ÍØÆË½á¹¹ÊÇÖ¸·Ö²¼Ê½ÏµÍ³Öи÷¸ö¼ÆËãµ¥ÔªÖ®¼äµÄÎïÀí»òÂß¼µÄ»¥Áª¹ØÏµ£¬½áµãÖ®¼äµÄÍØÆË½á¹¹Ò»Ö±ÊÇÈ·¶¨ÏµÍ³ÀàÐ͵ÄÖØÒªÒÀ¾Ý¡£Ä¿Ç°»¥ÁªÍøÂçÖй㷺ʹÓü¯ÖÐʽ¡¢²ã´ÎʽµÈÍØÆË½á¹¹£¬Interne±¾ÉíÊÇÊÀ½çÉÏ×î´óµÄ·Ç¼¯ÖÐʽµÄ»¥ÁªÍøÂ磬µ«ÊǾÅÊ®Äê´úËù½¨Á¢µÄÒ»Ð©ÍøÂçÓ¦ÓÃϵͳȴÊÇÍêÈ«µÄ¼¯ÖÐʽµÄϵͳ¡¢ºÜ¶àWebÓ¦Óö¼ÊÇÔËÐÐÔÚ¼¯ÖÐʽµÄ·þÎñÆ÷ϵͳÉÏ¡£¼¯ÖÐÊ½ÍØÆË½á¹¹ÏµÍ³Ä¿Ç°ÃæÁÙ׏ýÁ¿´æ´¢¸ºÔØ¡¢Dos¹¥»÷µÈһЩÄÑÒÔ½â¾öµÄÎÊÌâ¡£
P2Pϵͳһ°ãÒª¹¹ÔìÒ»¸ö·Ç¼¯ÖÐʽµÄÍØÆË½á¹¹£¬ÔÚ¹¹Ôì¹ý³ÌÖÐÐèÒª½â¾öϵͳÖÐËù°üº¬µÄ´óÁ¿½áµãÈçºÎÃüÃû¡¢×éÖ¯ÒÔ¼°È·¶¨½áµãµÄ¼ÓÈë/À뿪·½Ê½¡¢³ö´í»Ö¸´µÈÎÊÌâ¡£
¸ù¾ÝÍØÆË½á¹¹µÄ¹ØÏµ¿ÉÒÔ½«P2PÑо¿·ÖΪ4ÖÖÐÎʽ£ºÖÐÐÄ»¯ÍØÆË£¨Centralized Topology£©£»È«·Ö²¼Ê½·Ç½á¹¹»¯ÍØÆË£¨Decentralized Unstructured Topology£©£»È«·Ö²¼Ê½½á¹¹»¯ÍØÆË£¨Decentralized Structured Topology£¬Ò²³Æ×÷DHTÍøÂ磩ºÍ°ë·Ö²¼Ê½ÍØÆË£¨Partially Decentralized Topology£©¡£
ÆäÖУ¬ÖÐÐÄ»¯ÍØÆË×î´óµÄÓŵãÊÇά»¤¼òµ¥·¢ÏÖЧÂʸߡ£ÓÉÓÚ×ÊÔ´µÄ·¢ÏÖÒÀÀµÖÐÐÄ»¯µÄĿ¼ϵͳ£¬·¢ÏÖËã·¨Áé»î¸ßЧ²¢Äܹ»ÊµÏÖ¸´ÔÓ²éѯ¡£×î´óµÄÎÊÌâÓ봫ͳ¿Í»§»ú/·þÎñÆ÷½á¹¹ÀàËÆ£¬ÈÝÒ×Ôì³Éµ¥µã¹ÊÕÏ£¬·ÃÎʵēÈȵã”ÏÖÏóºÍ·¨ÂɵÈÏà¹ØÎÊÌ⣬ÕâÊǵÚÒ»´úP2PÍøÂç²ÉÓõĽṹģʽ£¬¾µä°¸Àý¾ÍÊÇÖøÃûµÄMP3¹²ÏíÈí¼þNapster¡£
NapsterÊÇ×îÔç³öÏÖµÄP2Pϵͳ֮һ£¬²¢ÔÚ¶ÌÆÚÄÚѸËٳɳ¤ÆðÀ´¡£NapsterʵÖÊÉϲ¢·ÇÊÇ´¿´âµÄP2Pϵͳ£¬Ëüͨ¹ýÒ»¸öÖÐÑë·þÎñÆ÷±£´æËùÓÐNapsterÓû§ÉÏ´«µÄÒôÀÖÎļþË÷ÒýºÍ´æ·ÅλÖõÄÐÅÏ¢¡£µ±Ä³¸öÓû§ÐèҪij¸öÒôÀÖÎļþʱ£¬Ê×ÏÈÁ¬½Óµ½Napster·þÎñÆ÷£¬ÔÚ·þÎñÆ÷½øÐмìË÷£¬²¢ÓÉ·þÎñÆ÷·µ»Ø´æÓиÃÎļþµÄÓû§ÐÅÏ¢£»ÔÙÓÉÇëÇóÕßÖ±½ÓÁ¬µ½ÎļþµÄËùÓÐÕß´«ÊäÎļþ¡£
NapsterÊ×ÏÈʵÏÖÁËÎļþ²éѯÓëÎļþ´«ÊäµÄ·ÖÀ룬ÓÐЧµØ½ÚÊ¡ÁËÖÐÑë·þÎñÆ÷µÄ´ø¿íÏûºÄ£¬¼õÉÙÁËϵͳµÄÎļþ´«ÊäÑÓʱ¡£ÕâÖÖ·½Ê½×î´óµÄÒþ»¼ÔÚÖÐÑë·þÎñÆ÷ÉÏ£¬Èç¹û¸Ã·þÎñÆ÷ʧЧ£¬Õû¸öϵͳ¶¼»á̱»¾¡£µ±Óû§ÊýÁ¿Ôö¼Óµ½105»òÕ߸ü¸ßʱ£¬NapsterµÄϵͳÐÔÄÜ»á´ó´óϽµ¡£ÁíÒ»¸öÎÊÌâÔÚÓÚ°²È«ÐÔÉÏ£¬Napster²¢Ã»ÓÐÌṩÓÐЧµÄ°²È«»úÖÆ¡£
ÔÚNapsterÄ£ÐÍÖУ¬Ò»Èº¸ßÐÔÄܵÄÖÐÑë·þÎñÆ÷±£´æ×ÅÍøÂçÖÐËùÓл¶ÔµÈ¼ÆËã»ú¹²Ïí×ÊÔ´µÄĿ¼ÐÅÏ¢¡£µ±ÐèÒª²éѯij¸öÎļþʱ£¬¶ÔµÈ»ú»áÏòһ̨ÖÐÑë·þÎñÆ÷·¢³öÎļþ²éѯÇëÇó¡£ÖÐÑë·þÎñÆ÷½øÐÐÏàÓ¦µÄ¼ìË÷ºÍ²éѯºó£¬»á·µ»Ø·ûºÏ²éѯҪÇóµÄ¶ÔµÈ»úµØÖ·ÐÅÏ¢ÁÐ±í¡£²éѯ·¢Æð¶ÔµÈ»ú½ÓÊÕµ½Ó¦´ðºó£¬»á¸ù¾ÝÍøÂçÁ÷Á¿ºÍÑÓ³ÙµÈÐÅÏ¢½øÐÐÑ¡Ôñ£¬ºÍºÏÊʵĶԵȻú½¨Á¢Á¬½Ó£¬²¢¿ªÊ¼Îļþ´«Êä¡£
ÕâÖÖ¶ÔµÈÍøÂçÄ£ÐÍ´æÔںܶàÎÊÌ⣬Ö÷Òª±íÏÖΪ£º
(1)ÖÐÑë·þÎñÆ÷µÄ̱»¾ÈÝÒ×µ¼ÖÂÕû¸öÍøÂçµÄ±ÀÀ¡£¬¿É¿¿ÐԺͰ²È«ÐԽϵ͡£
(2)Ëæ×ÅÍøÂç¹æÄ£µÄÀ©´ó£¬¶ÔÖÐÑëË÷Òý·þÎñÆ÷½øÐÐά»¤ºÍ¸üеķÑÓý«¼±¾çÔö¼Ó£¬ËùÐè³É±¾¹ý¸ß¡£
(3)ÖÐÑë·þÎñÆ÷µÄ´æÔÚÒýÆð¹²Ïí×ÊÔ´ÔÚ°æÈ¨ÎÊÌâÉϵľÀ·×£¬²¢Òò´Ë±»¹¥»÷Ϊ·Ç´¿´âÒâÒåÉϵÄP2PÍøÂçÄ£ÐÍ¡£¶ÔСÐÍÍøÂç¶øÑÔ£¬¼¯ÖÐĿ¼ʽģÐÍÔÚ¹ÜÀíºÍ¿ØÖÆ·½ÃæÕ¼Ò»¶¨ÓÅÊÆ¡£µ«¼øÓÚÆä´æÔÚµÄÖÖÖÖȱÏÝ£¬¸ÃÄ£ÐͲ¢²»ÊʺϴóÐÍÍøÂçÓ¦Óá£
P2PÆÕ¼°ÏµÁÐÖ®¶þ
PastryÊÇ΢ÈíÑо¿ÔºÌá³öµÄ¿ÉÀ©Õ¹µÄ·Ö²¼Ê½¶ÔÏó¶¨Î»ºÍ·ÓÉÐÒ飬¿ÉÓÃÓÚ¹¹½¨´ó¹æÄ£µÄP2Pϵͳ¡£ÔÚPastryÖУ¬Ã¿¸ö½áµã·ÖÅäÒ»¸ö128λµÄ½áµã±êʶ·ûºÅ(nodeID) £¬ËùÓеĽáµã±êʶ·ûÐγÉÁËÒ»¸ö»·ÐεÄnodeID¿Õ¼ä£¬·¶Î§´Ó0µ½2128 - 1 £¬½áµã¼ÓÈëϵͳʱͨ¹ýÉ¢ÁнáµãIPµØÖ·ÔÚ128λnodeID¿Õ¼äÖÐËæ»ú·ÖÅä¡£
ÔÚMIT£¬¿ªÕ¹Á˶à¸öÓëP2PÏà¹ØµÄÑо¿ÏîÄ¿£ºChord£¬GRIDºÍRON¡£ChordÏîÄ¿µÄÄ¿±êÊÇÌṩһ¸öÊʺÏÓÚP2P»·¾³µÄ·Ö²¼Ê½×ÊÔ´·¢ÏÖ·þÎñ£¬Ëüͨ¹ýʹÓÃDHT¼¼ÊõʹµÃ·¢ÏÖÖ¸¶¨¶ÔÏóÖ»ÐèҪά»¤O(logN)³¤¶ÈµÄ·ÓÉ±í¡£
ÔÚDHT¼¼ÊõÖУ¬ÍøÂç½áµã°´ÕÕÒ»¶¨µÄ·½Ê½·ÖÅäÒ»¸öΨһ½áµã±êʶ·û(Node ID) £¬×ÊÔ´¶ÔÏóͨ¹ýÉ¢ÁÐÔËËã²úÉúÒ»¸öΨһµÄ×ÊÔ´±êʶ·û(Object ID) £¬ÇÒ¸Ã×ÊÔ´½«´æ´¢ÔÚ½áµãIDÓëÖ®ÏàµÈ»òÕßÏà½üµÄ½áµãÉÏ¡£ÐèÒª²éÕÒ¸Ã×ÊԴʱ£¬²ÉÓÃͬÑùµÄ·½·¨¿É¶¨Î»µ½´æ´¢¸Ã×ÊÔ´µÄ½áµã¡£Òò´Ë£¬ChordµÄÖ÷Òª¹±Ï×ÊÇÌá³öÁËÒ»¸ö·Ö²¼Ê½²éÕÒÐÒ飬¸ÃÐÒé¿É½«Ö¸¶¨µÄ¹Ø¼ü×Ö(Key) Ó³Éäµ½¶ÔÓ¦µÄ½áµã(Node) ¡£´ÓËã·¨À´¿´£¬ChordÊÇÏàÈÝÉ¢ÁÐËã·¨µÄ±äÌå¡£MIT GRIDºÍRONÏîÄ¿ÔòÌá³öÁËÔÚ·Ö²¼Ê½¹ãÓòÍøÖÐʵʩ²éÕÒ×ÊÔ´µÄϵͳ¿ò¼Ü¡£![]()
