DEFLATE ดิบ (.deflate)
IETF มาตรฐานDEFLATE คืออัลกอริทึมการบีบอัดข้อมูลแบบไม่สูญเสียข้อมูลที่แพร่หลายที่สุดในประวัติศาสตร์คอมพิวเตอร์ ซึ่งขับเคลื่อนไฟล์เก็บถาวร ZIP, สตรีม GZIP, ภาพ PNG และการบีบอัดเว็บ HTTP มานานกว่าสามทศวรรษ
แปลง GZIP เป็น DEFLATE
ตัวแปลงจาก GZIP เป็น DEFLATE ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบและดู Metadata
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ DEFLATE โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ DEFLATE โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
78 9C / 78 01 / 78 DAการแสดงผลรูปแบบ ASCII: xœ / x. / xÚ
มาตรฐาน: IETF RFC 1951 / RFC 1950 (zlib)
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | Raw RFC 1951 bitstream or RFC 1950 zlib-wrapped stream with 2-byte header and Adler-32 checksum |
| การบีบอัด | LZ77 sliding dictionary (up to 32 KB window) combined with dynamic/static Huffman entropy coding |
| การจัดลำดับไบต์ (Byte Endianness) | Little-Endian bit-packing order |
| พื้นที่สี | N/A (Data Compression Stream) |
| ช่องสัญญาณและโครงสร้าง | Raw binary or text data stream |
| ขนาดสูงสุด | Unbounded stream length |
| ความโปร่งใส | 100% bit-exact lossless data reproduction |
| การสตรีมและแบบโปรเกรสซีฟ | Block-based bitstream supports arbitrary continuous byte streaming |
ตารางเปรียบเทียบทางเทคนิค: DEFLATE กับคู่แข่ง
| คุณลักษณะทางเทคนิค | DEFLATE (ปัจจุบัน) | GZ | BROTLI | ZSTD |
|---|---|---|---|---|
| การกำหนดมาตรฐาน | IETF RFC 1951 (ดิบ) / RFC 1950 (zlib) | IETF RFC 1952 (Gzip) | IETF RFC 7932 (Brotli) | IETF RFC 8878 (Zstandard) |
| หน้าต่างเลื่อน (Sliding Window) | สูงสุด 32 กิโลไบต์ | สูงสุด 32 กิโลไบต์ | สูงสุด 16 เมกะไบต์ | สูงสุด 2 จิกะไบต์ |
| โหมดค่าตรวจสอบ | Adler-32 (ในตัวห่อหุ้ม zlib) | CRC-32 (ในตัวห่อหุ้ม gzip) | ไม่มีสตรีมในตัว | xxHash64 (แฮชเร็ว 64 บิต) |
| การใช้งานประจำวัน | ภาพ PNG, สตรีม PDF, ZIP | Unix .tar.gz, HTTP gzip | ฟอนต์เว็บ (WOFF2), HTTP br | Linux kernel, ฐานข้อมูล, เกม |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
การคลายการบีบอัดล้มเหลวพร้อมข้อความ 'Z_DATA_ERROR: incorrect data check'
สาเหตุหลัก: ความไม่ตรงกันของค่าตรวจสอบ Adler-32 ขนาด 4 ไบต์ที่ส่วนท้ายของสตรีมที่ห่อหุ้มด้วย zlib
การกู้คืน: ข้ามการตรวจสอบ Adler-32 โดยใช้ raw inflate หรือซ่อมแซมด้วย File2File Deflate Recovery
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัววิเคราะห์ DEFLATE ต้องตรวจสอบความถูกต้องของรหัสการสร้างต้นไม้ Huffman อย่างเข้มงวดเพื่อป้องกันการเขียนพอยเตอร์นอกขอบเขต
เวกเตอร์การโจมตีที่ทราบ
- ตารางความยาวบิตต้นไม้ Huffman แบบไดนามิกที่ไม่สมบูรณ์หรือไม่ตรงตามกำหนด ทำให้เกิดการอ่านหน่วยความจำที่ไม่ถูกต้อง
- ระเบิดการคลายการบีบอัด (zip bomb) ที่ขยายเพย์โหลดขนาดเล็กให้กลายเป็น RAM หลายร้อยจิกะไบต์
- การอ่านบัฟเฟอร์เกินขอบเขตในรหัสระยะทางหน้าต่างเลื่อนที่ไม่ได้ตรวจสอบ
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- มาตรฐานระดับโลกที่ไม่มีใครเทียบได้:ใช้งานในฮาร์ดแวร์ ระบบปฏิบัติการ และรันไทม์การเขียนโปรแกรมทั้งหมด
- การออกแบบที่ปลอดสิทธิบัตรและค่าลิขสิทธิ์รับประกันการเข้าถึงแบบเปิดทั่วทั้งอุตสาหกรรมคอมพิวเตอร์
- การคลายการบีบอัดที่รวดเร็วด้วยการใช้หน่วยความจำน้อยที่สุด (ใช้หน่วยความจำหน้าต่างเลื่อนขนาด 32 KB เท่านั้น)
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- หน้าต่างเลื่อนจำกัดที่ 32 KB ลดประสิทธิภาพการบีบอัดในไฟล์ขนาดใหญ่ที่มีความซ้ำซ้อนในระยะไกล
- อัตราส่วนการบีบอัดบนทรัพยากรเว็บสมัยใหม่ต่ำกว่าอัลกอริทึมใหม่ ๆ เช่น Brotli และ Zstandard
- สตรีม DEFLATE ดิบขาดเมทadata ที่อธิบายตัวเองได้หรือการจัดกรอบคอนเทนเนอร์หากไม่มีตัวห่อหุ้ม zlib หรือ gzip
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- Phil Katz คิดค้น DEFLATE หลังจากถูกฟ้องร้องโดย Unisys เรื่องอัลกอริทึม LZW ที่ได้รับสิทธิบัตรซึ่งใช้ในยูทิลิตี้ PKARC ยุคแรก ๆ
- ไบต์ส่วนหัว zlib มาตรฐาน '78 9C' ระบุการบีบอัดเริ่มต้น, '78 01' การบีบอัดต่ำ และ '78 DA' การบีบอัดสูงสุด
- ภาพ PNG ทุกภาพบนโลกใช้ DEFLATE เพื่อบีบอัดส่วนพิกเซล IDAT ของมัน
คำถามทางเทคนิคที่พบบ่อย
ความแตกต่างระหว่าง DEFLATE, zlib และ gzip คืออะไร?
DEFLATE คืออัลกอริทึมการบีบอัดแบบดิบ (RFC 1951) ส่วน Zlib ห่อหุ้ม DEFLATE ด้วยส่วนหัวขนาด 2 ไบต์และค่าตรวจสอบ Adler-32 (RFC 1950) และ Gzip ห่อหุ้ม DEFLATE ด้วยข้อมูลเมตาของไฟล์และค่าตรวจสอบ CRC-32 (RFC 1952)
ทำไม PNG ถึงใช้ DEFLATE?
รูปแบบ PNG ถูกสร้างขึ้นในปี 1995 เพื่อแทนที่ GIF โดยไม่ใช้,อัลกอริทึม LZW ที่มีสิทธิบัตร และเลือกใช้ DEFLATE แบบเปิดโล่งและไม่มีค่าลิขสิทธิ์สำหรับการบีบอัด
ฉันจะคลายไฟล์ .deflate แบบดิบได้อย่างไร?
คุณสามารถคลายสตรีมไบต์ DEFLATE หรือ zlib แบบดิบให้เป็นไฟล์ต้นฉบับที่ไม่ได้บีบอัดได้ด้วย File2File.app บนเว็บเบราว์เซอร์ของคุณโดยตรง
คู่การแปลงไฟล์ DEFLATE ที่เกี่ยวข้อง
การแปลงสตรีม GZIP เป็น Raw DEFLATE เป็นการถอดส่วนห่อหุ้มไฟล์ด้านนอกและข้อมูลเมตาส่วนหัวออก เหลือไว้เฉพาะเพย์โหลดที่บีบอัดแล้วสำหรับโปรโตคอลเครือข่ายเฉพาะทางและคลังเก็บข้อมูลระดับต่ำ
การแปลง DEFLATE ดิบเป็นสตรีม GZIP เป็นการห่อหุ้มเพย์โหลดที่บีบอัดไว้ภายในคอนเทนเนอร์มาตรฐานที่มีส่วนหัวข้อมูลเมตาเพื่อให้ระบบปฏิบัติการและเครื่องมือเว็บสามารถอ่านได้อย่างถูกต้อง