生DEFLATE (.deflate)
IETF 標準DEFLATE は、コンピューティングの歴史の中で最も普及しているロスレスデータ圧縮アルゴリズムであり、30年以上にわたり ZIP アーカイブ、GZIP ストリーム、PNG 画像、および HTTP Web 圧縮を支えてきました。
GZIP を DEFLATE に変換
無料のブラウザ内 GZIP から DEFLATE へのコンバーター。お使いのデバイスでファイルを即座に変換します。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで DEFLATE ファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで DEFLATE ファイルを識別します:
16進数シグネチャ (オフセット 0):
78 9C / 78 01 / 78 DAASCII表現: 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 |
| バイトエンディアン | 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 (現在) | GZ | BROTLI | ZSTD |
|---|---|---|---|---|
| 標準化 | IETF RFC 1951 (生) / RFC 1950 (zlib) | IETF RFC 1952 (Gzip) | IETF RFC 7932 (Brotli) | IETF RFC 8878 (Zstandard) |
| スライディングウィンドウ | 最大 32 キロバイト | 最大 32 キロバイト | 最大 16 メガバイト | 最大 2 ギガバイト |
| チェックサムモード | Adler-32 (zlib ラッパー内) | CRC-32 (gzip ラッパー内) | 組み込みストリームなし | xxHash64 (64ビット高速ハッシュ) |
| 日常的な用途 | PNG 画像、PDF ストリーム、ZIP | Unix .tar.gz、HTTP gzip | Web フォント (WOFF2)、HTTP br | Linux カーネル、データベース、ゲーム |
一般的な破損モードと16進数リカバリガイド
解凍が「Z_DATA_ERROR: incorrect data check」で失敗する。
根本原因: zlib でラップされたストリームの末尾にある 4 バイトの Adler-32 チェックサムの不一致。
復旧: 生のインフレ (raw inflate) を使用して Adler-32 検証をバイパスするか、File2File Deflate Recovery で修復します。
セキュリティ分析とパーサー攻撃ベクトル
DEFLATE パーサーは、範囲外のポインタ書き込みを防ぐために、Huffman ツリー構築コードを厳密に検証する必要があります。
既知の攻撃ベクター
- 不完全または超過した動的 Huffman ツリーのビット長テーブルにより、無効なメモリ読み取りが発生する。
- 小さなペイロードを数百ギガバイトの RAM に拡張する解凍爆弾 (zip 爆弾)。
- 検証されていないスライディングウィンドウ距離コードにおけるバッファ過剰読み取り。
防御的ベストプラクティス:
歴史的背景とマイルストーン
主な利点とメリット
- 議論の余地のない世界標準:ハードウェア、オペレーティングシステム、およびすべてのプログラミングランタイムに実装されています。
- 特許およびロイヤルティフリーのデザインにより、コンピューティング業界全体でオープンなアクセスが保証されています。
- 最小限のメモリフットプリントで高速な解凍を実現します(わずか 32 KB のスライディングウィンドウメモリのみを必要とします)。
技術的な制限とデメリット
- スライディングウィンドウが 32 KB に制限されているため、遠くにある冗長性を持つ大きなファイルでは圧縮効率が低下します。
- BrotliやZstandardなどの新しいアルゴリズムと比較して、最新のWebアセットに対する圧縮率が低いです。
- 生の DEFLATE ストリームには、zlib や gzip のラッパーがない場合、自己記述型のメタデータやコンテナのフレーミングがありません。
興味深い技術トリビア
- Phil Katz は、初期の PKARC ユーティリティで使用されていた特許取得済みの LZW アルゴリズムに関して Unisys から提訴された後、DEFLATE を発明しました。
- 標準の zlib ヘッダーバイト「78 9C」はデフォルトの圧縮、「78 01」は低圧縮、「78 DA」は最大圧縮を示しています。
- 地球上のすべての PNG 画像は、IDAT ピクセルチャンクを圧縮するために DEFLATE を使用しています。
よくある技術的な質問
DEFLATE、zlib、gzipの違いは何ですか?
DEFLATEは生データの圧縮アルゴリズムです(RFC 1951)。ZlibはDEFLATEに2バイトのヘッダーとAdler-32チェックサムを付加したものです(RFC 1950)。GzipはDEFLATEにファイルメタデータとCRC-32チェックサムを付加したものです(RFC 1952)。
PNGがDEFLATEを使用しているのはなぜですか?
PNG形式は1995年に、特許で保護されたLZWアルゴリズムを使用せずにGIFを置き換えるために作成され、圧縮にはオープンでロイヤリティフリーのDEFLATEが選ばれました。
生の.deflateファイルを解凍するにはどうすればよいですか?
File2File.appを使用すれば、ウェブブラウザ上で直接、生のDEFLATEまたはzlibバイトストリームを元の未圧縮ファイルに解凍できます。