Tệp nén GZIP (.gz)

IETF Tiêu chuẩn

Gzip (GZ) là tiện ích nén và định dạng tệp chuẩn của GNU, được triển khai rộng rãi trên các hệ thống điều hành Unix và máy chủ web HTTP để nén tệp và tài sản web nhanh chóng.

Chuyển đổi TAR sang GZ

Trình chuyển đổi từ TAR sang GZ 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 GZ 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

Chuyển đổi 100% riêng tư trong trình duyệ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 mật không truyền tải 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ý tiêu đề ở cấp độ Byte (Magic Bytes)

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

CHỮ KÝ HEX (OFFSET 0):

1F 8B 08

BIỂU DIỄN ASCII: ..\x08

Tiêu chuẩn hóa: IETF RFC 1952

Thông số kỹ thuật

Kiến trúc Container10-byte header (magic 0x1F 0x8B, method 8, flags, mtime, OS) followed by DEFLATE stream and 8-byte footer
NénDEFLATE algorithm (LZ77 sliding window + Huffman coding)
Thứ tự byte EndiannessLittle-Endian header and footer integers
Không gian màuN/A (Archive Container)
Kênh & Cấu trúcSingle-file compressed byte stream
Kích thước tối đaUncompressed size recorded modulo 2^32 (supports unbounded stream lengths)
Độ trong suốt100% bit-exact lossless data preservation
Truyền phát & Tăng dầnSequential single-pass streaming playback over pipes and HTTP networks

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

Thuộc tính kỹ thuậtGZ (Hiện tại)BZ2BROTLIZSTD
Tốc độ giải nénNhanh (~300 MB/s)Chậm (~40 MB/s)Rất nhanh (~400 MB/s)Cực nhanh (>1.5 GB/s)
Sử dụng web phổ thông100% tất cả trình duyệt & máy chủKhông hỗ trợ trình duyệt webĐược hỗ trợ qua HTTPS trong mọi trình duyệtHỗ trợ trình duyệt & máy chủ đang tăng
Đóng gói đa tệpYêu cầu vùng chứa TAR (.tar.gz)Yêu cầu vùng chứa TAR (.tar.bz2)Luồng thô hoặc vùng chứa tùy chỉnhYêu cầu vùng chứa TAR (.tar.zst)
Xác thực tổng kiểm traCRC 32-bit (CRC-32)CRC 32-bit trên mỗi khốiKhông có sẵn trong luồngxxHash 64-bit

Các chế độ hỏng hóc phổ biến & Hướng dẫn khôi phục Hex

Lỗi giải nén: 'gzip: stdin: unexpected end of file'.

Nguyên nhân gốc rễ: Việc truyền tệp kết thúc sớm làm cắt đứt luồng DEFLATE hoặc chân trang CRC32 8-byte.

Khắc phục: Giải nén các phần nội dung bằng 'gzip -d --keep broken.gz' hoặc Trình trích xuất Gzip File2File.

Phân tích bảo mật & Các vectơ tấn công bộ phân tích cú pháp

Trình phân tích cú pháp Gzip xử lý các tiêu đề do người dùng kiểm soát và các luồng bit DEFLATE cần được bảo vệ chống lại bom giải nén.

Các Véc-tơ Tấn công Đã biết

  • Bom giải nén (zip bomb) mở rộng hàng megabyte dữ liệu Gzip thành hàng trăm gigabyte dung lượng đĩa.
  • Tràn bộ đệm khi đọc chuỗi tên tệp gốc tùy chọn từ tiêu đề.
  • Tràn số nguyên trong quá trình so sánh kiểm tra CRC 32-bit.

Thực tiễn Tốt nhất về Phòng thủ:

Nguồn gốc lịch sử & Các cột mốc

1996IETF chính thức hóa thông số kỹ thuật định dạng tệp Gzip thành RFC 1952.
1993Được Dự án GNU áp dụng để thay thế tiện ích 'compress' độc quyền của Unix (tệp .Z).
1992Jean-loup Gailly và Mark Adler tạo ra Gzip như một công cụ nén không có bằng sáng chế cho phong trào phần mềm tự do.

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

  • Tiêu chuẩn chung cho nén HTTP internet ('Content-Encoding: gzip') được hỗ trợ bởi 100% khách hàng web.
  • Bảo lưu dấu thời gian sửa đổi tệp gốc và tên tệp gốc tùy chọn bên trong tiêu đề 10-byte.
  • Mức tiêu thụ CPU nhẹ trong quá trình giải nén, chạy mượt mà trên các thiết bị di động công suất thấp và bộ định tuyến.

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

  • Chỉ nén tệp đơn: không thể nén nhiều tệp hoặc thư mục mà không gom chúng vào vùng chứa TAR trước.
  • Tỷ lệ nén thấp hơn các thuật toán hiện đại như Brotli và Zstandard trên văn bản web hiện đại.
  • Trường kích thước chưa nén ở chân trang là modulo 32-bit 2^32, gây ra lỗi hiển thị cuộn trên các tệp lớn hơn 4 GB.

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

  • Các byte nhận dạng 0x1F 0x8B được chọn vì lịch sử 0x1F là byte đầu tiên của các tệp 'compress' trên Unix, trong khi 0x8B nhận dạng Gzip.
  • Hơn 80% tổng số trang web trên internet sử dụng tính năng nén Gzip để phân phối các trang web đến trình duyệt.
  • Jean-loup Gailly viết mã nén trong khi Mark Adler viết mã giải nén (inflate); cả hai đều nhận được Giải thưởng Hệ thống Phần mềm ACM.

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

Tại sao tôi không thể nén một thư mục bằng Gzip?

Gzip được thiết kế để nén một luồng byte đơn lẻ. Để nén một thư mục, các hệ thống Unix trước tiên gộp thư mục thành một tệp .tar duy nhất, sau đó nén nó bằng Gzip để tạo thành tệp .tar.gz.

Sự khác biệt giữa .gz và .zip là gì?

.zip là một định dạng lưu trữ đóng gói nhiều tệp lại với nhau kèm theo mục lục thư mục. .gz chỉ nén một tệp duy nhất và thường được kết hợp với tar trên các hệ thống Unix.

Làm cách nào để giải nén tệp .gz trên Windows hoặc Mac?

Hãy sử dụng File2File.app để giải nén tức thì các tệp .gz trực tiếp trên trình duyệt web của bạn mà không cần cài đặt bất kỳ phần mềm nào.