<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> <dfn>zlib</dfn> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DEFLATE</anchor> を用いる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮形式</anchor>です。</p><section><h1>仕様書</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">zlib</anchor> は <dfn>RFC 1950</dfn> により定義されています。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <strong><cite xml:lang="en">RFC 1950 - ZLIB Compressed Data Format Specification version 3.3</cite> (<time>2017-09-17 17:15:13 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc1950">https://tools.ietf.org/html/rfc1950</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</cite> (<time>2014-06-07 01:59:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7230#section-4.2.2">https://tools.ietf.org/html/rfc7230#section-4.2.2</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite xml:lang="en">RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</cite> (<time>2014-06-07 01:59:35 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7230#section-8.5">https://tools.ietf.org/html/rfc7230#section-8.5</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite xml:lang="en">RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</cite> (<time>2014-06-07 01:55:45 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7231#page-12">https://tools.ietf.org/html/rfc7231#page-12</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <cite xml:lang="en">RFC 3229 - Delta encoding in HTTP</cite> (<time>2014-10-26 21:15:25 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc3229#section-10.1">http://tools.ietf.org/html/rfc3229#section-10.1</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <cite xml:lang="en">RFC 3229 - Delta encoding in HTTP</cite> (<time>2014-10-26 21:15:25 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc3229#section-10.9">http://tools.ietf.org/html/rfc3229#section-10.9</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[70]</anchor-end> <cite xml:lang="en">RFC 6713 - The 'application/zlib' and 'application/gzip' Media Types</cite> (<time>2017-09-24 17:26:31 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc6713">https://tools.ietf.org/html/rfc6713</anchor-external></li></ul></refs></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <dfn>zlib stream</dfn> は、次のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>です。</p><figure class="list members"><dl><dt><abbr><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CMF</anchor><title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">Compression Method and flags</title></abbr> 1バイト</dt><dd>
第0ビットから第3ビットが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CM</anchor>、
第4ビットから第7ビットが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CINFO</anchor> です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></dd><dt><abbr><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FLG</anchor><title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">FLaGs</title></abbr> 1バイト</dt><dd>
第0ビットから第4ビットが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FCHECK</anchor>、
第5ビットが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FDICT</anchor>、
第6ビットと第7ビットが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FLEVEL</anchor> です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></dd><dt><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DICTID</anchor></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">preset dictionary</anchor> の識別子を表します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FLG</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FDICT</anchor> が設定されている場合のみ存在します。</dd><dt>圧縮データ</dt><dd>
圧縮された実際のデータです。</dd><dt><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ADLER32</anchor></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検査和</anchor>です。</dd></dl></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> 入力データの長さが不十分なときにどう処理するべきかは不明です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 6713</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">zlib</anchor> を識別する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">魔法数</anchor>として、</p><ul><li>最初のバイトは通常 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x78</n> だが、 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x08</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x18</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x28</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x38</n>,
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x48</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x58</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x68</n> ともなり得る</li><li>最初の2バイトを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大エンディアン</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">16ビット符号無し整数</anchor>と解釈すると
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">31</n> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">倍数</anchor>である</li></ul><p>... を挙げています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;70</anchor-internal></src>。</p><section><h1>CM</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <dfn>CM</dfn> (Compression method) は、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮方式<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">compression method</rt></rubyb>を表します。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8</n> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DEFLATE</anchor> (<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">窓サイズ<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">window size</rt></rubyb>
32KB <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以下</anchor>) を表します。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">15</n> は、予約されています。
将来の版で、圧縮データ前に追加の欄が存在することを示すために使うかもしれません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8</n> 以外の場合、展開器は、エラーとしなければなりません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p></section><section><h1>FCHECK</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <dfn>FCHECK</dfn> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CMF</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FLG</anchor> の検査ビットであり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CMF</anchor> × <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">256</n> × <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FLG</anchor> が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">31</n> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">倍数</anchor>となるような値に設定しなければなりません。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">展開器</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FLG</anchor> を検査しなければならない <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src> とされていますが、
不正なデータをどう処理するべきかは不明です。</p></section><section><h1>FDICT</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <dfn>FDICT</dfn> は、
設定されている場合、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DICTID</anchor> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FLG</anchor> の直後に現れることを表します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">zlib</anchor> を用いる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ形式</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">preset dictionary</anchor> を用いない場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮器</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FDICT</anchor> を設定してはなりません。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">展開器</anchor>は拒絶しなければなりません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p></section><section><h1>FLEVEL</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <dfn>FLEVEL</dfn> (圧縮レベル) は、圧縮方式依存です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CM</anchor> が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8</n> の場合、次の通りの意味です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><ul><li><n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮器</anchor>は最速アルゴリズムを使った</li><li><n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮器</anchor>は速いアルゴリズムを使った</li><li><n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮器</anchor>は既定のアルゴリズムを使った</li><li><n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">3</n> - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮器</anchor>は最大圧縮の最遅のアルゴリズムを使った</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> この情報は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">展開</anchor>には使いません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> この情報は再圧縮する意味があるかどうかの判断に使えます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">gzip</anchor> には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XFL</anchor> があり似た意味で使われていますが、値は異なります。</comment-p></section><section><h1>DICT (DICTID)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FDICT</anchor> ビットが設定されている場合、 <dfn>DICTID</dfn> 
(辞書識別子 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src>) を記述します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> 辞書 (<dfn>preset dictionary</dfn>) とは、
最初に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮器</anchor>に与える<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>で、圧縮データ自体ではないものです。 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DICTID</anchor> は、この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Adler-32</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検査和</anchor>です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> 他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ形式</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">zlib</anchor> を用いる時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮器</anchor>はその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ形式</anchor>が定めた <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">preset dictionary</anchor> を用いて構いません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">展開器</anchor>はそのすべての <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">preset dictionary</anchor> に対応しなければなりません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">展開器</anchor>は、この <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DICTID</anchor> を使ってどの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">preset dictionary</anchor>
が使われているかを判断できます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">展開器</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FDICT</anchor> が設定されていて <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DICTID</anchor> が未知の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">preset dictionary</anchor>
の場合、エラーとしなければなりません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p></section><section><h1>圧縮データ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮データ<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">compressed data</rt></rubyb> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮</anchor>された実際のデータです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CM</anchor> が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8</n> の時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DEFLATE</anchor> の圧縮データです。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> 他の形式は未定義です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p></section><section><h1>ADLER32</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <dfn>ADLER32</dfn> (Adler-32 <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検査和<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">checksum</rt></rubyb>) は、
未圧縮データ (辞書データを含みません。)
について <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Adler-32</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検査和</anchor>を計算したものです。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">展開器</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ADLER32</anchor> を検査しなければならない <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src> とされていますが、
不適切な場合どう処理するべきかは不明です。</p></section><section><h1>余分データ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> それ以後にデータがあったとしても、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">zlib stream</anchor> の一部ではありません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p></section></section><section><h1>符号化 (圧縮)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮器</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1950</anchor> のすべての要件を満たすデータを生成しなければなりません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">preset dictionary</anchor> に対応する義務はありません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p></section><section><h1>復号 (展開)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">展開器</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1950</anchor> に適合する任意のデータを受理し展開できなければなりません。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p></section><section><h1>MIME 型</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>として <dfn><code class="MIME" xml:lang="en">application/zlib</code></dfn> が
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 6713</anchor> で定義されています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;70</anchor-internal></src>。</p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> データ形式としての <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZLIB</anchor> は次の場面で用いられています。</p><figure class="short list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">gzip</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">deflate</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PNG</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WOFF</anchor></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">gzip</anchor> として使われるものは、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">gzip</anchor> を参照。</p></section><section><h1>内容符号化・転送符号化 <code>deflate</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容符号化</anchor>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">転送符号化</anchor> <dfn><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">deflate</anchor></code></dfn> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LZ77</anchor> 圧縮法と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハフマン符号化</anchor>の組み合わせを用いた <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1951</anchor>
「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">deflate</anchor>」圧縮データストリームを含んだ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1950</anchor>
「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">zlib</anchor>」データ形式を表します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 実装によっては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">zlib</anchor> を用いない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DEFLATE</anchor> 圧縮データを
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">deflate</anchor></code> として送りますが、これは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">不適合</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src> とされています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> それをどう扱うべきかは規定されていません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">zlib</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドキュメント</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft</anchor> などいくつかの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブラウザー</anchor>が誤って
<code>deflate</code> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DEFLATE</anchor> の意味で使っているため、
<code>gzip</code> を使う方がおそらくより信頼性が高いだろうと指摘しています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;60</anchor-internal></src>。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> <cite>Frequently Asked Questions about zlib</cite> (<time>2005-02-21 07:10:26 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.gzip.org/zlib/zlib_faq.html#faq38">http://www.gzip.org/zlib/zlib_faq.html#faq38</anchor-external></li></ul></refs></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 3.1 版が最初の公開版です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 3.2 版で用語の変更と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Adler-32</anchor> コード例の改訂がありました。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 3.3 版で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">preset dictionary</anchor> が導入され、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> 化されました。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src></p><section><h1>実現値操作 <code class="HTTP" xml:lang="en">deflate</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実現値操作</anchor> <dfn><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">deflate</anchor></code></dfn> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容符号化</anchor> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">deflate</anchor></code> と同じです <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">gdiff</anchor></code> や <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">diffe</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">圧縮</anchor>によって大きくサイズを削減できますから、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">deflate</anchor></code> も実装することが<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">強く推奨<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">strongly recommended</rt></rubyb>されています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[89]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実現値操作</anchor> <code>deflate</code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IANA登録簿</anchor>には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor> を出典として登録されています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;88</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 723x</anchor> 出版後も出典は更新されていません。 <time>2014-11-19T16:22:24.500Z</time></p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> <cite>Instance Manipulation Values</cite> (<time>2014-01-31 02:45:13 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.iana.org/assignments/inst-man-values/inst-man-values.xhtml">http://www.iana.org/assignments/inst-man-values/inst-man-values.xhtml</anchor-external></li></ul></refs></section></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ランダムアクセス</anchor>は設計上の想定外とされています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <cite>zlib Home Site</cite>
( (<time>2014-03-27 06:36:36 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.zlib.net/">http://www.zlib.net/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <cite xml:lang="ja">zlib - Wikipedia</cite>
(<time>2016-01-10 16:10:12 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://ja.wikipedia.org/wiki/Zlib">https://ja.wikipedia.org/wiki/Zlib</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>java - Handling HTTP ContentEncoding &quot;deflate&quot; - Stack Overflow</cite>
(<time>2011-01-23 19:18:41 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://stackoverflow.com/questions/3932117/handling-http-contentencoding-deflate">http://stackoverflow.com/questions/3932117/handling-http-contentencoding-deflate</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <cite xml:lang="en-US">IE7 – Deflate or Not? – Subbu Allamaraju</cite>
(<time>2015-08-05 00:10:34 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.subbu.org/blog/2008/03/ie7-deflate-or-not">https://www.subbu.org/blog/2008/03/ie7-deflate-or-not</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite xml:lang="ja">Deflate - Wikipedia</cite>
(<time>2016-01-26 19:26:26 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://ja.wikipedia.org/wiki/Deflate">https://ja.wikipedia.org/wiki/Deflate</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <cite xml:lang="en">RFC 6713 - The 'application/zlib' and 'application/gzip' Media Types</cite>
(<time>2015-09-27 13:20:11 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc6713">https://tools.ietf.org/html/rfc6713</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <cite>Frequently Asked Questions about zlib</cite>
(<time>2005-02-21 07:10:26 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.gzip.org/zlib/zlib_faq.html#faq38">http://www.gzip.org/zlib/zlib_faq.html#faq38</anchor-external></figcaption><blockquote><p>&quot;gzip&quot; is the gzip format, and &quot;deflate&quot; is the zlib format. They should probably have called the second one &quot;zlib&quot; instead to avoid confusion with the raw deflate compressed data format. While the HTTP 1.1 RFC 2616 correctly points to the zlib specification in RFC 1950 for the &quot;deflate&quot; transfer encoding, there have been reports of servers and browsers that incorrectly produce or expect raw deflate data per the deflate specficiation in RFC 1951, most notably Microsoft. So even though the &quot;deflate&quot; transfer encoding using the zlib format would be the more efficient approach (and in fact exactly what the zlib format was designed for), using the &quot;gzip&quot; transfer encoding is probably more reliable due to an unfortunate choice of name on the part of the HTTP 1.1 authors.</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> (<time>2017-06-20 10:35:40 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://cpansearch.perl.org/src/OALDERS/HTTP-Message-6.13/lib/HTTP/Message.pm">http://cpansearch.perl.org/src/OALDERS/HTTP-Message-6.13/lib/HTTP/Message.pm</anchor-external></figcaption><blockquote><p>require IO::Uncompress::Inflate;</p><p>my $output;</p><p>my $status = IO::Uncompress::Inflate::inflate($content_ref, \$output, Transparent =&gt; 0);</p><p>my $error = $IO::Uncompress::Inflate::InflateError;</p><p>unless ($status) {</p><p># &quot;Content-Encoding: deflate&quot; is supposed to mean the</p><p># &quot;zlib&quot; format of RFC 1950, but Microsoft got that</p><p># wrong, so some servers sends the raw compressed</p><p># &quot;deflate&quot; data.  This tries to inflate this format.</p><p>$output = undef;</p><p>require IO::Uncompress::RawInflate;</p><p>unless (IO::Uncompress::RawInflate::rawinflate($content_ref, \$output)) {</p><p>$self-&gt;push_header(&quot;Client-Warning&quot; =&gt;</p><p>&quot;Could not raw inflate content: $IO::Uncompress::RawInflate::RawInflateError&quot;);</p><p>$output = undef;</p><p>}</p><p>}</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> <cite xml:lang="en">mod_deflate - Apache HTTP Server Version 2.4</cite>
(<time>2017-03-29 06:54:20 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://httpd.apache.org/docs/current/en/mod/mod_deflate.html">http://httpd.apache.org/docs/current/en/mod/mod_deflate.html</anchor-external></figcaption><blockquote><p>The deflate encoding is not supported, please check the zlib's documentation for a complete explanation.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> <cite xml:lang="en">Content-Encoding: deflate is actually zlib · Issue #46 · valyala/fasthttp</cite>
(<time>2017-09-24 23:55:39 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/valyala/fasthttp/issues/46">https://github.com/valyala/fasthttp/issues/46</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> <cite xml:lang="en">Re: Content-Encoding: deflate - is this zlib file format?</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Daniel Barron</anchor>著, <time>2001-09-09 22:17:24 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://lists.w3.org/Archives/Public/www-talk/2001SepOct/0015.html">https://lists.w3.org/Archives/Public/www-talk/2001SepOct/0015.html</anchor-external></p></section></body></html>