เป็นไปได้หรือไม่ที่จะได้รับการดาวน์โหลดที่เสียหายด้วย http


11

เป็นเวลานานที่ฉันคิดว่ามันเป็นไปไม่ได้จริง ๆ ที่จะดาวน์โหลดไฟล์ที่เสียหายผ่าน http ตราบใดที่มันไม่ได้เกิดความเสียหายบนเซิร์ฟเวอร์และการใช้โปรโตคอล http นั้นถูกต้องซึ่งน่าจะเป็นกรณีของซอฟต์แวร์กระแสหลักที่ทันสมัย

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

วันนี้ฉันมีกรณีแรกของเรื่องนี้ ฉันดาวน์โหลด iso ของ Ubuntu พยายามติดตั้งมันล้มเหลวและหลังจากการค้นคว้ามานาน (ฉันแค่ไม่เชื่อว่าเหตุผลอาจเป็นการดาวน์โหลดที่เสียหาย) ฉันตรวจสอบ MD5 และสิ่งที่คุณรู้ว่ามันผิด (ขนาดคือ แก้ไข). ดังนั้นฉันจึงดาวน์โหลดซ้ำอีกครั้งและได้รับผิด md5 อีกครั้ง เฉพาะการดาวน์โหลดครั้งที่สามของฉันเท่านั้น md5 นั้นถูกต้อง

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


คำตอบ:


9

ใช่เป็นไปได้โดยเฉพาะอย่างยิ่งในการเชื่อมต่ออินเทอร์เน็ตที่มีคุณภาพต่ำ - โดยทั่วไปจะเป็นแบบไร้สาย แต่การเชื่อมต่อแบบใช้สายบางอย่าง(เช่นที่ฉันมี)ยังมีอัตราความผิดพลาดสูงที่ความเร็วสูง

โปรโตคอล HTTP ไม่มีข้อกำหนดใด ๆ สำหรับการตรวจสอบความถูกต้องของข้อมูล ในชั้นการขนส่ง TCP จะมีการตรวจสอบข้อผิดพลาดโดยใช้การตรวจสอบ แต่ก็ไม่น่าเชื่อถือมาก


มีอีกเหตุผลที่ให้แฮชหรือลายเซ็นดิจิทัล บ่อยครั้งที่ไฟล์จริงถูกแจกจ่ายผ่านมิเรอร์เซิร์ฟเวอร์หลายตัวซึ่งไม่สามารถรับประกันได้ว่าจะปลอดภัย 100% หากไม่มีแฮชหรือลายเซ็นในการยืนยันบุคคลที่สามารถเข้าถึงมิเรอร์ (ไม่จำเป็นต้องถูกต้องตามกฎหมาย) สามารถแทนที่ไฟล์และยังคงไม่ถูกตรวจสอบโดยไม่ต้องเจาะเข้าไปในเซิร์ฟเวอร์ที่แตกต่างกันโดยสิ้นเชิงที่เว็บไซต์โฮสต์อยู่


คุณสามารถตรวจสอบไฟล์โดยอัตโนมัติหากคุณดาวน์โหลด Ubuntu ผ่าน BitTorrent แทน HTTP (แต่ละชิ้นได้รับการตรวจสอบในเวลาดาวน์โหลดดังนั้นคุณไม่ต้องดาวน์โหลดทุกสิ่งใหม่)


1
คำตอบที่ดี. อย่างไรก็ตามฉันต้องการที่จะสำรวจหัวข้ออีกเล็กน้อยถ้าคุณไม่รังเกียจ ส่วน "ความเร็วสูง" มีความเกี่ยวข้องมาก ฉันไม่เคยมีปัญหาอะไรที่บ้าน แต่ Ubuntu ISO นี้ดาวน์โหลดที่ฉันทำอยู่ที่ทำงานความเร็วประมาณ 5Mb / s เป็นเรื่องยากสำหรับฉันที่จะยอมรับว่า TCP ไม่น่าเชื่อถือเพราะเกือบทุกสิ่งรอบตัวอิงตาม TCP มีอะไรอีกนอกจากบทความวิกิพีเดียเกี่ยวกับ TCP ที่ไม่สามารถไว้ใจได้? คุณรู้หรือไม่ว่าความเร็วสูงมีผลต่อปัญหาอย่างไร ขอบคุณล่วงหน้า.
Andrew Savinykh

1
@zespri: TCP จะควรจะเชื่อถือได้ แต่การตรวจสอบไม่สามารถจับ 100% ของข้อผิดพลาดทั้งหมด ความเร็วสูงเป็นเพียงปัจจัยในการเชื่อมต่อบางประเภทหรือผ่านการเชื่อมโยงที่ไม่น่าเชื่อถือ ... ซึ่งน่าเสียดายที่สามารถเกิดขึ้นได้ทุกที่ระหว่างคุณและเซิร์ฟเวอร์ไม่จำเป็นต้องจบทันที (ฉันจะทดสอบการดาวน์โหลดจากมิเรอร์ที่อยู่ในประเทศต่าง ๆ ) นอกจากนี้ยังมีความเป็นไปได้ที่ไฟล์ของคุณจะเสียหายในระบบไฟล์ของเซิร์ฟเวอร์ ...
user1686

1
หากมีความเป็นไปได้น้อยที่จะเกิดความเสียหายจากนั้นการเพิ่มจำนวนฮ็อพที่คุณมีระหว่างคุณและเซิร์ฟเวอร์จะเพิ่มโอกาสของความเสียหาย ???
เทรเวอร์บอยด์สมิ ธ

1
@ เทรเวอร์: ขึ้นอยู่กับคุณภาพของลิงก์ สิบกระโดดผ่าน Ethernet นั้นมีความน่าเชื่อถือมากกว่าการกระโดดข้าม WiFi เพียงครั้งเดียว (เราเตอร์ / สวิทช์ตัวเองแทบจะไม่เสียหายข้อมูล แต่โดยปกติแล้วจะเป็นการเชื่อมต่อที่ทำได้)
user1686

นี่หมายความว่า HTTP นั้นเสียหรือไม่และควรได้รับการแก้ไขหรือไม่
still_dreaming_1

1

ดังที่ Grawity กล่าวว่าเป็นไปได้ แต่นอกจากนี้สิ่งที่ฉันสังเกตเห็น:

แม้ว่าจะมีการเชื่อมต่ออินเทอร์เน็ตที่เสถียร แต่ก็เป็นไปได้ที่การดาวน์โหลดจะเสร็จสิ้นก่อนกำหนดโดยไม่มีเหตุผลใด ๆ ที่ถูกต้อง - มันสามารถเกิดขึ้นได้

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


โอ้ฉันเกลียดผู้ให้บริการเว็บที่ลดการดาวน์โหลดแบบสุ่มที่ ~ 50% โดยไม่สนับสนุนการทำงานต่อ ...
user1686

1
Wil: ใช่แล้วการถูกตัดบ่อยครั้งและด้วยเหตุนี้ฉันจึงแยกพวกเขาออกจากคำถามของฉันโดยเฉพาะบอกว่าฉันถือว่าขนาดนั้นถูกต้อง ขอบคุณสำหรับความคิดเห็น
Andrew Savinykh

ใช่ว่าเป็นคำสั่งที่สำคัญสำหรับคำถามนี้ "ขนาดที่ถูกต้องแน่นอน"
Trevor Boyd Smith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.