广东企业网站建设哪家好,做本地网站,北京工商注册app,公司网站怎么做产品图片GZIP最早由Jean-loup Gailly和Mark Adler创建#xff0c;用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件#xff0c;它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式#xff0c;或者说一种文件格式。HTTP协议上的GZIP编码是一…GZIP最早由Jean-loup Gailly和Mark Adler创建用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式或者说一种文件格式。HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常 使用GZIP压缩技术来让用户感受更快的速度。
GZIP本身只是一种文件格式其内部通常采用DEFLATE数据格式而DEFLATE采用LZ77压缩算法来压缩数据。
GZIP文件由1到多个“块”组成实际上通常只有1块。每个块包含头、数据和尾三部分。块的概貌如下
------------------------------////------------------------
|ID1|ID2| CM|FLG| MTIME |XFL| OS| 额外的头字段 | 压缩的数据 | CRC32 | ISIZE |
------------------------------////------------------------1. 头部分 ID1与ID2各1字节。固定值ID1 31 (0x1F)ID2 139(0x8B)指示GZIP格式。CM1字节。压缩方法。目前只有一种CM 8指示DEFLATE方法。FLG1字节。标志。 bit 0 FTEXT - 指示文本数据 bit 1 FHCRC - 指示存在CRC16头校验字段 bit 2 FEXTRA - 指示存在可选项字段 bit 3 FNAME - 指示存在原文件名字段 bit 4 FCOMMENT - 指示存在注释字段 bit 5-7 保留 MTIME4字节。更改时间。UINX格式。XFL1字节。附加的标志。当CM 8时XFL 2 - 最大压缩但最慢的算法XFL 4 - 最快但最小压缩的算法OS1字节。操作系统确切地说应该是文件系统。有下列定义 0 - FAT文件系统 (MS-DOS, OS/2, NT/Win32) 1 - Amiga 2 - VMS/OpenVMS 3 - Unix 4 - VM/CMS 5 - Atari TOS 6 - HPFS文件系统 (OS/2, NT) 7 - Macintosh 8 - Z-System 9 - CP/M 10 - TOPS-20 11 - NTFS文件系统 (NT) 12 - QDOS 13 - Acorn RISCOS 255 - 未知 额外的头字段 (若 FLG.FEXTRA 1) ------------//
|SI1|SI2| XLEN | 长度为XLEN字节的可选项 |
------------//(若 FLG.FNAME 1) //
| 原文件名(以NULL结尾) |
//(若 FLG.FCOMMENT 1) //
| 注释文字(只能使用iso-8859-1字符以NULL结尾) |
//(若 FLG.FHCRC 1) ------
| CRC16 |
------存在额外的可选项时SI1与SI2指示可选项IDXLEN指示可选项字节数。如 SI1 0x41 (A)SI2 0x70 (P)表示可选项是Apollo文件格式的额外数据。 2. 数据部分 DEFLATE数据格式包含一系列子数据块。子块概貌如下 ..................//
|BFINAL| BTYPE | 数据 |
..................//
BFINAL1比特。0 - 还有后续子块1 - 该子块是最后一块。BTYPE2比特。00 - 不压缩01 - 静态Huffman编码压缩10 - 动态Huffman编码压缩11 - 保留。 各种情形的处理过程请参考后面列出的RFC文档。 3. 尾部分 CRC324字节。原始(未压缩)数据的32位校验和。ISIZE4字节。原始(未压缩)数据的长度的低32位。 GZIP中字节排列顺序是LSB方式即Little-Endian与ZLIB中的相反。 下面是GZIP文件 gzip-1.3.3.tar.gz 格式的简要分析示意图 GZIP与ZLIB有着很深的渊源。有关ZLIB, GZIP以及DEFLATE等更加详细的说明可参考RFC 1950-1952。从这些文档里也能找到其它的参考文献。 GZIP已成为GNU Project的一个组成部分其官方站点为www.gzip.org。在这里可以下载到GZIP源码。目前最新版本是1.2.4以及beta版的1.3.3。