DEFLATE ดิบ (.deflate)

IETF มาตรฐาน

DEFLATE คืออัลกอริทึมการบีบอัดข้อมูลแบบไม่สูญเสียข้อมูลที่แพร่หลายที่สุดในประวัติศาสตร์คอมพิวเตอร์ ซึ่งขับเคลื่อนไฟล์เก็บถาวร ZIP, สตรีม GZIP, ภาพ PNG และการบีบอัดเว็บ HTTP มานานกว่าสามทศวรรษ

แปลง GZIP เป็น DEFLATE

ตัวแปลงจาก GZIP เป็น DEFLATE ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ

ตรวจสอบและดู Metadata

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ DEFLATE โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

การแปลงไฟล์แบบส่วนตัว 100% ในเบราว์เซอร์ - ไฟล์จะไม่ rời ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
การรับประกันความเป็นส่วนตัวแบบไม่มีการส่งผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวในระดับไบต์ (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 (ปัจจุบัน)GZBROTLIZSTD
การกำหนดมาตรฐาน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, ZIPUnix .tar.gz, HTTP gzipฟอนต์เว็บ (WOFF2), HTTP brLinux 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 หลายร้อยจิกะไบต์
  • การอ่านบัฟเฟอร์เกินขอบเขตในรหัสระยะทางหน้าต่างเลื่อนที่ไม่ได้ตรวจสอบ

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:

ประวัติความเป็นมาและเหตุการณ์สำคัญ

1996Peter Deutsch กำหนดให้ DEFLATE เป็น IETF RFC 1951 และ zlib เป็น RFC 1950 อย่างเป็นทางการ
1995Jean-loup Gailly และ Mark Adler เปิดตัว zlib ซึ่งเป็นไลบรารีอ้างอิง C สากลสำหรับ DEFLATE
1991Phil Katz คิดค้น DEFLATE สำหรับ PKZIP 2.0 เพื่อแทนที่อัลกอริทึม Implode และ Reduce รุ่นเก่า

ข้อได้เปรียบและจุดเด่นสำคัญ

  • มาตรฐานระดับโลกที่ไม่มีใครเทียบได้:ใช้งานในฮาร์ดแวร์ ระบบปฏิบัติการ และรันไทม์การเขียนโปรแกรมทั้งหมด
  • การออกแบบที่ปลอดสิทธิบัตรและค่าลิขสิทธิ์รับประกันการเข้าถึงแบบเปิดทั่วทั้งอุตสาหกรรมคอมพิวเตอร์
  • การคลายการบีบอัดที่รวดเร็วด้วยการใช้หน่วยความจำน้อยที่สุด (ใช้หน่วยความจำหน้าต่างเลื่อนขนาด 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 บนเว็บเบราว์เซอร์ของคุณโดยตรง