DEFLATE thô (.deflate)

IETF Tiêu chuẩn

DEFLATE là thuật toán nén dữ liệu không mất dữ liệu được sử dụng rộng rãi trong lịch sử điện toán, làm nền tảng cho các kho lưu trữ ZIP, luồng GZIP, hình ảnh PNG và nén web HTTP trong hơn ba thập kỷ.

Chuyển đổi GZIP sang DEFLATE

Trình chuyển đổi từ GZIP sang DEFLATE miễn phí trên trình duyệt. Chuyển đổi tệp ngay lập tức trên thiết bị của bạn.

Kiểm tra & Siêu dữ liệu

Các hệ điều hành và trình phân tích tệp nhận dạng tệp DEFLATE bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

Chọn hoặc thả tệp vào đây

Riêng tư - tệp không bao giờ rời khỏi thiết bị của bạn

Hoặc dán Ctrl+V
Cam kết bảo vệ quyền riêng tư, không truyền dữ liệu qua mạng: 0 byte được tải lên máy chủ bên ngoài. Toàn bộ quá trình xử lý diễn ra cục bộ trong hộp cát trình duyệt của bạn.

Chữ ký ở đầu tệp (mẫu byte nhận diện)

Các hệ điều hành và trình phân tích tệp nhận dạng tệp DEFLATE bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

CHỮ KÝ HEX (OFFSET 0):

DEFLATE thô không có chữ ký cố định; các luồng được bọc bằng zlib bắt đầu bằng các byte CMF/FLG thay đổi.

BIỂU DIỄN ASCII: Không có chữ ký cố định

Tiêu chuẩn hóa: IETF RFC 1951 / RFC 1950 (zlib)

Thông số kỹ thuật

Kiến trúc ContainerLuồng bit RFC 1951 thô hoặc luồng bọc zlib RFC 1950 có tiêu đề 2 byte và tổng kiểm tra Adler-32
NénTừ điển trượt LZ77 (cửa sổ tối đa 32 KB) kết hợp mã hóa entropy Huffman động/tĩnh
Thứ tự byteThứ tự đóng gói bit little-endian
Không gian màuKhông áp dụng (luồng nén dữ liệu)
Kênh & Cấu trúcLuồng dữ liệu nhị phân thô hoặc văn bản
Kích thước tối đaĐộ dài luồng không giới hạn
Độ trong suốtTái tạo dữ liệu không mất dữ liệu, chính xác từng bit
Truyền phát & Tăng dầnLuồng bit dựa trên khối hỗ trợ truyền liên tục số byte bất kỳ

Ma trận so sánh kỹ thuật: DEFLATE so với các đối thủ

Thuộc tính kỹ thuậtDEFLATE (Hiện tại)GZBROTLIZSTD
Tiêu chuẩn hóaIETF RFC 1951 (Thô) / RFC 1950 (zlib)IETF RFC 1952 (Gzip)IETF RFC 7932 (Brotli)IETF RFC 8878 (Zstandard)
Cửa sổ trượtTối đa 32 KilobyteTối đa 32 KilobyteLên đến 16 MegabyteLên đến 2 Gigabyte
Chế độ tổng kiểm traAdler-32 (trong trình bao bọc zlib)CRC-32 (trong trình bao bọc gzip)Không có sẵn trong luồngxxHash64 (băm nhanh 64-bit)
Sử dụng hàng ngàyHình ảnh PNG, luồng PDF, ZIPUnix .tar.gz, gzip qua HTTPPhông chữ web (WOFF2), HTTP brNhân Linux, cơ sở dữ liệu, chơi game

Các dạng hỏng thường gặp và hướng dẫn khôi phục bằng mã hex

Giải nén thất bại với thông báo 'Z_DATA_ERROR: incorrect data check'.

Nguyên nhân gốc rễ: Không khớp tổng kiểm tra Adler-32 4-byte ở cuối luồng được bọc zlib.

Khắc phục: Bỏ qua xác thực Adler-32 bằng cách sử dụng inflate thô hoặc sửa chữa bằng File2File.app Deflate Recovery.

Phân tích bảo mật và các đường tấn công nhằm vào bộ phân tích cú pháp

Trình phân tích cú pháp DEFLATE phải xác thực nghiêm ngặt các mã xây dựng cây Huffman để ngăn chặn việc ghi con trỏ vượt quá giới hạn.

Các véc-tơ tấn công đã biết

  • Bảng độ dài bit của cây Huffman động không đầy đủ hoặc có quá nhiều mã được gán gây ra lỗi đọc bộ nhớ không hợp lệ.
  • Bom giải nén (zip bomb) mở rộng các tải trọng nhỏ thành hàng trăm gigabyte RAM.
  • Đọc quá giới hạn bộ đệm trong mã khoảng cách cửa sổ trượt chưa được xác thực.

Biện pháp phòng thủ tốt nhất: Thi hành giới hạn phân bổ bộ nhớ tối đa và tỷ lệ mở rộng trong quá trình giải nén.

Nguồn gốc lịch sử và các cột mốc

1996Peter Deutsch chính thức hóa DEFLATE thành IETF RFC 1951 và zlib thành RFC 1950.
1995Jean-loup Gailly và Mark Adler phát hành zlib.
1991Phil Katz phát minh ra DEFLATE cho PKZIP 2.0 để thay thế các thuật toán Implode và Reduce cũ hơn.

Ưu điểm & Lợi ích chính

  • Tiêu chuẩn toàn cầu không thể tranh cãi: được triển khai trong phần cứng, hệ điều hành và mọi môi trường thực thi lập trình.
  • Thiết kế không có bằng sáng chế và không thu phí bản quyền đảm bảo quyền truy cập mở trên toàn ngành công nghiệp điện toán.
  • Giải nén nhanh với mức tiêu thụ bộ nhớ tối thiểu (chỉ yêu cầu bộ nhớ cửa sổ trượt 32 KB).

Hạn chế & Nhược điểm kỹ thuật

  • Cửa sổ trượt giới hạn ở 32 KB, làm giảm hiệu quả nén trên các tệp lớn có các phần trùng lặp ở khoảng cách xa.
  • Tỷ lệ nén trên các tài nguyên web hiện đại thấp hơn so với các thuật toán mới hơn như Brotli và Zstandard.
  • Các luồng DEFLATE thô thiếu siêu dữ liệu tự mô tả hoặc khung chứa nếu không có trình bao bọc zlib hoặc gzip.

Thông tin kỹ thuật thú vị

  • Phil Katz đã phát minh ra DEFLATE sau khi bị Unisys kiện vì thuật toán LZW được cấp bằng sáng chế sử dụng trong các tiện ích PKARC thời kỳ đầu.
  • Các byte tiêu đề zlib chuẩn '78 9C' cho biết nén mặc định, '78 01' nén thấp và '78 DA' nén tối đa.
  • Mọi hình ảnh PNG trên Trái đất đều sử dụng DEFLATE để nén các khối pixel IDAT của nó.

Các câu hỏi kỹ thuật thường gặp

Sự khác biệt giữa DEFLATE, zlib và gzip là gì?

DEFLATE là thuật toán nén thô (RFC 1951). Zlib bao bọc DEFLATE bằng một tiêu đề 2 byte và mã kiểm tra Adler-32 (RFC 1950). Gzip bao bọc DEFLATE bằng siêu dữ liệu tệp và mã kiểm tra CRC-32 (RFC 1952).

Tại sao định dạng PNG lại sử dụng DEFLATE?

Định dạng PNG được tạo ra vào năm 1995 để thay thế GIF mà không dùng các thuật toán LZW có bản quyền, và đã chọn DEFLATE mở, miễn phí bản quyền để làm thuật toán nén.

Làm thế nào để giải nén tệp .deflate thô?

Bạn có thể giải nén các luồng dữ liệu thô DEFLATE hoặc zlib thành các tệp chưa nén ban đầu bằng File2File.app trực tiếp trên trình duyệt web của bạn.