การค้นพบเพื่อนและการค้นพบทรัพยากร (ไฟล์ในกรณีของคุณ) เป็นสองสิ่งที่แตกต่างกัน
ฉันคุ้นเคยกับ JXTA มากกว่า แต่เครือข่ายเพียร์ทูเพียร์ทำงานบนหลักการพื้นฐานเดียวกัน
สิ่งแรกที่ต้องเกิดขึ้นคือการค้นพบเพื่อน
การค้นพบเพื่อน
เครือข่าย p2p ส่วนใหญ่เป็นเครือข่าย "seeded": เมื่อเริ่มต้นเพียร์จะเชื่อมต่อกับที่อยู่ที่รู้จักกันดี (ฮาร์ดโค้ด) เพื่อดึงรายชื่อเพื่อนที่กำลังทำงานอยู่ สามารถทำการหยอดเมล็ดโดยตรงเช่นการเชื่อมต่อกับ dht.transmissionbt.com
ที่กล่าวถึงในการโพสต์อื่นหรือการหว่านโดยอ้อมเช่นเดียวกับ JXTA ที่เพื่อนเชื่อมต่อกับที่อยู่ที่ส่งรายการข้อความธรรมดาของที่อยู่เครือข่ายเพียร์อื่นเท่านั้น
เมื่อสร้างการเชื่อมต่อกับเพียร์แรก (ไม่กี่) เพียร์ที่เชื่อมต่อจะทำการค้นหาเพียร์อื่น (โดยส่งคำร้องขอ) และรักษาตารางของพวกเขา เนื่องจากจำนวนของเพียร์อื่นสามารถมีขนาดใหญ่เพียร์ที่เชื่อมต่อจะเก็บรักษาเฉพาะส่วนของ Distributed Hash Table (DHT) ของเพียร์เท่านั้น อัลกอริทึมในการพิจารณาว่าส่วนใดของตารางที่จุดเชื่อมต่อที่ควรรักษานั้นแตกต่างกันไปตามเครือข่าย BitTorrent ใช้ Kademlia พร้อมตัวระบุ / คีย์ 160 บิต
การค้นพบทรัพยากร
เมื่อเพียร์คู่เชื่อมต่อถูกค้นพบโดยเพียร์ที่เชื่อมต่อแล้วโพสต์จะส่งคำขอสองสามรายการเพื่อค้นหาทรัพยากรให้กับพวกเขา ลิงก์แม่เหล็กระบุแหล่งข้อมูลเหล่านั้นและสร้างขึ้นในลักษณะที่เป็น "ลายเซ็น" สำหรับทรัพยากรและรับประกันว่าพวกเขาจะระบุเนื้อหาที่ร้องขอโดยไม่ซ้ำกันในหมู่เพื่อนทั้งหมด เพียร์ที่เชื่อมต่อจะส่งคำขอค้นพบสำหรับลิงก์แม่เหล็ก / ทรัพยากรไปยังเพื่อนรอบ ๆ DHT นั้นสร้างขึ้นในลักษณะที่ช่วยในการพิจารณาว่าควรถามเพื่อนร่วมงานคนใดเกี่ยวกับทรัพยากรก่อน (อ่านเพิ่มเติมจาก Kademlia ใน Wikipedia เพื่ออ่านเพิ่มเติม) ถ้าเพียร์ที่ร้องขอไม่ได้เก็บทรัพยากรที่ร้องขอมันมักจะ "ส่งต่อ" แบบสอบถามไปยังเพียร์เพิ่มเติมที่ดึงมาจาก DHT ของตัวเอง
จำนวนของ "hops" แบบสอบถามสามารถส่งผ่านมักจะ จำกัด ; 4 เป็นหมายเลขปกติด้วยเครือข่ายประเภท JXTA
เมื่อเพียร์ถือทรัพยากรมันจะตอบกลับพร้อมรายละเอียดทั้งหมด จุดเชื่อมต่อจากนั้นสามารถเชื่อมต่อกับจุดยึดทรัพยากร (โดยตรงหรือผ่านทางรีเลย์ - ฉันจะไม่ลงรายละเอียดที่นี่) และเริ่มดึงมัน
ทรัพยากร / บริการในเครือข่าย P2P ไม่ได้เชื่อมต่อโดยตรงกับที่อยู่เครือข่าย: มีการแจกจ่ายและเป็นความงามของเครือข่ายที่ปรับขนาดได้เหล่านี้