Tệp nén GZIP (.gz)
IETF Tiêu chuẩnGzip (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ữ 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 08BIỂU DIỄN ASCII: ..\x08
Tiêu chuẩn hóa: IETF RFC 1952
Thông số kỹ thuật
| Kiến trúc Container | 10-byte header (magic 0x1F 0x8B, method 8, flags, mtime, OS) followed by DEFLATE stream and 8-byte footer |
| Nén | DEFLATE algorithm (LZ77 sliding window + Huffman coding) |
| Thứ tự byte Endianness | Little-Endian header and footer integers |
| Không gian màu | N/A (Archive Container) |
| Kênh & Cấu trúc | Single-file compressed byte stream |
| Kích thước tối đa | Uncompressed size recorded modulo 2^32 (supports unbounded stream lengths) |
| Độ trong suốt | 100% bit-exact lossless data preservation |
| Truyền phát & Tăng dần | Sequential 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ật | GZ (Hiện tại) | BZ2 | BROTLI | ZSTD |
|---|---|---|---|---|
| Tốc độ giải nén | Nhanh (~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ông | 100% 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ệt | Hỗ trợ trình duyệt & máy chủ đang tăng |
| Đóng gói đa tệp | Yê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ỉnh | Yêu cầu vùng chứa TAR (.tar.zst) |
| Xác thực tổng kiểm tra | CRC 32-bit (CRC-32) | CRC 32-bit trên mỗi khối | Không có sẵn trong luồng | xxHash 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
Ư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.
Các cặp chuyển đổi GZ liên quan
Chuyển đổi lưu trữ TAR thành lưu trữ GZIP để bọc một tập hợp tệp chưa nén thành một luồng nén duy nhất bằng thuật toán DEFLATE không mất dữ liệu nhằm giảm đáng kể kích thước tệp.
Chuyển đổi tệp nén GZIP thành tệp lưu trữ TAR để loại bỏ lớp nén, làm lộ ra tập hợp các tệp và thư mục thô, chưa nén.