【网络原理】HTTP协议和使用Fiddler抓包

文章目录

  • 🍃HTTP协议是什么?
  • 🍀理解 "应用层协议"
  • 🎍HTTP 协议的工作过程
  • 🌴HTTP 协议格式
  • 🌳Fiddler抓包工具的使用
    • 🌸如何抓HTTPS的包?
  • 🎋抓包工具的原理
  • 🌲抓包结果展示
    • 🌸HTTP请求
    • 🌸HTTP响应
  • 🎄协议格式总结
  • ⭕总结

🍃HTTP协议是什么?

HTTP (全称为 “超⽂本传输协议”) 是⼀种应⽤⾮常⼴泛的 应⽤层协议.

在这里插入图片描述
HTTP 诞⽣与1991年. ⽬前已经发展为最主流使⽤的⼀种应⽤层协议.

HTTP 往往是基于传输层的TCP 协议实现的. (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于
UDP 实现)
⽬前我们主要使⽤的还是 HTTP1.1 和 HTTP2.0 . 当前博主讨论的 HTTP 以 1.1 版本为主.

我们平时打开⼀个⽹站, 就是通过 HTTP 协议来传输数据的.
在这里插入图片描述
当我们在浏览器中输⼊⼀个 搜狗搜索的 “⽹址” (URL) 时, 浏览器就给搜狗的服务器发送了⼀个 HTTP
请求, 搜狗的服务器返回了⼀个 HTTP 响应.
这个响应结果被浏览器解析之后, 就展⽰成我们看到的⻚⾯内容. (这个过程中浏览器可能会给服务器发送多个 HTTP 请求, 服务器会对应返回多个响应, 这些响应⾥就包含了⻚⾯ HTML, CSS, JavaScript, 图⽚, 字体等信息).

所谓 “超⽂本” 的含义, 就是传输的内容不仅仅是⽂本(⽐如 html, css 这个就是⽂本), 还可以是⼀些其
他的资源, ⽐如图⽚, 视频, ⾳频等⼆进制的数据

🍀理解 “应用层协议”

我们已经学过 TCP/IP , 已经知道⽬前数据能从客⼾端进程经过路径选择跨⽹络传送到服务器端进程
[ IP+Port ].

可是,仅仅把数据从A点传送到B点就完了吗?

这就好⽐,在淘宝上买了⼀部⼿机,卖家[ 客⼾端 ]把⼿机通过顺丰[ 传送+路径选择 ] 送到买家 [ 服务
器 ] ⼿⾥就完了吗?
当然不是,买家还要使⽤这款产品,还要在使⽤之后,给卖家打分评论。

所以,我们把数据从A端传送到B端, TCP/IP 解决的是顺丰的功能,⽽两端还要对数据进⾏加⼯处理
或者使⽤,所以我们还需要⼀层协议,不关⼼通信细节,关⼼应⽤细节!

这层协议叫做应⽤层协议。⽽应⽤是有不同的场景的,所以应⽤层协议是有不同种类的,其中经典协
议之⼀的HTTP就是其中的佼佼者.

再回到我们刚刚说的买⼿机的例⼦,顺丰相当于 TCP/IP 的功能,那么买回来的⼿机都附带了说明
书【产品介绍,使⽤介绍,注意事项等】,⽽该说明书指导⽤⼾该如何使⽤⼿机【虽然我们都不看,
但是⽗⺟辈有部分是有看说明书的习惯的:)】,此时的说明书可以理解为⽤⼾层协议

🎍HTTP 协议的工作过程

当我们在浏览器中输⼊⼀个 “⽹址”, 此时浏览器就会给对应的服务器发送⼀个 HTTP 请求. 对⽅服务器收到这个请求之后, 经过计算处理, 就会返回⼀个 HTTP 响应.

在这里插入图片描述
事实上, 当我们访问⼀个⽹站的时候, 可能涉及不⽌⼀次的 HTTP 请求/响应 的交互过程.
可以通过 chrome 的开发者⼯具观察到这个详细的过程.

通过 F12 打开 chrome 的开发者⼯具, 切换到 Network 标签⻚. 然后刷新⻚⾯即可看到如下图效果. 每
⼀条记录都是⼀次 HTTP 请求/响应

在这里插入图片描述

注意: 当前 搜狗主⻚ 是通过 https 来进⾏通信的. https 是在 http 基础之上做了⼀个加密解密的⼯作,后⾯再介绍.

🌴HTTP 协议格式

HTTP 是⼀个⽂本格式的协议. 可以通过 Chrome 开发者⼯具或者 Fiddler 抓包, 分析 HTTP 请求/响应
的细节.
在这里插入图片描述
注意:不是每个请求和响应都具有以上每个部分

🌳Fiddler抓包工具的使用

1.下载安装
Fiddler官网
在这里插入图片描述

这里呢有两个版本,我们只需要下载Fiddler Classic版本就好(该版本免费)

在这里插入图片描述
填完自己邮箱后点击下载

2.抓包

当我们打开该软件就可以直接开始抓包了
在这里插入图片描述

  • 左侧窗口显示了所有的 HTTP请求/响应, 可以选中某个请求查看详情.

  • 右侧上方显示了 HTTP 请求的报文内容. (切换到 Raw 标签页可以看到详细的数据格式)

  • 右侧下方显示了 HTTP 响应的报文内容. (切换到 Raw 标签页可以看到详细的数据格式)

  • 请求和响应的详细数据, 可以通过右下角的 View in Notepad 通过记事本打开.

  • 可以使用 ctrl + a 全选左侧的抓包结果, delete 键清除所有被选中的结果.

🌸如何抓HTTPS的包?

1.点击Tools
在这里插入图片描述

2.点击Options里面的HTTPS选项,然后将里面的选项全部打勾

注意:这里值得注意的是,它会出现一个提示框,提示你是否安装一个证书,这里一定要选择是
在这里插入图片描述
然后OK就可以开始抓HTTPS的包了

🎋抓包工具的原理

Fiddler 相当于一个 “代理”.

浏览器访问 sogou.com 时, 就会把 HTTP 请求先发给 Fiddler, Fiddler 再把请求转发给 sogou 的服务器.

当 sogou 服务器返回数据时, Fiddler 拿到返回数据, 再把数据交给浏览器.

因此 Fiddler 对于浏览器和 sogou 服务器之间交互的数据细节, 都是非常清楚的
在这里插入图片描述

🌲抓包结果展示

🌸HTTP请求

在这里插入图片描述

• 首行: [方法] + [url] + [版本号]
• Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\n分隔;遇到空⾏表⽰Header部分结束
• Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有⼀个
Content-Length属性来标识Body的⻓度;

🌸HTTP响应

在这里插入图片描述
• ⾸⾏: [版本号] + [状态码] + [状态码解释]
• Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\n分隔;遇到空⾏表⽰Header部分结束
• Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有⼀个
Content-Length属性来标识Body的⻓度; 如果服务器返回了⼀个html⻚⾯, 那么html⻚⾯内容就是
在body中.

🎄协议格式总结

在这里插入图片描述
思考问题: 为什么 HTTP 报⽂中要存在 “空⾏”?

因为 HTTP 协议并没有规定报头部分的键值对有多少个. 空⾏就相当于是 “报头的结束标记”, 或者是
“报头和正⽂之间的分隔符”.
HTTP 在传输层依赖 TCP 协议, TCP 是⾯向字节流的. 如果没有这个空⾏, 就会出现 “粘包问题”.

⭕总结

感谢大家的阅读,希望得到大家的批评指正,和大家一起进步,与君共勉

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于php高校选课系统设计与实现flask-django-python-nodejs

接着,本论文将设计一个基于Web的高校选课系统,并通过详细的需求分析和系统架构设计来解决现有系统中存在的问题。系统的开发将采用目前流行的Web技术和数据库技术,并考虑系统的灵活性、安全性和易用性。最后,本论文将对开发出的系…

jmeter之并发和顺序执行与特殊线程组-第四天

1.jmeter的并发执行 并发执行:多个线程同时执行,不能确定谁先结束 以上案例中http请求里面没有写任何内容,只是为了看这个并发执行的效果 2.jmeter的顺序执行 顺序执行:多个线程顺序执行 再测试计划中勾选“独立运行每个线程组…

【JAVA快速编写UI】 Java 编写一个编码转换和加解密工具,可以创建一个简单的 GUI 应用程序(例子)

EncodingDecodingTool/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── rockmelodies/ │ │ │ └── encodingdecodingtool/ │ │ │ ├── MainApp.java │ │ │ …

shardingsphere-elastic-job-ui 管理界面安装

shardingsphere-elasticjob 从 3.0.0-alpha 版本开始,将console管理界面单独拆分出来 下载前需要 安装 maven 配置环境变量 安装 nodejs 配置环境变量 下载ui源码,安装 官方并未直接提供可执行的二进制文件,需要下载源码编译,目前发行版 3.0.2 https://github.com/…

28-1 文件上传漏洞 - Windows文件流绕过

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、Windows文件流绕过::SDATA 定义: 文件流(本地文件系统)::$DATA (Windows文件流绕过):利用NTFS交换数据流(ADS),ADS是NTFS磁盘格式的一个特性。在NTFS文件系统下,每个文件都…

TCP和UDP可以绑定同样的端口吗?

先说答案,可以,TCP和UDP属于传输层的两个不同传输协议,可以说是两个完全独立的模块,因为传输层的端口号的作用,仅仅是为了区分同一台主机上的不同应用程序。其实这个问题就好比两个快递驿站,一个中通一个圆…

氮化镓特性简述

氮化镓 了解和记录一下氮化镓材料的特性。 结构 使用pymatgen和Materials Project中的材料数据绘制能带图。其中mp-804(1.73eV)如下所示: 以及mp-830(1.57eV)如下所示: python代码如下 # from pymatgen.ext.matproj import MPRester from mp_api.…

CCF 编程能力等级认证 C++Python认证标准

CCF 编程能力等级认证 C&Python认证标准 C编程一级标准一、知识点详述二、考核目标三、知识块四、知识点描述五、题型分布 Python 编程一级标准一、知识点详述二、考核目标三、知识块四、知识点描述五、题型分布 C编程二级标准一、知识点详述二、考核目标三、知识块四、知识…

php 页面中下载文件|图片

一、需求 页面中点击下载图片 二、实现 protected function pageLoad(){$filePath $_GET[file];$host $_SERVER[HTTP_HOST];$file http://.$host.$filePath;$fileName basename($filePath);$content file_get_contents($file);ob_clean();$suffixArr explode(., $file…

NSS [SWPUCTF 2022 新生赛]Power!

NSS [SWPUCTF 2022 新生赛]Power! 开题。 随便传一个111,后端进行了一个文件包含操作。 输入index.php,回显了一个不可显示图片。 有点小蒙蔽的,一般这种情况就源码,抓包,扫描。源码里面果然有货。 base解码后是index…

鸿蒙开发入门教程—瀑布流的实战案例

给大家分享一下瀑布流的实战案例,和官方文档略有不同,本文数据直接从api接口获取,更接近实战。需要注意的是,要实现瀑布流,接口最好将图片尺寸一起返回。 本文效果图: 首先要实现IDataSource接口的对象&am…

golang面试题总结

零、go与其他语言 0、什么是面向对象 在了解 Go 语言是不是面向对象(简称:OOP) 之前,我们必须先知道 OOP 是啥,得先给他 “下定义” 根据 Wikipedia 的定义,我们梳理出 OOP 的几个基本认知: …

Qt 实现 Asterix 报文解析库

【写在前面】 最近工作中需要解析 Cat 21 和 Cat 62 的 ADS-B 数据 ( 自己的工作包含航空领域 )。 然后,因为整个 Asterix 协议类别非常之多,每个类别的版本也多,纯手工实现每个版本解析根本不现实 ( 然鹅公司之前的解析库就是这么做的且做的…

VMware 与 SmartX 分布式存储缓存机制浅析与性能对比

作者:深入细节的 SmartX 一线技术团队 近日,VMware 发布了 vSAN 8,对存储架构进行了重大更新。其中最主要的变化,即引入了新的 Express Storage Architecture(ESA)架构:用“存储池”替代了原存…

使用Kalibr標定vins參數

這裏使用的是realsense D435,使用其灰階雙目的部分(把中間红外点阵投影仪遮住應該可以取得更好的效果),廠商有給相機的標定,但由於Kalibr裏可以直接標定相機和imu的相對位置,是vins需要的參數,比…

MySQL数据库概念及安装

一、数据库的基本概率 1.1 数据 记录每个人的信息 或者记录数据 1.2 表 存放信息的集合 或者存放行和列的信息 1.3 数据库 表的集合 二、数据库管理系统(DBMS) 2.1 DBMS定义 (DBMS)是一种软件,用于创建和管理…

【开发环境】Ubuntu 18.04 搭建 QT编译环境详细步骤 【亲测有效】

目录 1 查看Ubuntu系统中Qt版本 2 下载Ubuntu系统Qt版本安装包 3 Qt安装 3.1 Qt 安装步骤 3.2 安装qt发现Ubuntu空间不足,怎么去扩容呢? 3.2.1 硬盘操作步骤(需要关闭虚拟机进行操作) 3.2.2 Ubuntu命令操作:安装…

Python 实现1~100之间的偶数求和

result0 for i in range(101):if i%20:result result i print(result) 或者 result0 for i in range(2,101,2):result result i print(result)

海外代理IP在跨境电商中的五大应用场景

在我国跨境电商的发展中,海外代理IP的应用日益广泛,它不仅帮助商家成功打入国际市场,还为他们在多变的全球电商竞争中保持优势。下面是海外代理IP在跨境电商中五个关键的应用场景。 1、精准的市场分析 了解目标市场的消费者行为、产品趋势以…

数据库系统概论-练手题集合【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下数据库系统概论中的练手题,以供大家期末复习和考研复习的时候使用。 数据库系统概论系列文章传送门: 第一章 绪论 第二/三章 关系数据库和标准语言SQL 第四/五章 数据库安全性和完整性…