[131] gzip は、圧縮形式の1つです。 Unix や HTTP などで広く用いられています。
[51] gzip は RFC 1952 により定義されています。
[56] gzip ファイルは、 メンバーの列で構成されます >>19。
[123] メンバー数は特に規定されていません。 0個でも構わないのかは不明です。
[133] メンバー数が1個以外のものが使われることもあるようですが、 相互運用性は高くないようです >>136。
[142] 圧縮データの末尾は検知可能であり (gzip で用いる圧縮形式はそのようなものでなければならず)、 記録指向のファイルシステムや、 特定ブロック長の倍数でしか読めない装置由来の場合の圧縮データを扱う展開器は、 末尾を検知して以後を読み飛ばさなければなりません。 (gzip コマンドにもそのような機能が備わっています。) >>141
[57] メンバーは、 圧縮データ集合であり、 次のように構成されます。 >>19
[67] ID1 から OS までを gzip ヘッダー >>19 と呼びます。
[124] 展開器に与えられたデータが十分な長さがない場合にどう処理するべきかは不明ですが、 エラーとするべきでしょう。
[58] ID1 は 31 (0x1F)、 ID2 は 139 (0x8B) で、 gzip であることを表します。 >>19
[62] FLG は、 次の各ビットで構成されます。 >>19
[63] FTEXT が設定されている場合、 ファイルはおそらく ASCII テキストであることを表します。 >>19
[64] 圧縮器は入力データを少量検査して本フラグを設定できますが、 必ず設定しなければならないものではなく、 はっきりしない時は 0 とできます。 圧縮器は常に 0 としても構いません。 >>19
[65] 展開器は本フラグを無視して常にバイナリーデータとして扱っても構いません。 ASCII テキストとバイナリーデータで異なるファイル形式を使うシステムでは、 展開器は本フラグを見て適切な形式を選択できます。 >>19
[66] FHCRC が設定されている場合、 CRC16 が存在することを表します。 >>19
[109] 圧縮器は、これを 0 として構いません。 >>19
[69] FEXTRA が設定されている場合、 余剰欄が存在することを表します。 >>19
[70] FNAME が設定されている場合、 元のファイル名が存在することを表します。 >>19
[77] FCOMMENT が設定されている場合、 コメントが存在することを表します。 >>19
[110] 圧縮器は、これらをすべて 0 として構いません。 >>19
[83] MTIME は、 元のファイルが最も直近で修正された時刻を表します。 >>19
[85] 圧縮されたデータがファイル由来でない場合は、 圧縮が開始された時刻とします。 >>19
[84] 時刻は、 Unix time の秒数です。 >>19
[91] XFL は、 CM 依存のフラグ群で、1バイトあります >>19。
[92] CM が 8 の時、次のフラグがあります >>19。
[93] その他の値は定義されていません。
[94] OS は、 圧縮したファイルシステム種別を表す1バイトの値です。 >>19
[95] テキストファイルの改行の決定に便利かもしれません。 >>19
[96] 次の値が定義されています。
[102] FEXTRA が設定されている場合、 XLEN と余剰欄が存在します。
[117] 展開器は、最低でも XLEN 余剰欄を読み飛ばさなければなりません。 >>19
[103] 余剰欄は、 次の部分欄の列で構成されます。 >>19
[104] SI1 と SI2 の組で部分欄IDを表します。 >>19
[105] 通常は2つの ASCII文字が割り当てられます。 割当は Jean-Loup Gailly <gzip@prep.ai.mit.edu> が管理しています。 >>19 追加要求は <support@gzip.org> に送信することになっています >>141。
[143] (0x41, 0x43) = AC
は、 Acorn RISC OS/BBC MOS ファイル型情報
を表します (Kevin Bracey)。 >>141
[151] この場合データは28バイトで、 32ビットの小エンディアンの語7つで構成されます。 >>141
[152] load address と execution address はかつては実際に番地を表すために用いられましたが、 近年は他の情報を埋め込むために使っています。その場合上位12ビットが 0xFFF となります。次の12ビットがファイル型、残り (load address 下位8ビットと execution address) がタイムスタンプを表します。 >>141
[154] ファイル型は Acorn により割り当てられるもので、 次のものが含まれます。 >>141
[155] タイムスタンプはからのセンチ秒数を40ビット符号無し整数で表したもの >>141 (RISC OS時刻) です。 最上位バイトは load address に含めます >>141。
[153] object attributes は、次のビットで構成されます。 >>141
[107] (0x41, 0x70) = Ap
は、 Apollo ファイル型情報 を表します。 >>19
(David Sundstrom) >>141
[140] (66, 67) = BC
は、
BGZF が使っています >>138。
[150] この場合データは BSIZE、すなわち BGZF ブロックサイズ - 1 を小エンディアンの16ビット符号無し整数で表したものです。 >>138
[144] (0x63, 0x70) = cp
は、
cpio で圧縮したファイルを表します
(Geoffrey Dairiki)。 >>141
[149] この場合データは FNAME 欄の長さであり、2バイトで表します >>141。 エンディアンは不明ですが、 gzip 本体と同じとすれば小エンディアンでしょうか。
[145] (0x1D, 0x53) = gs
(ママ) は、
gzsig http://www.monkey.org/~dugsong/gzsig-0.1.tar.gz
(Dug Song) で使っています。 >>141
[146] (0x4B, 0x4E) = KN
は、
KeyNote assertion (RFC 2704) http://www.cis.upenn.edu/~keynote/
(Dug Song) で使っています。 >>141
[147] (0x4D, 0x63) = Mc
は、
Macintosh 情報 (Type および Creator) を表します
(Cary Scofield)。 >>141
[148] (0x52, 0x4F) = RO
は、
Acorn Risc OS ファイル型情報を表します
(Adam Goodfellow)。 >>141
[106] SI2 = 0 の ID は、将来用に予約されています。 >>19
[71] 元のファイル名は、 FNAME が設定されているときに存在します >>19。
[74] 元のファイル名は、圧縮されたファイルの元の名前であり、 ディレクトリ名は含みません。 >>19
[75] 圧縮されたファイルが大文字・小文字不区別なファイルシステム上にある場合、 小文字とします。 >>19
[73] 元のファイル名は、 ISO 8859-1 文字で構成されなければなりません。 >>19
[72] 元のファイル名は、 0x00 のバイトで終端します。 >>19
[76] 名前のあるファイル以外を圧縮した時は、元のファイル名はありません。 >>19
[126] 空文字列とすることも特に禁止はされていません。意味があるのかどうかは謎ですが。
[127] 利用できるファイル名や長さに制約はありません。 古い gzip はあまりに長いファイル名でクラッシュする不具合がありました >>132。 実装時には長いファイル名によりセキュリティー上の問題とならないように注意が必要です。
[79] コメントは、 FCOMMENT が設定されているときに存在します >>19。
[81] コメントは ISO 8859-1 文字で構成されます。 改行は、1つの 0x0A で表すべきです。 >>19
[82] コメントは、 0x00 のバイトで終端します。 >>19
[100] CRC16 は、 FHCRC が設定されているときに存在します。 >>19
[101] gzip ヘッダーの CRC16 です。 >>19
[118] 展開器は、最低でも FHCRC を検査してCRC16を読み飛ばさなければなりません。 >>19 CRC16 を検査することは義務付けられていないようです。
[98] CRC32 は、 未圧縮データの CRC-32 値です。 >>19
[121] gzip を使うシステムは、 CRC-32 を検査する手段を提供するべき >>19 とされていますが、 展開器が CRC32 を検査することは義務付けられていないようです。
[158] RFC 6713 は gzip の MIME型を
application/gzip
と定義しています >>6。
他にもいくつかの MIME型にも言及はしていますが、定義はせず、
application/gzip
を使うべきとしています >>6。
gzip
[7] HTTP の内容符号化と転送符号化 gzip
は、 gzip ファイル圧縮プログラムが生成する LZ77
符号化と32ビット CRC による符号化 RFC 1952
を表します >>8, >>11, >>12。
[28] Content-Type:
が application/x-gzip
で、 Content-Encoding:
が無しのもの:
[32] Content-Type:
が application/octet-stream
で Content-Encoding:
は無しのもの:
[41] Content-Type:
が application/binary
で Content-Encoding:
は無しのもの:
[48] Content-Type:
が binary/octet-stream
で Content-Encoding:
は無しのもの:
[37] Content-Type:
が展開後のファイル形式で、
Content-Encoding:
が gzip
のもの:
[22] Directory Listing: / () http://ftp.mozilla.org/
[23] >>22 gzip ファイルに Content-Encoding:
はありませんが、
Content-Type:
は展開後のファイル形式を表している、
という変な状態になっています。
[55] gzip の仕様書の 4.1 版、 4.2 版、 4.3 版に技術的な違いはありません。 4.3 が RFC 1952 です。 >>19
gzip
[14] 実現値操作 gzip
は、
内容符号化 gzip
と同じです >>13。
[16] gdiff
や diffe
は圧縮によって大きくサイズを削減できますから、
gzip
も実装することが強く推奨されています >>15。
[89] IANA登録簿には RFC 2616 を出典として登録されています >>88。 RFC 723x 出版後も出典は更新されていません。
[52] 圧縮データへのランダムアクセスは設計上想定外とされています >>19。
[132] The gzip home page () http://www.gzip.org/
[3]gzip - Wikipedia, the free encyclopedia ( 版) http://en.wikipedia.org/wiki/Gzip
Many server implementations, however, incorrectly implement the protocol by using the raw DEFLATE stream format (RFC 1951) instead. The bug is sufficiently pervasive that most modern browsers will accept both RFC 1951 and RFC 1950-formatted data for the “deflate” compressed method.
[5] gzip - Wikipedia, the free encyclopedia (Referenced: ) http://en.wikipedia.org/wiki/Gzip
[20] RFC 6713 - The 'application/zlib' and 'application/gzip' Media Types ( 版) https://tools.ietf.org/html/rfc6713
[21] gzip - Wikipedia ( 版) https://ja.wikipedia.org/wiki/Gzip
[42] 233047 – From some download servers, browser uncompresses gzip file, but keeps gz extension. Download manager is confused over file size and time remaining (nsBinaryDetector) ( ()) https://bugzilla.mozilla.org/show_bug.cgi?id=233047
[130] ncsa-mosaic/CHANGES at master · alandipert/ncsa-mosaic ( ( 版)) https://github.com/alandipert/ncsa-mosaic/blob/master/CHANGES#L128
[156] () http://www.gzip.org/algorithm.txt
[162] Remove Gecko-only quirk (annevk著, ) https://github.com/whatwg/fetch/commit/a8df5b86f4134f58baf6a3cab6cc767eb866784f
[163] Remove Gecko-only quirk by annevk · Pull Request #816 · whatwg/fetch () https://github.com/whatwg/fetch/pull/816