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


相关文章
|
14小时前
|
网络协议 数据格式 Python
Python进阶---HTTP协议和Web服务器
Python进阶---HTTP协议和Web服务器
15 4
http协议 报文 给你讲明白咯,web开发基础
http协议 报文 给你讲明白咯,web开发基础
|
5天前
|
缓存 安全 前端开发
探索HTTP协议:网络通信的基石
探索HTTP协议:网络通信的基石
|
5天前
|
缓存 自然语言处理 前端开发
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
|
6天前
|
存储 缓存 JSON
【JavaEE】HTTP应用层协议
【JavaEE】HTTP应用层协议
14 1
|
6天前
|
移动开发 网络协议 网络安全
【网络安全 | 网络协议】一文讲清HTTP协议
【网络安全 | 网络协议】一文讲清HTTP协议
24 0
|
6天前
|
安全 网络协议 网络安全
干货|代理IP协议有何区别?深入了解 SOCKS5、HTTP 代理
HTTP和HTTPS是互联网主要的两大协议,HTTP是基础的简单请求-响应协议,常用于TCP上,但数据传输不安全。HTTPS是HTTP的安全版本,添加了SSL层进行加密和身份验证,提供更高的安全性,用于保护数据和验证网站真实性。HTTPS需CA证书,可能产生费用,并使用443端口而非HTTP的80端口。
|
6天前
|
网络协议 安全 数据安全/隐私保护
干货|代理IP协议有何区别?深入了解 SOCKS5、HTTP 代理
SOCKS5和HTTP是两种代理协议,前者是通用型,支持多种网络流量,提供身份验证、IPv6支持及UDP兼容性,更适合实时数据传输。HTTP代理专用于HTTP协议,适用于Web资源请求。SOCKS5在传输方式、功能、兼容性和安全性上更胜一筹,而HTTP代理则在处理HTTP请求时更专业。选择代理协议应根据需求和应用场景,考虑服务的稳定性和安全性。付费代理如kookeey全球代理,支持双协议,速度快且可扩展性强,是可靠的选择。
|
6天前
|
数据采集 网络协议 安全
2024年,你还在等什么?一起探索HTTP协议的奥秘!
2024年,你还在等什么?一起探索HTTP协议的奥秘!
|
6天前
|
网络协议 Java 应用服务中间件
HTTP协议与Tomcat在IJ中配置
本文是对自己学习JavaWeb学习的笔记的总结,添加了一些自己的东西,然后进行一次复盘,并加深一下学习的理解和印象.其中内容主要包括对http协议的详细介绍,java常见服务器的初步介绍,以及IJ旧版和新版的tomcat服务器的配置图解教程