Fiddler 教程

HTTP 协议概述

HTTP 称为超文本传输协议(Hyper Text Transfer Protocol)是一个简单的请求-响应协议,它通常运行在 TCP 之上。

在1990年,HTTP 就成为 WWW 的支撑协议。当时由其创始人 WWW 之父蒂姆·伯纳斯·李(Tim Berners-Lee)提出,随后 WWW 联盟(WWW Consortium)成立,组织了 IETF(Internet Engineering Task Force)小组进一步完善和发布 HTTP。

报文格式

HTTP 的报文由从客户机到服务器的请求和从服务器到客户机的响应构成。

请求报文格式

请求报文指由客户机发送到服务器,格式如下:

请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体

例如:

GET / HTTP/1.1
Host: www.hxstrive.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: JSESSIONID=B1C01DAA5DC87D425F62B5FC677E14EB;

响应报文格式

响应报文指由服务器返回给客户机的报文,格式如下:

状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体

例如:

HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Tue, 28 Jun 2022 05:33:32 GMT
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Content-Language: zh-CN
Cache-Control: max-age=86400
Content-Encoding: gzip

... body ...

后面将要介绍的 Fiddler 工具将会对我们发起的 HTTP 请求报文和收到的 HTTP 响应报文进行详细的解析,采用可视化的方式查看这些信息。以及拦截 HTTP 请求包和 HTTP 响应包,修改拦截到的 HTTP 包,进行更深入的测试和分析。

HTTP 历史

0.9 版本

0.9 协议是适用于各种数据信息的简洁快速协议,但是远不能满足日益发展的各种应用的需要。0.9 协议就是一个交换信息的无序协议,仅仅限于文字。由于无法进行内容的协商,在双发的握手和协议中,并有规定双发的内容是什么,也就是图片是无法显示和处理的。

1.0 版本

到了 1.0 协议阶段,也就是在1982年,Tim Berners-Lee 提出了 HTTP/1.0。在此后的不断丰富和发展中,HTTP/1.0 成为最重要的面向事务的应用层协议。该协议对每一次请求/响应建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。

1.1 版本

在1.0协议中,双方规定了连接方式和连接类型,这已经极大扩展了 HTTP 的领域,但对于互联网最重要的速度和效率,并没有太多的考虑。毕竟,作为协议的制定者,当时也没有想到 HTTP 会有那么快的普及速度。

关于 HTTP1.1 协议的具体内容可以参考 RFC2616

2.0 版本

HTTP2.0 的前身是 HTTP1.0 和 HTTP1.1。虽然之前仅仅只有两个版本,但这两个版本所包含的协议规范之庞大,足以让任何一个有经验的工程师为之头疼。网络协议新版本并不会马上取代旧版本。实际上,1.0 和 1.1 在之后很长的一段时间内一直并存,这是由于网络基础设施更新缓慢所决定的。

关于 HTTP2.0 协议的具体内容可以参考 RFC7540

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号