HTTP协议格式及 fiddler 的使用

news2024/11/27 21:39:06

HTTP 协议格式

    • 简述 HTTP 协议
    • fiddler(抓包工具) 的使用
    • 协议格式
      • 总结 :

简述 HTTP 协议

HTTP 协议是个使用非常广泛的应用层协议, 应用层协议通常是需要 “自定义协议” 的, 自定义协议可以基于现有协议进行定制, HTTP 之所以应用广泛就是因为其可定制性非常强.

日常生活中遇到 HTTP 的场景 :

  1. 使用浏览器打开一个网页
  2. 手机app加载数据.
  3. 微信支付宝小程序.
  4. 游戏中的界面.

HTTP 是 “一问一答” 形式的协议, 也就是客户端发送一个请求, 服务器响应一个回答.
HTTP 是一个文本格式的协议, 要想看到它的协议格式, 还得借助一些外部工具来展现出来, 我们可以通过抓包工具来获取到 HTTP 协议.

fiddler(抓包工具) 的使用

抓包工具就相当于一个代理, 每当客户端和服务器数据进行交互时, 都要先经过它, 我们就可以在抓包工具上查找到需要的数据包.
这里我们使用 fiddler 来抓包(fiddler 专注于 http, 使用简单), 原理图如下 :

在这里插入图片描述
我们下载好 fiddler 后, 首先要勾选这几个框 :
在这里插入图片描述
在设置过程中, 会弹出一个对话框, 点击 “是”, 就可以进行抓包了.

fiddler 作为一个代理, 可能会与电脑上其他代理起冲突, 比如一些浏览器插件, 加速软件啥的.
进入fiddler 可以看到 :
在这里插入图片描述
左侧显示已经抓到的包的列表, 列表中的内容是时刻更新的, 因为电脑时不时的就在发送网络请求.

那我们如何查找要抓的包呢?
就以访问百度为例 : https://www.baidu.com/
在这里插入图片描述
可以看到仅仅一个请求, 就出现了这么多数据包, 具体如何查找呢?

  1. 先看颜色, 黑色响应的是普通数据; 蓝色响应的是 http. 我们关注蓝色.
  2. 再看域名 : https://www.baidu.com
  3. 再看响应长度的数据长度, 一般找数据长度比较长的.

再看上图, 发现巧了第一个就是了, 双击它, 就会显示详情, 右上角是请求, 右下角是响应.
首先我们勾线 Raw, 显示出最原始的 http 请求的数据包, 看不清也可以点击右下角的按钮放大来看.
在这里插入图片描述
可以看到, 这就是一个完整的 http 请求, 它是文本数据,
在这里插入图片描述
其实所谓的 http 请求, 就是通过代码构造出一个 http 格式的字符串, 再写入 tcp 的 socket 中就行了.

协议格式

一个 HTTP 请求数据, 包含了四个部分.

  1. 首行 :
    在这里插入图片描述

  2. 报头(header) :

在这里插入图片描述
3. 空行: 这里截图体现不出来, 可以自己观察一下.

在这里插入图片描述
4. 正文(body) : 空行后面的内容, 有时候可以没有.(这里没有)

来看响应 :
注意 : 响应可能是压缩过的(压缩过的显示是二进制), 压缩可以减少网络传输的数据量, 节省带宽. 把数据压缩本质上是用 cpu 资源换带宽资源.
所以得先解压, 再点击 Raw.
在这里插入图片描述
这样就得到了 HTTP 响应 :
在这里插入图片描述
同样的 HTTP 响应也分四个部分 :

  1. 首行 :
    在这里插入图片描述

  2. 响应报头(header) :
    在这里插入图片描述

  3. 空行 :
    在这里插入图片描述

  4. 正文(此处正文是 html 代码)

在这里插入图片描述

浏览器拿到 HTTP 响应的 html 了, 就可以显示了.

其实拿到的不仅仅是 html, 还有 css, js 等浏览器能显示出来的内容, 这些都是来自于服务器, 都是服务器返回的响应带给浏览器的.

总结 :

HTTP 请求及响应格式如下 :
在这里插入图片描述

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

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

相关文章

网络安全工程师的岗位需求,破237万了!

3月底凌晨,腾讯QQ和微信的相关业务都出现了功能异常。 包括微信语音对话、朋友圈、微信支付,以及QQ文件传输、QQ空间和QQ邮箱在内的多个功能无法使用。 这事儿都听说了吧? 据报道,这次的事故是因为电信机房冷却系统故障导致。 …

Linux安装Tomcat搭建Jenkins

前提条件 由于Tomcat服务器主要用于部署java web项目。所以先安装java jdk。安装过程大家应该很轻车熟练了。 一、安装Tomcat 创建/usr/tomcat文件夹 mkdir -p /usr/tomcat下载tomcat安装包 wget https://archove.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat…

umi4 实现msal aad 登录loginRedirect方式并获取令牌

在 Umi 4 中使用 Ant Design Pro Layout 以及 MSAL (Microsoft Authentication Library) 实现登录并获取令牌进入到首页,你需要按照以下步骤进行操作: 安装所需依赖: 使用 npm 或 yarn 安装所需的包: npm install azure/msal-bro…

从零开始Vue3+Element Plus后台管理系统(十)——自定义水印指令与全局注册

在实际项目开发中,自定义指令用得还是比较多的,比如:复制粘贴、输入框防抖、输入框禁止特殊字符、权限校验、背景水印、拖拽等等… 指令确实是个优雅的存在。 Vue3中定义一个普通的自定义指令的详细说明参见官网:https://cn.vue…

sentinel配置持久化到apollo

背景 sentinel-dashborad的配置默认是存储到内存中的,生产环境肯定不能这样使用,官网支持zookeeper、nacos、apollo的配置,本文就来介绍apollo的持久化 apollo sentinel-dashboard 整合 apollo 进行规则的持久化配置,主要方式是…

Kettle获取接口数据到表

kettle从接口服务获取数据 主要用到kettle输入菜单下的控件:生成记录、JSON input 查询菜单下的控件:HTTP client 输出菜单下的控件:表输出、插入/更新 生成记录:设置一个变量,用这个变量来保存要去访问接口的URL地址…

数据结构学习之队列

前言:在我们学习了栈之后,明白了它的结构的特殊性即LAST IN FIRST OUT(后进先出),与之相对应的也有一个特殊的结构队列(queue)--FIRST IN FIRST OUT(先进先出),他们都是面对特殊情况下的数据的结构&#xf…

支持导入 Postman ,用这个插件就可以了

首先安装 导入 Postcat 插件,之后就可以愉快的导入 Postman 格式的文件了。 右上角——选择导入——选择Postman 格式——拖入文件 导入即可!再也不用担心 Postcat 格式的 api 文件能把自己难住了! 如果你日常会用到 api 管理工具的话&#x…

5G和物联网将如何重塑汽车行业?物联网将给汽车行业带来哪些变革?

“ 物联网(Internet of Things)的诞生给无数行业带来了变革,其中就包括汽车行业。物联网对于汽车发展的重要性是毋庸置疑的。从网联汽车到智能交通系统,物联网正在为汽车行业开辟下一个汽车时代。汽联网(Internet of Vehicles)正在成型。” 我们今天看到…

k8s部署mysql并使用nfs持久化数据

k8s部署mysql并使用nfs持久化数据 一、配置nfs服务器1.1 修改配置文件1.2. 载入配置1.3. 检查服务配置 二、创建K8S资源文件2.1 mysql-deployment.yml2.2 mysql-svc.yml 一、配置nfs服务器 参考文章: pod使用示例https://cloud.tencent.com/developer/article/1914388nfs配置…

管好【SD-WEBUI】中大量的模型:名称+预览图+备注+分组(Part.2)

文章目录 (零)前言(一)模型预览图(1.1)预览图姿态(证件照)(1.2)预览图姿态(半身动作) (二)LoRA模型名称&#…

机器人关节电机PWM

脉冲宽度调制(Pulse width modulation,PWM)技术。一种模拟控制方式 机器人关节电机的控制通常使用PWM(脉冲宽度调制)技术。PWM是一种用于控制电子设备的技术,通过控制高电平和低电平之间的时间比例,实现对电子设备的控制。在机器人关节电机中,PWM信号可以控制电机的…

C++ | 高效使用vector

C | 高效使用vector 文章目录 C | 高效使用vector1.善用Reserve2.移动构造和赋值3.释放vector如果vector内存的是指针,需要先释放每个指针所指内存,再释放vectorReference 1.善用Reserve 当需要向vector中添加元素但目前的空间已经放满时,ve…

200G AOC有源光缆在数据中心的应用

随着大数据时代对高速、高带宽的需求日益增长,人们迫切需要一种新型产品作为高性能计算和数据中心的主要传输介质。因此,光通信传输速率的发展也提高了。面对短距离数据中心在光互连产品中的高速、高密度、低成本、低功耗要求,AOC有源光缆提供…

shell脚本----awk命令

文章目录 一、awk工作原理二、awk相关命令三、awk的使用按行输出文本:按字段输出文本:通过管道、双引号调用 Shell 命令: 一、awk工作原理 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中…

Flink Kafka-Source

文章目录 Kafka Source1. 使用方法2. Topic / Partition 订阅3. 消息解析4. 起始消费位点5. 有界 / 无界模式6. 其他属性7. 动态分区检查8. 事件时间和水印9. 空闲10. 消费位点提交11. 监控12. 安全 Apache Kafka 连接器 Flink 提供了 Apache Kafka 连接器使用精确一次&#xf…

由浅入深理解java集合(四)——集合 Queue

Queue用于模拟队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机…

【C++初阶】类与对象(中)之构造函数与析构函数

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

C++继承详解——基类派生类对象赋值转换、菱形虚拟继承

hello,这里是bangbang,今天来讲下继承。 面向对象三大特性:封装、继承、多态。 目录 1. 继承的概念及定义 1.1 继承的概念 1.2 继承定义 1.2.1 定义格式 1.2.2 继承关系和访问限定符 1.2.3 继承基类成员访问方式的变化 2. 基类和派生类对…

Java面试知识点(全)-设计模式二

Java面试知识点(全) 导航: https://nanxiang.blog.csdn.net/article/details/130640392 注:随时更新 13.模板模式 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的…