GZIP 压缩包 (.gz)
IETF 标准Gzip (GZ) 是标准的 GNU 压缩实用程序和文件格式,广泛部署在 Unix 操作系统和互联网 HTTP 服务器上,用于快速文件和网络资产压缩。
将 TAR 转换为 GZ
免费的浏览器端 TAR 转 GZ 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 GZ 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 GZ 文件:
十六进制签名 (偏移量 0):
1F 8B 08ASCII 表示形式: ..\x08
标准化: IETF RFC 1952
技术规格
| 容器架构 | 10-byte header (magic 0x1F 0x8B, method 8, flags, mtime, OS) followed by DEFLATE stream and 8-byte footer |
| 压缩方式 | DEFLATE algorithm (LZ77 sliding window + Huffman coding) |
| 字节序 | Little-Endian header and footer integers |
| 色彩空间 | N/A (Archive Container) |
| 通道与结构 | Single-file compressed byte stream |
| 最大尺寸 | Uncompressed size recorded modulo 2^32 (supports unbounded stream lengths) |
| 透明度 | 100% bit-exact lossless data preservation |
| 流式传输与渐进式加载 | Sequential single-pass streaming playback over pipes and HTTP networks |
技术对比矩阵:GZ 对比同类产品
| 技术属性 | GZ (当前) | BZ2 | BROTLI | ZSTD |
|---|---|---|---|---|
| 解压速度 | 快(约 300 MB/s) | 慢(约 40 MB/s) | 非常快(约 400 MB/s) | 极快(>1.5 GB/s) |
| 通用网络采用率 | 100% 的浏览器和服务器 | 零网页浏览器支持 | 所有浏览器中均通过 HTTPS 支持 | 不断增长的浏览器和服务器支持 |
| 多文件打包 | 需要 TAR 容器 (.tar.gz) | 需要 TAR 容器 (.tar.bz2) | 原始流或自定义容器 | 需要 TAR 容器 (.tar.zst) |
| 校验和验证 | 32 位 CRC (CRC-32) | 每块 32 位 CRC | 流中无内置 | 64 位 xxHash |
常见损坏模式与十六进制恢复指南
提取错误:"gzip: stdin: unexpected end of file"(gzip:标准输入:意外的文件结束)。
根本原因: 过早的文件传输终止切断了 DEFLATE 流或 8 字节 CRC32 页脚。
恢复方法: 使用"gzip -d --keep broken.gz"或 File2File Gzip 提取器提取部分内容。
安全分析与解析器攻击向量
Gzip 解析器处理用户控制的头部和 DEFLATE 位流,必须防范解压炸弹。
已知攻击向量
- 将数兆字节的 Gzip 数据扩展到数百 GB 磁盘空间的解压炸弹(zip 炸弹)。
- 从头部读取可选的原始文件名字符串时发生缓冲区溢出。
- 32 位 CRC 检查比较过程中的整数溢出。
防御性最佳实践:
历史渊源与里程碑
1996IETF 将 Gzip 文件格式规范正式确立为 RFC 1952。
1993被 GNU 项目采用,以取代专有的 Unix"compress"实用程序(.Z 文件)。
1992Jean-loup Gailly 和 Mark Adler 为自由软件运动创建了 Gzip 作为无专利的压缩工具。
核心优势与特点
- 受到 100% 网络客户端支持的互联网 HTTP 压缩("Content-Encoding: gzip")的通用基准。
- 在 10 字节头部内保留原始文件修改时间戳和可选的原始文件名。
- 解压时 CPU 占用轻量,在低功耗移动设备和路由器上运行流畅。
技术局限与劣势
- 仅支持单文件压缩:如果不先将多个文件或目录捆绑到 TAR 容器中,就无法压缩它们。
- 在现代网络文本上,压缩率低于 Brotli 和 Zstandard 等现代算法。
- 页脚未压缩大小字段是 32 位模 2^32,导致大于 4 GB 的文件出现滚动显示错误。
趣味技术冷知识
- 选择魔术字节 0x1F 0x8B 是因为 0x1F 历史上是 Unix"compress"文件的第一个字节,而 0x8B 标识了 Gzip。
- 互联网上超过 80% 的网站都使用 Gzip 压缩来向浏览器交付网页。
- Jean-loup Gailly 编写了压缩代码,而 Mark Adler 编写了解压(inflate)代码;两人都获得了 ACM 软件系统奖。
常见技术问题
为什么我无法使用 Gzip 压缩文件夹?
Gzip 旨在压缩单个字节流。为了压缩文件夹,Unix 系统会首先将文件夹打包成一个单一的 .tar 文件,然后使用 Gzip 对其进行压缩,从而创建一个 .tar.gz 文件。
.gz 和 .zip 有什么区别?
.zip 是一种归档格式,它将多个文件连同目录索引打包在一起。.gz 仅压缩单个文件,通常在 Unix 系统中与 tar 搭配使用。
如何在 Windows 或 Mac 上解压 .gz 文件?
使用 File2File.app 可以直接在网页浏览器中瞬间解压 .gz 文件,完全无需安装任何软件。