【HTTP协议详解-Fiddler抓包工具安装详解-HTTP报文格式-URL详解】

news2024/9/30 21:43:00

在这里插入图片描述

🌈个人主页:努力学编程’
个人推荐
c语言从初阶到进阶
JavaEE详解
数据结构
学好数据结构,刷题刻不容缓:点击一起刷题
🌙心灵鸡汤总有人要赢,为什么不能是我呢
在这里插入图片描述

🔭🔭🔭HTTP协议

针对我们之前所说的 TCP/UDP-IP协议,总的来说都和程序员的距离比较远,而 HTTP 是针对应用层的协议,对于我们日常开发的场景非常重要,是需要我们重点掌握的. HTTP 又称为 “超文本传输协议” 我们在浏览器每打开一个网页,都是浏览器给服务器发送请求,然后服务器发送一个响应给浏览器其中就包含我们要进行访问的数据.

在这里插入图片描述
HTTP 往往是基于传输层TCP协议实现的,现在 HTTP 已经有了3.0,这个是基于UDP实现的(为了更高的传输效率),只不过是在应用层重新包装了一套可靠传输机制.

HTTP协议传输数据的特点:

HTTP 是典型的一问一答的模式
我们一共有4种典型的网络通信模式:
一问一答 ->HTTP协议
一问多答 ->下载容量较大的文件
多问一答 ->上传大文件的时候.

如果我们要深入了解HTTP协议的工作流程和数据报文格式,就得使用专门的抓包工具,去研究HTTP数据包~

📡📡📡代理程序

这里我们所说的抓包工具,其本质就是一个代理程序(跑腿的~).
举个例子:
如果我现在特别想吃汉堡~但是我又不想跑路,怎么办呢,我会给俺妹妹20元,告诉她给我买个汉堡包,于是她就去买汉堡.

在这里插入图片描述
此时如果俺妈问俺妹妹,今天你哥有没有买汉堡吃?
俺妹就会说:买了买了~

这里的代理,一共可以分为两种:
正向代理: 帮客户端跑腿的.
反向代理: 帮服务器跑腿的.
这里我们就看代理程序距离谁近,来判断是哪个代理.

此时我妹妹就相当于代理程序,本质上就是帮助通信跑腿的,她对于整个通信的过程和信息,一定是了解的.

🔭🔭🔭fidder 抓包工具的安装

其实对于HTTP的抓包工具,是有很多的,我们通过这些工具可以很详细的了解到HTTP数据包的完整的数据格式.

1. chrome内置的抓包工具

按浏览器的 F12 开发者模式 可以查看转包情况:
在这里插入图片描述
这些都是我访问某个网站的时候,bing和服务器交互的请求和响应的数据.
但是由于这种查看方式非常不方便,所以并不推荐用这个来查看HTTP数据包的研究.

2. wireshark
这是一个老牌的抓包工具,可以用来抓HTTP,UDP,TCP,IP,以太网数据帧等数据包,专业性非常强,使用的门槛较高,所以也不推荐使用这个.

在这里插入图片描述

3. fidder

一个老牌的抓包工具,专门用来抓HTTP数据包的软件,使用起来也非常方便,推荐使用.这里最好使用 bing 来搜索下载,国内的搜索引擎你们懂得…
Fidder 官网地址:
https://www.telerik.com/fiddler

在这里插入图片描述
注意:
可能你在后面使Fiddler的时候,可能抓到的吧=包非常少,可能是因选项:
在这里插入图片描述
在这里插入图片描述
注意:勾选的时候,可能会让你签一个安全证书,我们一定要同意,否则就得重新安装Fiddler了~.

📡📡📡Fiddler 抓包过程

这里我们以 bing 为例,我们先打开 Fiddler 其中可能会有很多的http数据包,我们点击其中一个,然后 Ctrl+A 全选点击 Delete.删除所有的数据包.然后我们在浏览器中点击一个新的窗口,就会有打开bing网页时,对 bing 服务器发送的请求,注意这里的请求数据不止有一个,这些众多的数据都是发送的请求,我们研究的是带有 蓝色的,body 这列数据比较大的请求.

在这里插入图片描述
如何研究这个请求呢,我们打开右边的选项卡,右上方是请求的数据的详细信息,右下方是响应的详细信息.

在这里插入图片描述

注意:这里选中 Raw 是因为我们要将数据按行排列,否则可能会导致长的数据自动换行,最后导致没办法辨别数据到底啥时候结束.

在这里插入图片描述

注意有可能在响应数据的时候,出现这种情况,其实点击Raw就好,那为什么出现这个情况呢,我们知道HTTP是文本协议,但是当数据量非常大的时候,如果直接进行传输,会消耗珍贵的网络带宽资源,于是在传输之前就会对数据进行压缩,这样其实使用CPU资源替换了网络带宽资源的消耗.对于浏览器来说,可以自动对数据解压缩,但是使用 Fiddler 抓包就需要手动解压缩.点击这个就行.

在这里插入图片描述
解压缩后的数据:
在这里插入图片描述

🔭🔭🔭HTTP协议请求构成

HTTP协议是一个文本协议,本质上一个HTTP数据包就是按照 HTTP 协议的格式,构成的文本,最后写入到 TCP socket 中.

一个 HTTP 协议,往往由四个部分组成:(这里说的是请求报文的格式)

  1. 首行
  2. 请求头 header
  3. 空行
  4. 正文 body

📡📡📡首行

对于首行,我们可以细分为三个部分:
请求的方法:表示某种行为,例如: GET 表示要从服务器中获取怎样的资源
请求的 url:表示要请求的对方的网址
版本号:HTTP 协议是哪个版本的.
在这里插入图片描述

📡📡📡请求头(header)

对于请求头,header中包含若干行数据
本质上其实就是 “键值对” 结构
每一行是一个键值对,键和值之间使用:分割
最后我们使用 空行 来作为请求头结束的标记

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e363f7d4ec1343c5855b118f08f1e44c.png
注意这里的 ?0 是一个整体,表示的是 value(这个其实就是encode可以使用在线网站查找).

📡📡📡空行

最后一个 header 的后面,有一个空行,类似于 null 作为结尾.

📡📡📡正文(body)

正文并非每个请求的数据都有,它的出现一般是以 json 结构的数据出现的.我们刚才访问的 bing 网页的时候,就没有正文,它的意义就是为了给服务器传递一些必要的数据.常常对于登录页面的时候,会将账号和密码的信息,传输给服务器,这种情况一般就有正文.这里使用 gitee 为例.

这里的密码,并非是正确的密码,这里是加密过后的密码,而且这个加密后的密码也是动态变化的过几分钟就会发生改变,所以大家不用试啦~

📡📡📡HTTP协议响应构成

响应的数据包也可以大致分为4个部分

📡📡📡首行

版本号,状态码,状态码描述
在这里插入图片描述
这里的 ok就代表请求的数据包成功发送.

📡📡📡响应的报头(header)

在这里插入图片描述
首行下面,空格之前都是header.

📡📡📡空行

这里的空行和请求的空行的作用一样的,都是作为正文结束的一个标记.

📡📡📡正文

这里正文就是根据请求的信息,发送的响应的数据,这里的数据格式可能有很多,图片,文本…,这里也可以有空格(没有特殊的含义,正文本来就可以啥都可以有).

🔭🔭🔭认识URL

URL其实就是我们平时所说网址,它的作用是用来标识互联网中一个资源的唯一地址.通过URL我们就可以找到对应的数据.对于URL的格式规则做了特定的规定,如下:

在这里插入图片描述

比如我们随便打开一个URL:
https://cn.bing.com/search?q=Java%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91&PC=U316&FORM=CHROMNe

这里的 https 是协议方案名,登录信息省略了,现在基本用不上了,服务器地址:cn.bing.com这里给的是一个域名,我们可以通过DNS转换为地址使用ping命令即可.
在这里插入图片描述
端口号省略了,系统会自动分配,如果是HTTP协议分配的是80,如果是HTTPS分配的是443,带层次的文件路径 search ,查询字符串 q=Java%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91&PC=U316&FORM=CHROMNe 这里的&是分割键值对的,=左边是键右边是值.最后的片段标识符这里省略了.(注意这里的查询字符串是使用了 urencode 我们可以使用解码网站进行查看).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓13删除下拉栏中的关机按钮版本2 android13删除下拉栏关机按钮

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 顶部导航栏下拉可以看到,底部这里有个设置按钮,点击可以进入设备的设置页面,这里我们将更改为删除,不同用户通过这个地方进入设置。我们之前写过一个文章也是一样的删除…

基于RealSense D435相机实现手部姿态重定向

基于Intel RealSense D435 相机和 MediaPipe的手部姿态检测,进一步简单实现手部姿态与机器人末端的重定向。 假设已经按照【基于 RealSenseD435i相机实现手部姿态检测】配置好所需的库和环境,并且有一个可以控制的机器人接口。 一、手部姿态重定向介绍 …

18924 二叉树的宽度

### 思路 1. 使用广度优先搜索(BFS)遍历二叉树,记录每一层的节点数。 2. 使用队列来实现BFS,队列中存储节点和其对应的层数。 3. 在遍历过程中,更新每一层的节点数,并记录最大节点数。 ### 伪代码 1. 定义…

uni-app - - - - -vue3使用i18n配置国际化语言

uni-app - - - - -使用i18n配置国际化语言 1. 安装vue-i18n2. 配置文件2.1 创建如下文件2.2 文件配置2.3 main文件导入i18n 3. 页面内使用3.1 template内直接使用3.2 变量接收使用 1. 安装vue-i18n npm install vue-i18n --save2. 配置文件 2.1 创建如下文件 locales文件夹里…

__has_include 报错

作用: 在C或C的预处理阶段,__has_include 是一个编译器特定的宏,主要用于检查编译器是否能够包含指定的头文件。这个宏在Clang和GCC(从某个版本开始)等编译器中可用,但在所有编译器中可能并不都支持…

气膜乒乓球馆的前景展望—轻空间

乒乓球作为我国的国球,在全球范围内始终保持领先地位,不仅是国民心中的重要运动,也在国际舞台上占据了举足轻重的地位。气膜乒乓球馆作为一种创新的体育设施,通过结合先进的气膜技术与传统乒乓球运动,为爱好者提供了一…

Heart Animated 写实心脏模型素材带动画医学

心脏动画: 解剖细节逼真的心脏。 此资源包含高质量着色全色HD中的所有纹理,并使用HD中的凹凸贴图(NORMALMASP)。所有Prefab Ready均适用于游戏、应用程序和VR应用程序。预制件已准备好位置和旋转0,0,0。拖动到场景时。 还具有完整的心动周期。 Tris=约81 k。 顶点=约51 k …

关于如何使用终端查看类的布局教程

在继承章节我们使用了vs提供的终端查看类之间的继承模型,在后续多态的学习过程中,我们也将继续使用该方法去查看虚表等信息。 第一步:打开VS提供的终端窗口: 第二步:获取需要查看的类所在的源文件的地址: …

TypeScript 设计模式之【迭代器模式】

文章目录 迭代器模式:优雅遍历集合的智能书签迭代器模式的奥秘迭代器模式有什么利与弊?如何使用迭代器模式来优化你的数据遍历代码实现案例迭代器模式的主要优点迭代器模式的主要缺点迭代器模式的适用场景总结 迭代器模式:优雅遍历集合的智能书签 你是…

运维工具之adb命令安装和使用

一、adb命令简介 ADB(Android Debug Bridge)是 Android 开发者工具包中的一个命令行工具,主要用于在开发、调试和测试 Android 应用时与 Android 设备进行交互。通过 ADB 工具,开发者和用户可以从电脑对 Android 设备执行各种操作…

md编辑器语法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【递归】5.leetcode 872 叶子相似的树

1 题目描述 题目链接:叶子相似的树 2 解答思路 递归分为三步,接下来就按照这三步来思考问题 第一步:挖掘出相同的子问题 (关系到具体函数头的设计) 第二步:只关心具体子问题做了什么 (关…

Swoole的多进程模块

Swoole是有自己的一个进程管理模块,用来替代PHP的pcntl扩展,需要注意Process进程在系统是非常昂贵的资源,创建进程消耗很大,另外创建的进程过多会导致进程切换开销大幅上升。 为什么不使用pcntl 1.pcntl没有提供进程间通信的功能…

AI智能眼镜_带摄像头的AI智能眼镜,AI大模型落地的载体

随着科技的迅猛发展,AI智能眼镜汇聚了众多硬件的优势,成为现代生活中不可或缺的一部分。这种创新设备不仅内嵌了耳机、摄像头以及WiFi和蓝牙模块等核心硬件,还具备了音频播放、图像拍摄和无线通信等多种功能,极大地提升了信息获取…

深度学习经典模型之BERT(上)

深度学习经典模型之BERT(下) BERT(Bidirectional Encoder Representations from Transformers)是一个双向transformer编码器的言表示模型。来自论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 。由Google公司的…

【WRF运行第二期(Ubuntu)】ARWpost安装及错误总结

WRF运行第二期:ARWpost安装及错误总结 1 ARWpost介绍2 ARWpost安装2.1 ARWpost_V3安装前准备2.2 安装ARWpost2.3 修改Makefile文件2.4 修改configure.arwp文件2.5 生成可执行文件EXE另:报错1-Error: Type mismatch between actual argument at (1) and a…

计算物理精解【3】- FORTRAN计算

文章目录 概述hello,world环境接收输入与输出 读取csv文件if and select case循环formatread,write formatread,write读写文件录入与读取数据文件定位csv 数组一维数组最小二乘法下标隐式循环 关系代数基本运算笛卡尔积投影选择 过程参数select case 和 过程module快排函数自定…

深度学习自编码器 - 分布式表示篇

序言 深度学习作为人工智能领域的重要分支,其核心在于表示学习( Representation Learning \text{Representation Learning} Representation Learning),尤其是分布式表示( Distributed Representation \text{Distribut…

【JUC并发编程系列】深入理解Java并发机制:高效并发背后的守护者(八、线程池的秘密)

文章目录 【JUC并发编程系列】深入理解Java并发机制:高效并发背后的守护者(八、线程池的秘密)1. 线程池基础知识1.1 什么是线程池1.2 为什么要使用线程池1.3 线程池使用场景1.4 线程池有哪些作用 2. 线程池基本用法2.1 线程池的创建方式2.2 线程池底层是如何实现复用…

前端vuex

需要共享的数据适合存储到vuex中 state基本使用 如果开启strict严格模式,直接修改上图的age会报错提示。不能在组件中直接修改state