ไคลเอนต์ torrent จะประกอบและเก็บชิ้นส่วนได้อย่างไร


9

ฉันสงสัยว่าชิ้นส่วนที่ดาวน์โหลดโดยไคลเอนต์ฝนตกหนักถูกจัดเก็บและประกอบใหม่ได้อย่างไร? พวกเขาใช้ข้อมูลเมตาหรือไม่ ดูเหมือนว่าจะไม่เป็นเช่นนั้นเนื่องจากมีใครสามารถเล่นได้หากไฟล์เหล่านั้นมีรูปแบบครึ่งไฟล์ ฉันไม่รู้ว่าจะทำอย่างไรดี? โดยพื้นฐานแล้วฉันถามว่าชิ้นส่วนต่าง ๆ ในไฟล์ที่ถูกจัดเรียงเป็นอย่างไร? มันเป็นเพียงตั้งแต่แรกถึงสุดท้ายหรือมีช่องว่างบัฟเฟอร์ในระหว่าง?


มีวิธีการดาวน์โหลดไฟล์ที่ดาวน์โหลดครึ่งหนึ่งหลังจากตรวจสอบอีกครั้งหรือไม่การเชื่อมต่อของฉันเหมือนการหมุนหมายเลข ...... ดังนั้นโปรดช่วยด้วย

คำตอบ:


19

ยินดีต้อนรับสู่โลกมหัศจรรย์ของ Torrents! มีไม่กี่ชิ้นที่ประกอบด้วยโปรโตคอล Bittorrent: คุณมีไฟล์ของคุณ, legalthing.iso และคุณต้องการแจกจ่ายให้กับคนจำนวนมากที่สุดเท่าที่จะทำได้ ดังนั้นคุณจึงสร้างไฟล์ "torrent" ซึ่งอธิบาย legalthing.iso และคุณแจกจ่ายไฟล์ torrent ผ่านเว็บไซต์หรือวิธีอื่น ๆ ที่คุณชอบ ไฟล์ฝนตกหนักสามารถชี้ไปที่คอมพิวเตอร์ของคุณโดยตรง (และคุณจะทำหน้าที่เป็นเมล็ด) หรือไฟล์ฝนตกหนักสามารถชี้ไปที่ "ตัวติดตาม" ซึ่งเป็นเซิร์ฟเวอร์ที่เชื่อมต่อ "เมล็ด" (ผู้ใช้ที่มี legalthing.iso ทั้งหมด ไฟล์แล้ว) และ "เพื่อน" (ผู้ใช้ที่กำลังดาวน์โหลดไฟล์)

ใกล้คำถามของคุณตอนนี้ ไฟล์นั้นคือ legalthing.iso ถูกแฮชแบบเข้ารหัสเพื่อให้แต่ละคนที่อ่านไฟล์ torrent และเริ่มทำการดาวน์โหลด legalthing.iso สามารถตรวจสอบแต่ละชิ้นกับแฮชได้และตรวจสอบให้แน่ใจว่าพวกเขาไม่ได้ดาวน์โหลดชิ้นส่วนที่ถูกดัดแปลงจากต้นฉบับ ชิ้นส่วนที่ไม่ผ่านการตรวจสอบแฮชจะถูกยกเลิก

สมมติว่าคุณเป็นคอมพิวเตอร์ดาวน์โหลดไฟล์โดยใช้ Bittorrent โปรโตคอลสามารถทำงานหนึ่งในสองวิธีไม่ว่าคุณจะดาวน์โหลดไฟล์แบบสุ่มหรือคุณจะดาวน์โหลดไฟล์ที่หายากที่สุดก่อน วิธีหลังนี้คือการเพิ่ม "สุขภาพ" โดยรวม (ความพร้อมใช้งาน) ของฝนตกหนัก

ดังนั้นในไฟล์ torrent ที่แท้จริงคืออะไร มันแตกต่างกันไปตามไคลเอนต์ที่ใช้สร้าง แต่โดยทั่วไปจะมีส่วน "ประกาศ" ซึ่งเป็นที่อยู่ของตัวติดตามที่คุณใช้และรายการใหญ่ ๆ ของไฟล์ทั้งหมดที่คุณต้องการดาวน์โหลด แต่ละชิ้นมีขนาดเท่ากัน (32 kb, 512kb, 4mb, ขนาดใดก็ได้ตามต้องการ) และแต่ละชิ้นมีแฮชที่เกี่ยวข้อง ทุกครั้งที่เพียร์ได้รับชิ้นส่วนมันจะเปรียบเทียบแฮชสำหรับชิ้นส่วนนั้น (โดยใช้รหัสแฮช SHA-1) กับแฮชที่มีรายชื่ออยู่ในไฟล์ torrent นั่นเป็นวิธีที่จะเข้าใจความแตกต่างของชิ้นส่วนต่างๆ

เนื่องจากไฟล์ฝนตกหนักจะแสดงรายการไฟล์แต่ละไฟล์ที่คุณดาวน์โหลดทุกครั้งที่ไคลเอนต์ของคุณดาวน์โหลดชิ้นหนึ่งและแฮชมันสำเร็จมันจะเขียนส่วนนั้นไปยังตำแหน่งที่ถูกต้องบนฮาร์ดดิสก์ภายในไฟล์ นั่นเป็นเหตุผลว่าทำไมถ้าคุณดาวน์โหลดไฟล์ขนาด 1gb ลูกค้าจะทำการเว้นพื้นที่ว่างบนดิสก์ของคุณที่มีขนาด 1gb เพื่อรองรับไฟล์ torrent ที่คุณจะทำการดาวน์โหลด

ขณะนี้ผู้เล่นวิดีโอและผู้ดูไฟล์อื่นสามารถจัดการกับไฟล์ "ที่เสียหาย" แน่นอนฝนตกหนักที่ดาวน์โหลดมาครึ่งหนึ่งไม่เสียหาย แต่มันหายไปและสำหรับโปรแกรมอย่าง VLC มันดูแตก ดังนั้น VLC จะพยายามอย่างดีที่สุดในการเล่นข้อมูลใด ๆ ที่สามารถค้นหาได้และนั่นเป็นเหตุผลที่พวกเขาสามารถเล่นในขณะที่ดาวน์โหลดบางส่วนได้

มีแง่มุมที่ซับซ้อนกว่านี้มากมาย (google DHT, การบัฟเฟอร์การเขียน torrent สิ่งที่สนุก) แต่นั่นคือพื้นฐานของวิธีการทำงานของ Bittorrent


ว้าวนั่นเป็นคำตอบที่สมบูรณ์มาก .... แต่ฉันไม่เคยสังเกตเห็นเลยว่ามันทิ้งไฟล์ 1GB หรือเปล่า ดูเหมือนว่ามันจะเพิ่มขึ้นทีละน้อย?
Cenoc

1
@Cenoc ขึ้นอยู่กับไคลเอนต์ฝนตกหนักลูกค้าบางคนจัดสรรล่วงหน้าบางคนไม่มีบางคนมีการตั้งค่าเพิ่มเติมเพื่อจัดสรรล่วงหน้า
Sathyajith Bhat

สิ่งที่น่าสนใจในตอนแรกมันเป็นแค่ไฟล์ที่เต็มไปด้วย '0' และเมื่อไฟล์ที่ดาวน์โหลดมาบางส่วนถูกตรวจสอบครั้งแรกมันจะถูกเปรียบเทียบกับแฮช?
Cenoc

1
เป็นที่เก็บที่ว่างเปล่าสำหรับไฟล์ที่สมบูรณ์ที่สุดและเมื่อลูกค้าดาวน์โหลดแต่ละชิ้นมันจะถูกตรวจสอบกับแฮชจากนั้นใส่ในตำแหน่งที่เหมาะสมในคอนเทนเนอร์จนกว่าไฟล์เต็มจะเสร็จสมบูรณ์
geodave

1
ดังที่ Sathya พูดถึงมันขึ้นอยู่กับลูกค้า บางคนจะจัดสรรพื้นที่บนฮาร์ดไดรฟ์ของคุณล่วงหน้าสำหรับไฟล์ทั้งหมด มันจะจองพื้นที่จำนวนมากและโปรแกรมอื่น ๆ จะไม่สามารถใช้พื้นที่นั้นบนไดรฟ์จนกว่าจะดาวน์โหลดไฟล์ของคุณ ลูกค้า BitTorrent อื่น ๆ จะวางชิ้นงานที่เสร็จสมบูรณ์ไว้ในที่เก็บข้อมูลชั่วคราวเพื่อประหยัดพื้นที่ไดรฟ์จากนั้นรวบรวมไฟล์ทั้งหมดเมื่อดาวน์โหลดชิ้นส่วนทั้งหมดแล้ว ขึ้นอยู่กับการตั้งค่าที่คุณเลือก
geodave
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.