2012-02-16 9 views
5

हाल ही में मैंने Kademlia प्रोटोकॉल का एक दस्तावेज़ पढ़ा है, मैंने प्रोटोकॉल को समझने की कोशिश की है, लेकिन मेरे पास अभी भी कुछ सवाल है: जब उसे पता न हो कि किसी नोड को एक और नोड क्यों मिलना चाहिए आईडी लेकिन आईपी या बंदरगाह? वह आईडी क्यों है जबकि उसे आईपी या बंदरगाह नहीं पता, जहां उसे आईडी मिली? मुझे लगता है कि दो अलग-अलग नोड्स के बीच "दूरी" एक रूटिंग दूरी या वास्तविक दूरी नहीं है, यह केवल एक वर्चुअल दूरी है जो नोड को तुरंत ढूंढने के लिए एल्गोरिदम का उपयोग कर सकती है, यह सही है?Kademlia (KAD) प्रोटोकॉल को कैसे समझें

शायद मेरी अंग्रेजी बहुत स्पष्ट नहीं है क्योंकि अंग्रेजी मेरी मातृभाषा नहीं है, लेकिन यदि आपको आवश्यकता हो तो मैं खुद को स्पष्ट करने की कोशिश करूंगा। बहुत बहुत धन्यवाद!

+1

चेकआउट http: // gleamly।com/article/परिचय-kademlia-dht-how-it-works –

उत्तर

14

सीएचओओ ने कहा, नेटवर्क की वितरित प्रकृति का अर्थ है कि नोड्स को उनके आईडी और उनके संपर्क विवरण को अन्य नोड्स पर प्रकाशित करने की आवश्यकता होती है। वहां कोई केंद्रीय स्थान नहीं है जहां आईडी को जानकारी से संपर्क करने के लिए मैप किया गया है, इसलिए प्रत्येक नोड को नेटवर्क पर नोड्स के सबसेट के लिए अपनी मैपिंग को अपनी रूटिंग तालिका में रखना होगा।

Kademlia रूटिंग टेबल संरचित हैं ताकि नोड्स के पास उनके नज़दीकी नेटवर्क का विस्तृत ज्ञान होगा, और तेजी से ज्ञान को और कम कर दिया जाएगा।

आईडी के बीच धारणात्मक दूरी के माप के रूप में बिटवाईड एक्सओआर का उपयोग लाभ है कि किसी दिए गए लक्ष्य आईडी के लिए, कोई भी दो आईडी लक्ष्य के लिए समान दूरी नहीं हो सकती है।

एक साधारण उदाहरण की कल्पना करें जहां आईडी 00 से 63 की सीमा में हैं। यदि Kademlia उदाहरण के लिए उपयोग किया जाता है। दूरी के माप के रूप में शुद्ध गणितीय अंतर, 15 और 35 25 के बराबर दूरी होंगे - दोनों की दूरी 10 होगी। एक्सओआर का उपयोग करके, 15 से 25 के बीच की दूरी 22 है, और 25 और 35 के बीच यह 58 है।

इस तरह, लक्ष्य आईडी पर के निकटतम आईडी का समूह अनियमित रूप से गणना की जा सकती है।

निरंतर के केडेलिया में कुछ उपयोग हैं, लेकिन यह मुख्य रूप से प्रतिकृति कारक है। दूसरे शब्दों में, डेटा का एक टुकड़ा डेटा के आईडी में के निकटतम नोड्स पर संग्रहीत किया जाता है।

लुकअप प्रक्रिया को के नोड्स (उनमें से प्रत्येक पर डेटा संग्रहीत करने से पहले) या डेटा के एक टुकड़े को वापस करने के लिए डिज़ाइन किया गया है (लुकअप पुनरावृत्तियों के दौरान इसे पकड़ने वाले पहले नोड से)।

इस वजह से, शुद्ध Kademlia केवल एक एकल नोड खोजने के लिए सबसे उपयुक्त नहीं है, इसलिए मुझे यकीन नहीं है कि आपके प्रश्न का हिस्सा बहुत प्रासंगिक है। यदि आप एक नोड खोजने के लिए Kademlia का उपयोग करना चाहते थे, तो संभवतः जैसे ही कोई नोड लक्ष्य नोड के संपर्क विवरण लौटाता है, वैसे ही लुकअप प्रक्रिया को संशोधित करने के लायक होगा (उसी तरह लुकअप लक्ष्य लक्ष्य के प्रारंभ में समाप्त हो जाता है प्रक्रिया के दौरान पाया जाता है)।

8

चूंकि नेटवर्क वितरित किया जाता है, परिभाषा के अनुसार, आईडी-> पता मैपिंग की कोई भी मास्टर टेबल नहीं है। नोड्स को अन्य सभी नोड्स के बारे में पता नहीं है (और आमतौर पर नहीं)। नोड को "ढूंढने" की प्रक्रिया मूल रूप से लक्षित नोड के बारे में ज्ञात नोड्स को "निकटतम" से पूछने के लिए लक्षित नोड के बारे में बहुत कुछ नहीं है, लेकिन लगभग लक्ष्य के लिए क्या नोड्स करीब हैं। उस क्वेरी का नतीजा आपको क्वेरी के लिए नोड्स का अगला समूह देता है, और प्रक्रिया दोहराती है - और क्योंकि एक नोड इसके परिणाम के करीब लौटाएगा, प्रत्येक पुनरावृत्ति लक्ष्य के करीब नजदीक और नजदीक ढूंढने के लिए होती है एक नोड तक पहुंचें जो कह सकता है "ओह, नोड एक्स? वह वहां पर सही है।"

कम से कम यही है कि मैं इसे समझ रहा हूं।

+0

आपके त्वरित प्रतिक्रियाओं के लिए धन्यवाद, लेकिन मुझे पता होना चाहिए कि मुझे नोड एक्स क्यों ढूंढना है, और मुझे एक्स की आईडी या नाम कहाँ मिला? और दो नोड्स के बीच "दूरी" का वास्तविक अर्थ क्या है? क्या ऐसा इसलिए है क्योंकि एक्स में फाइल है जो मैं चाहता हूं? –

+0

जहां तक ​​मैं इसे समझता हूं, दो नोड्स के बीच "दूरी" बस उनकी आईडी का एक्सओआर है। यह नोड आईडी और "मानों" की आईडी भी लगता है (यानी: सामग्री, फ़ाइलें, लुकअप जानकारी, जो कुछ भी) एक ही कुंजीपटल साझा करते हैं, और कुंजी के "निकटतम" नोड्स को ढूंढने के बिंदुओं में से एक यह है कि उन्हें स्टोर करने के लिए कहें जानकारी। एक मान ढूँढना एक नोड खोजने जैसा ही काम करता है, सिवाय इसके कि अगर किसी नोड में आईडी के अनुरूप मान होता है, तो यह नोड्स की सूची के बजाय इसके साथ प्रतिक्रिया करता है। – cHao

+0

तो दूरी त्वरित खोज एल्गोरिदम का उपयोग करने के लिए केवल एक मान है। आपका जवाब सहायक है, धन्यवाद! –