बिटटोरेंट कैसे काम करता है?


34

मैं फ़ाइल साझाकरण के बिटोरेंट तरीके के बारे में अधिक जानना चाहता हूं। मैं तकनीकी रूप से उन्नत उपयोगकर्ता (प्रोग्रामर) हूं, इसलिए तकनीकी रूप से उन्नत सामग्री कोई समस्या नहीं है, लेकिन यह संक्षिप्त और बिंदु तक होनी चाहिए। मुझे एक अच्छी संसाधन पुस्तक / वेब की आवश्यकता है जो समग्र बिटोरेंट आर्किटेक्चर की व्याख्या करे।

मुझे विवरणों में दिलचस्पी नहीं है, बस समग्र वास्तुकला और शब्दावली जैसे बीज, साथियों, आदि।

कोई सुझाव?

जवाबों:


29

कैसे काम करता है इसका अवलोकन:

  • आपके पास सहकर्मी और एक ट्रैकर हैं । किसी भी समय सभी सहकर्मी एक साथ झुंड हैं । सामान्य स्थिति एक या कुछ साथियों के पास पूरी फाइलसेट होती है और इसे अन्य साथियों के लिए उपलब्ध कराना चाहते हैं।

  • एक सहकर्मी एक .torrent फ़ाइल प्राप्त करता है, जिसमें अन्य चीजें होंगी A) फाइलसेट का SHA-1 हैश, B) ट्रैकर का URL, और C) उन टुकड़ों की संख्या जो फ़ाइल में टूट गई है, साथ ही हर टुकड़े का एक SHA-1 हैश। टुकड़ों का आकार धार द्वारा ही निर्धारित किया जाता है।

  • सहकर्मी तब धार में निर्दिष्ट URL का उपयोग करके ट्रैकर से जुड़ता है। ट्रैकर साथियों की सूची के साथ प्रतिक्रिया करता है। ट्रैकर्स HTTP पर पोर्ट 80 या 443 पर बात करते हैं।

  • सहकर्मी तब एक अन्य सहकर्मी का चयन करता है, जो ट्रैकर की जानकारी का उपयोग करता है, और एक एक्सचेंज सत्र स्थापित करने के लिए सीधे संपर्क करता है, एक टुकड़ा प्राप्त करने का प्रयास करता है। ध्यान दें कि विनिमय सत्र सीधे साथियों द्वारा किए जाते हैं और ट्रैकर हस्तांतरण में शामिल नहीं होता है। ट्रैकर केवल जानकारी प्रदान करता है।

  • एक बार सहकर्मी के पास एक टुकड़ा होने के बाद, वह इसे SHA-1 हैश के खिलाफ सत्यापित करता है, और इसे फ़ाइल में लिखता है। इसके बाद किसी अन्य सहकर्मी का चयन करते समय वह टुकड़ा पेश कर सकता है। बाद के विनिमय सत्रों में "ट्रेडिंग" टुकड़े शामिल होते हैं। मेरा मानना ​​है कि यदि आपके पास कोई दूसरा टुकड़ा नहीं है, तो सहकर्मी आम तौर पर आपको केवल पहला टुकड़ा देंगे।

  • सहकर्मी हर बार साथियों की अद्यतन सूची प्राप्त करने के लिए ट्रैकर पर पुनर्विचार करता है। सहकर्मी को एक मुद्रा शुरू करने के लिए दूसरे के शुरू होने से पहले खत्म होने की प्रतीक्षा नहीं करनी पड़ती है यदि उसके पास कई टुकड़े हैं, तो एक बार जब सहकर्मी के पास टुकड़ों का एक गुच्छा होता है तो हस्तांतरण वास्तव में तेज हो सकता है। यही कारण है कि मूसल धीमी गति से शुरू होते हैं लेकिन तेजी से गति प्राप्त करते हैं क्योंकि सहकर्मी टुकड़ों को प्राप्त करता है।

  • जब किसी सहकर्मी के पास सभी टुकड़े होते हैं, तो पूरी फाइल को फाइल एसएचए -1 हैश के खिलाफ सत्यापित किया जाता है। फिर, यह एक बीजक बन जाता है , और अब कुछ भी नहीं कर रहा है, लेकिन फाइलसेट को अधिक उपलब्ध होने में मदद करता है। जिन साथियों के पास सभी टुकड़े नहीं हैं वे लीकर हैं

  • यदि किसी धार के पास कोई बीज नहीं है, तो यह मर चुका है, हालांकि यदि फ़ाइल की एक पूरी प्रतिलिपि सभी साथियों द्वारा रखी गई सभी टुकड़ों के बीच मौजूद है, तो वे अंततः आपस में पूरी प्रतिलिपि प्राप्त करने के लिए व्यापार करेंगे।

  • SHA-1 हैश है कि कैसे ट्रैकर और साथियों को "पता" है कि किस फ़ाइल को झुंड में माना जाता है। टोरेंट में फाइल का उपयोग डेटा की पहचान करने के लिए नहीं किया जाता है। वे टुकड़े, जो .torrent फ़ाइल में हैस के विरुद्ध सत्यापित नहीं होते हैं, फेंक दिए जाते हैं। लगातार ख़राब टुकड़ों को भेजने वाले सहकर्मी अन्य साथियों द्वारा छीन लिए जाते हैं और अंततः झुंड में किसी से भी नहीं जुड़ पाएंगे।

  • एक छोटा सा टुकड़ा आकार का मतलब है कि धार अधिक मजबूत है क्योंकि सहकर्मी टुकड़ों को जल्दी व्यापार कर सकते हैं, लेकिन इसका मतलब यह है कि टुकड़ों में टुकड़ों की अधिक हैश की सूची है। फ़ाइल को सूचीबद्ध किया जाना चाहिए और इसलिए .torrent फ़ाइल बड़ी हो सकती है।

  • यदि आप BitTorrent के माध्यम से कुछ प्रकाशित कर रहे हैं, तो जब तक आप इसे उपलब्ध करना चाहते हैं, तब तक फ़ाइल को बीज देना सबसे अच्छा है। अन्य सहकर्मी आपकी मदद करेंगे, क्योंकि अधिकांश बिटटोरेंट सॉफ़्टवेयर एल्गोरिदम को लागू करते हैं, जो समवर्ती कनेक्शन को अधिकतम करने के लिए संभव के रूप में कई साथियों के बीच चीजों को फैलाने की कोशिश करते हैं। इस तरह से बिटटोरेंट आपको चीजों को प्रकाशित करने और बैंडविड्थ की लागत बचाने में मदद कर सकता है।


1
एक खूबसूरत जवाब! एक चुटकी: मेरा मानना ​​है कि बीज रेयर को पसंद करते हैं , पहले टुकड़ों को नहीं। यकीन नहीं है कि यह एक एल्गोरिथ्म बात है, लेकिन यह है कि मैं सेटिंग्स से खिलवाड़ करते हुए एक बार एक धार कार्यक्रम से क्या मिला।
Gallifreyan


8

कार्डबोर्ड कट-आउट के साथ एक दृश्य तरीके से समझाते हुए YouTube पर एक अच्छा वीडियो है । यह एक उच्च तकनीकी व्याख्या नहीं है, लेकिन बिटटोरेंट के पीछे के विचार को सरल, समझने योग्य तरीके से लोगों को समझाने के लिए महान है।

कैसे bittorrent youtube पर काम करता है


3
+1 उपयोगी वीडियो। इसे मेरे पिताजी को दिखाया। उसके बाद उनका कोई सवाल नहीं था। आश्चर्यजनक। :)
शून्य

2

सहकर्मी संदेश प्रोटोकॉल पर अवलोकन ।

ग्राहक साथियों, टीसीपी या यूटीपी (यूडीपी पर) के साथ जानकारी साझा करने के लिए दो प्रोटोकॉल का उपयोग कर सकता है। यह डेटा बिटटोरेंट प्रोटोकॉल विनिर्देश , अनुभाग सहकर्मी संदेशों का अनुसरण करता है

तो प्रोग्रामेटिक रूप से, दो क्लाइंट के बीच एक कनेक्शन शुरू करना होता है। कनेक्शन सेट करने के बाद (टीसीपी या यूटीपी के माध्यम से), बिटटॉरेंट हैंडशेक क्लाइंट द्वारा शुरू किया जाता है जो ट्रैकर से दूरस्थ सहकर्मी की जानकारी (आईपी और पोर्ट) को पकड़ा या डीएचटी के माध्यम से । इस हैंडशेक में info_hash होता है, जो इस कनेक्शन के बारे में धार की पहचान करेगा।

आइए पहले देखें कि टोरेंट डेटा को प्रोटोकॉल के माध्यम से कैसे छोटा किया जाता है। एक टुकड़ा उस डेटा का एक हिस्सा है जिसे आप नेटवर्क के माध्यम से साझा कर रहे हैं। एक ब्लॉक के साथ भ्रमित होने के लिए नहीं , जो एक पैकेट में लिपटा हुआ एक टुकड़ा है। ब्लॉक एक साझा करने के लिए विवरण का स्तर है टुकड़ा पैकेट के माध्यम से, और एक टुकड़ा साथियों के माध्यम से एक धार साझा करने के लिए विवरण का स्तर है।

जब कनेक्शन शुरू होता है, तो दोनों क्लाइंट (स्थानीय क्लाइंट, जिसे मैं एलसी और रिमोट क्लाइंट कहूंगा , आरसी ) चोक हो जाता है और बिना रुकावटचोक का अर्थ है "मैं आपके किसी भी संदेश का जवाब नहीं दूंगा, बहुत व्यस्त, लेकिन मैं उन्हें ध्यान में रख सकता हूं"। अनकॉक्ड इसलिए इसका मतलब है "मैं आपके संदेशों का जवाब दूंगा"। रुचि के साधन निश्चित रूप से है कि मुझे आपके पास कुछ टुकड़े चाहिए। इसलिए, दो साथियों के बीच संबंध की स्थिति को उन चार राज्यों के साथ परिभाषित किया जा सकता है: LC_chocked ?, LC_interested ?, RC_chocked? RC_interested? चेतावनी देने के लिए आर सी है कि मैं कर रहा हूँ (अन) chocked या (अन) रुचि, मुझे उसे (संयुक्त राष्ट्र) को दिलचस्पी और (संयुक्त राष्ट्र) को भेजे गए संदेशों, और पारस्परिक रूप से भेजना होगा ।

एक दूसरे को सूचित करने के लिए कि उनके पास कौन से टुकड़े हैं, वे हाथ मिलाने के बाद एक बिटफील्ड संदेश भेज सकते हैं । जैसा कि यह नाम से पता चलता है, यह एक बिट स्ट्रिंग है जहां प्रत्येक बिट को सेट किया जाता है 1यदि क्लाइंट के पास यह अजीब टुकड़ा है , 0अन्यथा।

तो अगर नियंत्रण रेखा है chocked और रुचि और आर सी है unchocked उसे, तो वह एक भेज सकते हैं अनुरोध एक के लिए पूछने के लिए गए संदेशों ब्लॉक एक से संबंधित टुकड़ा वह जानता है कि नियंत्रण रेखा के लिए धन्यवाद है bitfield संदेश।

जब एक सहकर्मी को पूरा टुकड़ा मिला है , तो वह एक टुकड़ा संदेश भेजकर सभी को सूचित कर सकता है कि यह दूरदराज के साथी हैं ताकि वे संबंधित बिटफील्ड को अपडेट कर सकें जो वे पकड़े हुए हैं।

यह एक बहुत ही बुनियादी अवलोकन है, और निश्चित रूप से सभी विवरण यहां नहीं दिए गए हैं, जैसे चोकिंग एल्गोरिदम आदि ... यदि आप अधिक विवरण चाहते हैं, तो मेरे द्वारा ऊपर पोस्ट किए गए दो लिंक की जांच करें, टिप्पणी अनुभाग में (एक नए उपयोगकर्ता के रूप में मैं कर सकता हूं) 't एक पोस्ट के भीतर दो से अधिक लिंक हैं)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.