`
yuzhi2217
  • 浏览: 35087 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HTTP协议 (三) 压缩

    博客分类:
  • HTTP
阅读更多

之前写过一个篇 【HTTP协议详解】 ,这次继续介绍HTTP协议中的压缩。

本文会使用Fiddler来查看HTTP request和Response, 如果不熟悉这个工具,可以先参考[Fiddler教程]

HTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件。 能大大减少网络传输的数据量,提高了用户显示网页的速度。当然,同时会增加一点点服务器的开销。 本文从HTTP协议的角度,来理解HTTP压缩这个概念。

 
阅读目录

  1. HTTP内容编码和HTTP压缩的区别
  2. HTTP压缩的过程
  3. 实例:用Fiddler观察HTTP压缩
  4. 内容编码类型
  5. 压缩的好处
  6. gzip的缺点
  7. gzip是如何压缩的
  8. HTTP Response能压缩,HTTP Request也是可以压缩的

 

HTTP内容编码和HTTP压缩的区别

HTTP压缩,在HTTP协议中,其实是内容编码的一种。

在http协议中,可以对内容(也就是body部分)进行编码, 可以采用gzip这样的编码。 从而达到压缩的目的。 也可以使用其他的编码把内容搅乱或加密,以此来防止未授权的第三方看到文档的内容。

所以我们说HTTP压缩,其实就是HTTP内容编码的一种。 所以大家不要把HTTP压缩和HTTP内容编码两个概念混淆了。

 

HTTP压缩的过程

1. 浏览器发送Http request 给Web服务器,  request 中有Accept-Encoding: gzip, deflate。 (告诉服务器, 浏览器支持gzip压缩)

2. Web服务器接到request后, 生成原始的Response, 其中有原始的Content-Type和Content-Length。

3. Web服务器通过Gzip,来对Response进行编码, 编码后header中有Content-Type和Content-Length(压缩后的大小), 并且增加了Content-Encoding:gzip.  然后把Response发送给浏览器。

4. 浏览器接到Response后,根据Content-Encoding:gzip来对Response 进行解码。 获取到原始response后, 然后显示出网页。


如下图:

 

 

实例:Fiddler观察HTTP压缩

眼见为实, 我们看一个实际的例子, 我发现博客园就使用了gzip压缩。

使用Fiddler可以清楚地看到。  

 

在Fiddler中,每次都要手动去decode. 太麻烦。  点击工具栏上的"Decode"按钮,就可以自动decode了。

 

内容编码类型

 HTTP定义了一些标准的内容编码类型,并允许用扩展的形式添加更多的编码。

Content-Encoding header 就用这些标准化的代号来说明编码时使用的算法

Content-Encoding值

gzip  表明实体采用GNU zip编码

compress 表明实体采用Unix的文件压缩程序

deflate  表明实体是用zlib的格式压缩的

identity  表明没有对实体进行编码。当没有Content-Encoding header时, 就默认为这种情况

gzip, compress, 以及deflate编码都是无损压缩算法,用于减少传输报文的大小,不会导致信息损失。 其中gzip通常效率最高, 使用最为广泛。

 

压缩的好处

 http压缩对纯文本可以压缩至原内容的40%, 从而节省了60%的数据传输。

 实例: 博客园首页压缩前是:46124 bytes. 压缩后是:16368bytes.     只有原先的35%。  节省了65%的数据传输,从而大大提高了性能

 有图为证。

 

Gzip的缺点

JPEG这类文件用gzip压缩的不够好。

 

Gzip是如何压缩的

简单来说, Gzip压缩是在一个文本文件中找出类似的字符串, 并临时替换他们,使整个文件变小。这种形式的压缩对Web来说非常适合, 因为HTML和CSS文件通常包含大量的重复的字符串,例如空格,标签。

 

HTTP Response能压缩,HTTP Request也是可以压缩的

浏览器是不会对Request压缩的。 但是 一些HTTP程序在发送Request时,会对其进行编码。 如下图。

 

分享到:
评论

相关推荐

    Xpress 压缩算法_rust_代码_下载

    Xpress 压缩算法具有三种变体,均专为提高速度而设计。最快的变体 Plain LZ77 实现了 LZ77 算法 ( UASDC )。较慢的变体 LZ77+Huffman 在 LZ77 数据上添加了 Huffman 编码通道。第三个变体 LZNT1 实现了 LZ77,没有第...

    Web应用安全:HTTP协议的由来.pptx

    在传输的过程中,还可以加入很多第三方的功能,比如数据压缩、安全防护等等。 1、HTTP协议是什么? HTTP协议由来 而超文本说明传输的数据首先是文本,不是”二进制包“,不是杂乱无章的数据,而是具有意义的可以被...

    数据压缩技术在多层监控系统通信协议中的应用与研究

    在构建主从应答式三级结构煤矿安全监控系统的基础上,分析了系统的通信协议,并重点应用数据压缩技术对通信协议进行改进。采用矩阵模型对改进后的通信协议在减少传输数据量及提高系统实时性方面的优势进行了理论分析。

    MQTT协议,控制器指令发送的压缩文件

    在MQTT协议中,有三个主要角色:发布者(Publisher)、订阅者(Subscriber)和代理(Broker)。发布者将消息发布到特定的主题(Topic),而订阅者可以选择订阅感兴趣的主题,从而接收相关消息。代理负责接收、转发和...

    QUIC协议及HTTP/3的pcap数据包样例

    (1)压缩文件中包含了三个pcap数据包,对应了访问亚马逊、知乎专栏、爱奇艺网站首页的流量,这三个网站加载的资源中已经支持HTTP/3协议,因此在访问的过程中能捕获到由QUIC协议承载的HTTP/3协议的流量。 (2)pcap...

    PPP协议规范

    1. 压缩多协议自寻址数据包的方法。 2. 用于建立、设定和测试数据链路连接的LCP。 3. 一族用于建立、设定不同网络层协议的NCP。 本文档定义了PPP的组织和方法,以及PPP封装,与之一起定义的还有:扩展选项协商...

    TCP-IP详解.卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    2.5 压缩的SLIP 18 2.6 PPP:点对点协议 18 2.7 环回接口 20 2.8 最大传输单元MTU 21 2.9 路径MTU 21 2.10 串行线路吞吐量计算 21 2.11 小结 22 第3章 IP:网际协议 24 3.1 引言 24 3.2 IP首部 24 3.3 IP路由选择 27...

    邮件协议(SMTP&POP3&MIME)详解

    该压缩包包含三个文档,分别是SMTP协议详解,POP3协议详解,MIME协议详解,文档中详细介绍了一个邮件发送和接收的过程分析,协议本身的包含的命令和工作过程,为开发邮件代理的客户端提供技术基础。

    F90X系列视频压缩卡-监控驱动软件

    ◆ 备份文件支持媒体播放器等第三方软件播放,保证录像资料的客观性; ◆ 支持预录像功能; ◆ 支持移动侦测录像,报警录像,计划录像等多种录像方式; ◆ 支持移动侦测灵敏度独立调整; ◆ 支持云台,报警,录像...

    TCPIP协议详解(4-1)

    地址发现协议(BOOTP和DHCP) 71 8.1 “引导”协议(BOOTP) 71 8.2 动态主机配置协议(DHCP) 72 8.2.1 DHCP如何工作 72 8.2.2 理解租用地址 73 8.3 管理地址池 74 8.4 DHCP能处理的其他分配 75 ...

    论文研究-一种保持OpenFlow功能完整性的TCAM流表压缩模型.pdf

    FICO首先根据匹配域不同字段间的关系,将字段之间的冗余分为三种,基于冗余提出三种预压缩算法,分别为域间字段合并、字段映射、域内字段压缩,最终组合为更小位宽的表项被送往TCAM中进行流匹配。通过仿真表明在保持...

    SDP,RTP,SIP协议中文版

    本压缩包含了SDP(RFC4566),RTP(RFC3550),SIP(RFC3261)共三个协议pdf中文版文档。英文版可参考http://www.ietf.org/网站。

    SIP协议场景生成器

    http://www.iptel.org/~sipsc/IPTel提供了一款用Perl写的SIP协议场景生成器,能够以html方式生成SIP呼叫流或SIP场景数据包。下载解压缩后,可以浏览sip_scenario.v1.2.7\generated_files下的那些html文件,也可以...

    第三代无线网络的自适应的健壮的TCPIP头部压缩算法.ppt

    第三代无线网络的自适应的健壮的TCPIP头部压缩算法.ppt

    移动汇聚改进的能源高效PEGASIS路由协议(MIEEPB)【含Matlab源码 3289期】.zip

    CSDN海神之光上传的代码均可运行,亲测可用,...通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议

    Wireshark协议分析之SMTP.zip

    该压缩文件内含四个*.pcapng数据包,可以用来完成SMTP协议分析,其中的三个是模拟SMTP跨域进行邮件传输,最后一个是使用SMTP发送 附件的数据包,可以打开直接进行分析

    SMTP&POP3协议详细&MIME规范

    该压缩包包含三个文档,分别是SMTP协议详解,POP3协议详解,MIME规范详解,文档中详细介绍了一个邮件发送和接收的过程分析,协议本身的包含的命令和工作过程,为开发邮件代理的客户端提供技术基础。如下是部分SMTP...

    计算机网络试卷带答案

    三层交换机 D. 网络适配器 2. 在PPP协议帧的数据段中出现比特串“010111111010”, 则经比特填充后输出的二进制序列为 ( ) A. 010111111010 B. 0101111101010 C. 0101011111010 D. 0101110111010 3. 数据压缩技术、...

    TCP-IP详解卷一:协议

    2.5 压缩的SLIP 18 2.6 PPP:点对点协议 18 2.7 环回接口 20 2.8 最大传输单元MTU 21 2.9 路径MTU 21 2.10 串行线路吞吐量计算 21 2.11 小结 22 第3章 IP:网际协议 24 3.1 引言 24 3.2 IP首部 24 3.3 IP路由选择 27...

    【雷达脉冲压缩】基于matlab雷达脉冲压缩及多普勒处理【含Matlab源码 3018期】.zip

    传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化 **7 信号处理方面** 信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号...

Global site tag (gtag.js) - Google Analytics