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

news2025/2/25 12:46:59

文章目录

  • 🍃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 是⾯向字节流的. 如果没有这个空⾏, 就会出现 “粘包问题”.

⭕总结

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

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

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

相关文章

直观与交互:山海鲸可视化软件与Excel传统表格的对比

作为一名长期使用Excel进行数据处理和分析的用户,最近我尝试了一款名为山海鲸的可视化软件,发现它与Excel传统表格之间存在诸多明显的差异。接下来,我将从个人体验视角出发,谈谈这两种工具的不同之处。 首先,从数据呈…

HashMap设置初始容量为17,那么它的实际容量是多少?

典型回答 即使初始化 HashMap 的容量为 17,那么它的实际容量却是 32。 这是因为 HashMap 的容量只能为 2 的 N次方,这是 HashMap 的源代码中的实现,无论用户输入的是多少,它总会通过计算,得到第一个比他大的2的N 次方…

cc-uploadSomePic图片上传组件:快速开发与用户体验的提升

cc-uploadSomePic图片上传组件:快速开发与用户体验的提升 摘要: 在前端开发中,图片上传功能是一个常见的需求。为了提高开发效率和用户体验,我们开发了一个名为cc-uploadSomePic的图片上传组件。该组件支持单个或多个文件上传&am…

Linux下使用ntpdate进行时间同步

1.简介 ntpdate是Linux下用于从NTP服务器同步时间的命令行工具。 2.安装 大多数Linux发行版已预装ntpdate。未安装的可使用以下命令: # Ubuntu/Debian sudo apt-get install ntpdate # CentOS/Fedora/RHEL sudo yum install ntpdate 3.手工同步网络时间 执行以下命…

JavaScript中的继承方式详细解析

什么是继承 继承是面向对象编程中的一个重要概念,它指的是一个对象(或类)可以获得另一个对象(或类)的属性和方法。在继承中,被继承的对象通常称为父类(或基类、超类),继…

prince2和Pmp哪个含金量高?

一,认证情况 1、PMP(项目管理专业人士资格认证)是PMI( 美国项目管理协会 )最有影响力的证书,PMBOK( 项目管理知识体系指南 )是PMP的认证标准,是美国国家项目管理标准,PMI会员有70%集中在北美,PMP认证在北美地区很受欢…

基础乱炖来吧

1,SSH框架和SSM区别 SSH:structspringhibernate,SSM:MVCspringmybatis struct入口是filter级别,对action类进行请求,一个action类对应一个请求、类拦截;spring-mvcservlet级别,方法级别请求&…

【ESP32 IDF】ESPTIMER定时器

文章目录 前言一、ESPTIMER定时器的介绍1.1 定时器是什么1.2 ESPTIMER定时器的介绍 二、ESPTIMER的使用2.1 简单使用过程2.2 停止定时器2.3 删除定时器 三、示例代码总结 前言 在ESP32 IDF开发框架中,ESPTIMER是一个功能强大的定时器模块,用于实现定时任…

武汉星起航引领跨境电商风潮,五对一服务体系助力卖家飞跃成长

在全球贸易蓬勃发展的背景下,跨境电商行业迎来了前所未有的机遇与挑战。在这一领域中,武汉星起航电子商务有限公司以其专业的运营团队和优质的服务,成为众多跨境卖家的首选合作伙伴。 武汉星起航自2020年创立以来,始终致力于为跨…

前端项目ip做域名映射

1、在阿里云、腾讯云购买域名 SSL 证书和私钥生成 阿里云生成证书详解 /path/to/your/ssl_certificate1.crt和/path/to/your/ssl_certificate1.key 生成私钥(key): 使用 OpenSSL 工具生成一个私钥文件。执行以下命令: openss…

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

随着互联网技术的不断发展,高校选课系统的建设和应用已成为当前高校教育改革的重要方向。选课系统作为高校教务管理的重要组成部分,对于提高教学质量、提高学生的学习效率、优化教学资源配置具有重要的意义。本论文旨在探讨高校选课系统的设计与实现。随…

StringTable(字符串常量池)

目录 String的基本特性 String的内存分配 字符串拼接操作 intern()的使用 String的基本特性 String:字符串,使用一对""引起来表示 String声明为final的,不可被继承 String实现了Serializable接口:表示字符串是支持…

TIMESNET: TEMPORAL 2D-VARIATION MODELINGFOR GENERAL TIME SERIES ANALYSIS

本文整理至https://zhuanlan.zhihu.com/p/606575441这里是清华大学软件学院机器学习组官方公众号(THUML-LAB),欢迎关注我们,获取最新资讯! 本文介绍本组ICLR2023时间序列分析方向的最新工作:TimesNet: Temporal 2D-Variation Mode…

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)

从零开始学习如何使用 Postman 请求头

当你在使用 Postman 发送请求时,请求头(Headers)是你可以包含在 HTTP 请求中的重要部分之一。请求头包含了关于请求的元数据信息,这些信息对于服务器来处理请求是非常重要的。下面是一份详细的图文介绍,说明了如何在 P…

BUUCTF-Misc10

秘密文件1 1.打开附件 是一个流量包 2.Wireshark 用Wireshark打开 右键追踪tcp追踪流,发现一个以.rar结尾的压缩包 3.foremost 用foremost分离文件 发现有一个rar的文件夹 文件夹内有个加密的压缩包 4.ARCHPR 用ARCHPR工具对压缩包进行解密 5.得到flag [BJDCTF2…

【C语言进阶篇】自定义类型:结构体(上)

目录 1. 结构体类型的声明 ​编辑 1.1 结构体的创建和初始化 1.2 结构体的特殊声明 1.3 结构体的自引用 2. 结构体内存对齐 2.1 对齐规则 2.2 为什么存在内存对齐 2.3 修改默认对齐数 在我们描述简单对象的时候,使用已有的类型就足够了,比如: 但是当我们…

数据结构从入门到精通——排序的概念及运用

排序的概念及运用 前言一、排序的概念排序稳定性内部排序外部排序 二、排序运用三、常见的排序算法四、排序性能检测代码srand()clock() 五、oj排序测试代码 前言 排序是将数据按照一定规则重新排列的过程,常见规则有升序、降序等。排序算法如冒泡排序、快速排序等…

基于php健身房管理系统flask-django-python

根据现实需要,此系统我们设计出一下功能,主要有以下功能模板。 (1)前台功能:首页、运动器材、教练信息、营业信息、公告栏、在线留言、后台管理、个人中心。 (2)会员功能:首页、个人…