HTTP协议格式及 fiddler 的使用

简介: HTTP协议格式及 fiddler 的使用

简述 HTTP 协议


HTTP 协议是个使用非常广泛的应用层协议, 应用层协议通常是需要 “自定义协议” 的, 自定义协议可以基于现有协议进行定制, HTTP 之所以应用广泛就是因为其可定制性非常强.


日常生活中遇到 HTTP 的场景 :


  1. 使用浏览器打开一个网页
  2. 手机app加载数据.
  3. 微信支付宝小程序.
  4. 游戏中的界面.


HTTP 是 “一问一答” 形式的协议, 也就是客户端发送一个请求, 服务器响应一个回答.

HTTP 是一个文本格式的协议, 要想看到它的协议格式, 还得借助一些外部工具来展现出来, 我们可以通过抓包工具来获取到 HTTP 协议.


fiddler(抓包工具) 的使用


抓包工具就相当于一个代理, 每当客户端和服务器数据进行交互时, 都要先经过它, 我们就可以在抓包工具上查找到需要的数据包.

这里我们使用 fiddler 来抓包(fiddler 专注于 http, 使用简单), 原理图如下 :


de662084c2be4adba009f81b96c4f0be.png


我们下载好 fiddler 后, 首先要勾选这几个框 :


b2b9571f2c5e416999cc283f7517c2e5.png


在设置过程中, 会弹出一个对话框, 点击 “是”, 就可以进行抓包了.


fiddler 作为一个代理, 可能会与电脑上其他代理起冲突, 比如一些浏览器插件, 加速软件啥的.

进入fiddler 可以看到 :

abcbbb0d7f2541adb953484dcef449b1.png


左侧显示已经抓到的包的列表, 列表中的内容是时刻更新的, 因为电脑时不时的就在发送网络请求.


那我们如何查找要抓的包呢?

就以访问百度为例 : https://www.baidu.com/

7e250f31059f4044a03aa2d25965eabe.png


可以看到仅仅一个请求, 就出现了这么多数据包, 具体如何查找呢?


  1. 先看颜色, 黑色响应的是普通数据; 蓝色响应的是 http. 我们关注蓝色.
  2. 再看域名 : https://www.baidu.com
  3. 再看响应长度的数据长度, 一般找数据长度比较长的.


再看上图, 发现巧了第一个就是了, 双击它, 就会显示详情, 右上角是请求, 右下角是响应.

首先我们勾线 Raw, 显示出最原始的 http 请求的数据包, 看不清也可以点击右下角的按钮放大来看.

5d8de41583304a27917760b7bfa5e2f1.png


可以看到, 这就是一个完整的 http 请求, 它是文本数据,

471a9f8f90914550b3b15cc30826a6fb.png


其实所谓的 http 请求, 就是通过代码构造出一个 http 格式的字符串, 再写入 tcp 的 socket 中就行了.


协议格式


一个 HTTP 请求数据, 包含了四个部分.


1.首行 :


c4778827c8c34f568e57db48c6072423.png

2.报头(header) :


d7e0cb107eff49268e6a5c798cb03dab.png

3. 空行: 这里截图体现不出来, 可以自己观察一下.

efc7dffa83364d698ff594d8ed97d88e.png


4. 正文(body) : 空行后面的内容, 有时候可以没有.(这里没有)


来看响应 :

注意 : 响应可能是压缩过的(压缩过的显示是二进制), 压缩可以减少网络传输的数据量, 节省带宽. 把数据压缩本质上是用 cpu 资源换带宽资源.

所以得先解压, 再点击 Raw.


fd9653c58d804350b50602d1d26a2fa0.png

这样就得到了 HTTP 响应 :

ef7c138b210546f59708be58e70011cc.png


同样的 HTTP 响应也分四个部分 :


1.首行 :


5673b06249c5486aaf9b9376a0c9fe07.png


2.响应报头(header) :


3d82cbaadc2140c7b22e8915445cc126.png

3.空行 :

86acb0389ebc458da2feb5f24fe74c05.png


4.正文(此处正文是 html 代码)

6ed5d26c8b6f4f2f83e4d0e3d1778cc0.png



浏览器拿到 HTTP 响应的 html 了, 就可以显示了.


其实拿到的不仅仅是 html, 还有 css, js 等浏览器能显示出来的内容, 这些都是来自于服务器, 都是服务器返回的响应带给浏览器的.


总结 :


HTTP 请求及响应格式如下 :

91eb1a7e8ee241b483bc1061d38ad81a.png


相关文章
|
2月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
129 7
|
13天前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
64 15
|
9天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
11天前
|
缓存 网络协议 算法
从零开始掌握HTTP协议
本文介绍HTTP协议的演变,从HTTP1.0到HTTP2.0。HTTP1.0为无状态连接,每次请求独立;HTTP1.1引入持久连接、管道化请求和更多状态码;HTTP2.0采用二进制分帧、多路复用、头部压缩及服务器主动推送,大幅提升性能与用户体验。了解这些区别有助于开发者优化应用和服务。
|
11天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
59 1
|
2月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
2月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
73 11
|
2月前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
48 8
|
2月前
|
安全 应用服务中间件 Linux
判断一个网站是否使用HTTPS协议
判断一个网站是否使用HTTPS协议
82 4
|
2月前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
104 13