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天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
23 13
|
2天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
4天前
|
网络协议 前端开发 API
HTTP 和 TCP 协议的应用场景有哪些不同
【10月更文挑战第25天】HTTP(超文本传输协议)和 TCP(传输控制协议)处于网络协议栈的不同层次,各自具有独特的功能和特点,因此它们的应用场景也存在明显的差异。
|
4天前
|
安全 前端开发 JavaScript
利用HTTP协议进行文件上传和下载的常见方法
【10月更文挑战第25天】可以利用HTTP协议方便地实现文件的上传和下载功能,满足不同应用场景下的需求。在实际应用中,还可以根据具体的业务需求和安全要求,对文件上传和下载的过程进行进一步的优化和安全处理。
|
4天前
|
网络协议 API 数据格式
HTTP 和 TCP 协议的主要区别
【10月更文挑战第25天】HTTP 和 TCP 在网络通信中扮演着不同的角色,各自具有独特的功能和特点,它们相互配合,共同为实现网络应用的各种需求提供了基础支持。
|
29天前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
134 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
12天前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
38 5
|
28天前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
|
30天前
|
存储 网络安全 对象存储
缺乏中间证书导致通过HTTPS协议访问OSS异常
【10月更文挑战第4天】缺乏中间证书导致通过HTTPS协议访问OSS异常
59 4
|
29天前
|
安全 应用服务中间件 Shell
网站在后台启用了https协议之后重新登录就不进去后台的解决方法
网站在后台启用了https协议之后重新登录就不进去后台的解决方法