当前位置: 首页 > news >正文

JavaEE: 深入解析HTTP协议的奥秘(1)

文章目录

  • HTTP
    • HTTP 是什么
    • HTTP 协议抓包
      • fiddle 用法
    • HTTP 请求响应基本格式


HTTP

HTTP 是什么

在这里插入图片描述

HTTP 全称为"超文本传输协议".
HTTP不仅仅能传输文本,还能传输图片,传输音频文件,传输其他的各种数据.

因此它广泛应用在日常开发的各种场景中.

在这里插入图片描述
HTTP 往往是基于传输层的 TCP 协议实现的.

  • HTTP1.0 , HTTP1.1 , HTTP2.0 均为 TCP.
  • HTTP3 基于 UDP 实现.

目前互联网上见到的 HTTP 协议,绝大部分都是 HTTP/1.1 版本.

因为 1.1 版本就足够好用了,升级到 2.0 成本比较高(浏览器/服务器的兼容性),带来的收益有限.
有点 IPv6 的感觉~

HTTP 协议,是一种典型的"一问一答"的协议.

  • 客户端发一个请求,服务器返回一个响应(一一对应)

HTTP 协议抓包

借助抓包工具,我们可以观察到 HTTP 请求/响应 的详细情况.

PS: TCP/UDP 也是可以抓包的.

抓包: 把通过网卡上的数据,获取到,并且解析出来.

在这里插入图片描述
代理 又分为正向代理和反向代理.

举个例子:
在这里插入图片描述

fiddle 用法

fiddle 用法.

只要启动 fiddle,此时,抓包工作就自动开始了~

fiddle 开启后,会多一层处理,就可能导致你打开其他网页比较慢~

  1. 左侧是抓到的 HTTP 数据报的列表.
    在这里插入图片描述

  2. 点击某一项,右侧就能看到请求和响应的详细情况.
    右上方是请求的详情.
    在这里插入图片描述

    右下方是相应的详情.
    在这里插入图片描述
    两排标签页:
    在这里插入图片描述
    在这里插入图片描述
    响应这里打开,看到的是二进制.(本身相应也是文本,此处的二进制,是压缩后的)
    在这里插入图片描述

    为啥要压缩呢?
    答: 体积小了,传输时消耗的带宽就低了,带宽是互联网中最贵的硬件资源,比 cpu,内存都要贵~

raw 标签页就是 HTTP 的原始数据.
发送 HTTP 请求就是往 TCP socket 中,按照上述格式,写入一段字符串.
收到 HTTP 响应,就是从 TCP socket 中,读出一段字符串再解析~

HTTP 请求响应基本格式

以下是一个HTTP请求/相应的抓包结果.

HTTP请求:
在这里插入图片描述

  • 首行: [方法] + [URL] + [版本]

    方法: 这次请求的"动作"是啥.
    URL: 访问的资源是啥.
    版本号: 在上图中是 HTTP/1.1

  • 请求头(Header): 从第二行开始的若干行,一直到空行结束. 表示请求的属性, :空格 分隔的键值对; 每组属性之间使用 \n 分割;
  • Body: 空行后面的内容都是 Body. Body 允许为空字符串.如果 Body 存在,则在 Header 中会有一个 Content-Length 属性来标识 Body 的长度.

    HTTP 一般来说,GET 往往是不带 Body. POST 往往是带 Body 的.

HTTP 响应:

在这里插入图片描述
HTTP 响应的基本格式也是四个部分~
在这里插入图片描述

  1. 首行: 在这里插入图片描述
    首行的三个部分,使用空格分隔.(请求也是如此)
  2. 响应头(Header) : 键值对.每行是一个键值对,不确定有几行,以 空行 结尾. 键 与 值 之间使用 :空格 分隔.
  3. 空行
  4. 正文
    对于相应来说,正文通常是 HTML/CSS/JS/JSON/图片/音频/字体…

下一篇文章: JavaEE: 深入解析HTTP协议的奥秘(2)

本文到这里就结束啦~

在这里插入图片描述

相关文章:

JavaEE: 深入解析HTTP协议的奥秘(1)

文章目录 HTTPHTTP 是什么HTTP 协议抓包fiddle 用法 HTTP 请求响应基本格式 HTTP HTTP 是什么 HTTP 全称为"超文本传输协议". HTTP不仅仅能传输文本,还能传输图片,传输音频文件,传输其他的各种数据. 因此它广泛应用在日常开发的各种场景中. HTTP 往往是基于传输层的…...

OpenStack Yoga版安装笔记(十六)Openstack网络理解

0、前言 本文将以Openstack在Linux Bridge环境下的应用为例进行阐述。 1、Openstack抽象网络 OpenStack的抽象网络主要包括网络(network)、子网(subnet)、端口(port),路由器(rout…...

PEFT库和transformers库在NLP大模型中的使用和常用方法详解

PEFT(Parameter-Efficient Fine-Tuning)库是一个用于有效微调大型预训练语言模型的工具,尤其是在计算资源有限的情况下。它提供了一系列技术,旨在提高微调过程的效率和灵活性。以下是PEFT库的详细解读以及一些常用方法的总结&…...

静止坐标系和旋转坐标系变换的线性化,锁相环线性化通用推导

将笛卡尔坐标系的电压 [ U x , U y ] [U_x, U_y] [Ux​,Uy​] 通过旋转变换(由锁相环角度 θ P L L \theta_{PLL} θPLL​ 控制)转换为 dq 坐标系下的电压 [ U d , U q ] [U_d, U_q] [Ud​,Uq​]。这个公式是非线性的,因为它涉及到正弦和余弦函数。 图片中的推导过程主要…...

AI学习指南深度学习篇-学习率衰减的变体及扩展应用

AI学习指南深度学习篇 - 学习率衰减的变体及扩展应用 在深度学习的训练过程中,学习率的选择对模型的收敛速度和最终效果有重要影响。为了提升模型性能,学习率衰减(Learning Rate Decay)作为一种优化技术被广泛应用。本文将探讨多…...

成都睿明智科技有限公司真实可靠吗?

在这个日新月异的电商时代,抖音作为短视频与直播电商的佼佼者,正以前所未有的速度重塑着消费者的购物习惯。而在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司以其独到的眼光和专业的服务,成为了众多商家信赖的合作伙伴。今…...

力扣6~10题

题6(中等): 思路: 这个相较于前面只能是简单,个人认为,会print打印菱形都能搞这个,直接设置一个2阶数组就好了,只要注意位置变化就好了 python代码: def convert(self,…...

IntelliJ IDEA 2024.2 新特性概览

文章目录 1、重点特性:1.1 改进的 Spring Data JPA 支持1.2 改进的 cron 表达式支持1.3 使用 GraalJS 作为 HTTP 客户端的执行引擎1.4 更快的编码时间1.5 K2 模式下的 Kotlin 性能和稳定性改进 2、用户体验2.1 改进的全行代码补全2.2 新 UI 成为所有用户的默认界面2.3 Search E…...

C++基础(12)——初识list

目录 1.list的简介(引用自cplusplus官网) 2.list的相关使用 2.1有关list的定义 2.1.1方式一(构造某类型的空容器) 2.1.2方式二(构造n个val的容器) 2.1.3方式三(拷贝构造) 2.1.4…...

系统架构设计师论文《论NoSQL数据库技术及其应用》精选试读

论文真题 随着互联网web2.0网站的兴起,传统关系数据库在应对web2.0 网站,特别是超大规模和高并发的web2.0纯动态SNS网站上已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展…...

产品经理产出的原型设计 - 需求文档应该怎么制作?

需求文档,产品经理最终产出的文档,也是产品设计最终的表述形式。本次分享呢,就是介绍如何写好一份需求文档。 所有元件均可复用,可作为管理端原型设计模板,按照实际项目需求进行功能拓展。有需要的话可分享源文件。 …...

phenylalanine ammonia-lyase苯丙氨酸解氨酶PAL功能验证-文献精读61

Molecular cloning and characterization of three phenylalanine ammonia-lyase genes from Schisandra chinensis 五味子中三种苯丙氨酸解氨酶基因的分子克隆及特性分析 摘要 苯丙氨酸解氨酶(PAL)催化L-苯丙氨酸向反式肉桂酸的转化,是植物…...

柯桥生活口语学习之在化妆品店可以用到的韩语句子

화장품을 사고 싶어요. 我想买化妆品。 어떤 화장품을 원하세요? 您想买什么化妆品。 스킨로션을 찾고 있어요. 我想买化妆水,乳液。 피부 타입은 어떠세요? 您是什么皮肤类型? 민감성 피부예요. 我是敏感性皮肤。 평소에 쓰시는 제품은 뭐예…...

Ubuntu 安装 Docker Compose

安装Docker Compose # 删除现有的 docker-compose(如果存在) sudo rm -f /usr/local/bin/docker-compose ​ # 下载最新的 docker-compose 二进制文件 sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-…...

C++面试速通宝典——7

150. 数据库连接池的作用 数据库连接池的作用包括以下几个方面: 资源重用:连接池允许多个客户端共享有限的数据库连接,减少频繁创建和销毁连接的开销,从而提高资源的利用率。 统一的连接管理:连接池集中管理数据库连…...

毕业设计 大数据电影数据分析与可视化系统

文章目录 0 简介1 课题背景2 效果实现3 爬虫及实现4 Flask框架5 Ajax技术6 Echarts7 最后 0 简介 今天学长向大家介绍一个机器视觉的毕设项目 🚩基于大数据的电影数据分析与可视化系统 项目运行效果(视频): 毕业设计 大数据电影评论情感分析 &#x1…...

第三届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2024)

目录 重要信息 大会简介 组织单位 大会成员 征稿主题 会议日程 参会方式 重要信息 大会官网:www.icicml.org 大会时间:2024年11月22日-24日 大会地点:中国 深圳 大会简介 第三届图像处理、计算机视觉与机器学…...

OJ在线评测系统 微服务技术入门 单体项目改造为微服务 用Redis改造单机分布式锁登录

单体项目改造为微服务 什么是微服务 服务:提供某类功能的代码 微服务:专注于提供某类特定功能的代码 而不是把所有的代码放到同一个项目里 会把一个大的项目按照一定的功能逻辑进行划分 拆分成多个子模块 每个子模块可以独立运行 独立负责一类功能 …...

【机器学习】网络安全——异常检测与入侵防御系统

我的主页:2的n次方_ 随着全球互联网和数字基础设施的不断扩展,网络攻击的数量和复杂性都在显著增加。从传统的病毒和蠕虫攻击到现代复杂的高级持续性威胁(APT),网络攻击呈现出更加智能化和隐蔽化的趋势。面对这样的…...

【C语言】基础篇续

最大公约数HCF与最小公倍数LCM #include<stdio.h> int main(){int n1,n2,i,hcf,lcm;printf("Enter two numbers:");scanf("%d %d",&n1,&n2);for(i 1;i < n1 & i < n2;i){if(n1 % i 0 & n2 % i 0){hcf i;lcm (n1*n2)/hc…...

构建本地化个人助理系统:事件驱动架构与模块化设计实践

1. 项目概述&#xff1a;一个高度可定制的个人助理系统最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Personal-Assistant”&#xff0c;作者是idk-man69。光看名字&#xff0c;你可能会觉得这又是一个类似Siri或Google Assistant的语音助手&#xff0c;但点进去仔细研…...

用PCA给高维数据‘瘦身’:从鸢尾花数据集到人脸图像,实战对比降维效果与可视化技巧

用PCA给高维数据‘瘦身’&#xff1a;从鸢尾花数据集到人脸图像&#xff0c;实战对比降维效果与可视化技巧 当面对成百上千维的数据时&#xff0c;我们常会陷入"维度灾难"的困境——计算资源吃紧、模型训练缓慢&#xff0c;更糟的是噪声干扰导致分析结果失真。主成分…...

城通网盘解析工具终极指南:免费获取高速直连下载地址

城通网盘解析工具终极指南&#xff1a;免费获取高速直连下载地址 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否厌倦了城通网盘那令人抓狂的下载速度&#xff1f;每次下载文件都要面对漫长的等待…...

Taotoken用量看板如何帮助个人开发者管理月度预算

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken用量看板如何帮助个人开发者管理月度预算 对于独立工作的个人开发者而言&#xff0c;项目预算往往是决定技术选型与使用策…...

3分钟完成30分钟任务:词达人自动化助手终极指南

3分钟完成30分钟任务&#xff1a;词达人自动化助手终极指南 【免费下载链接】cdr 微信词达人&#xff0c;高正确率&#xff0c;高效简洁。支持班级任务及自选任务 项目地址: https://gitcode.com/gh_mirrors/cd/cdr 你是否厌倦了每周在词达人平台上花费数小时完成枯燥的…...

STM8硬件IIC驱动BNO055传感器避坑指南(附完整代码)

STM8硬件IIC驱动BNO055传感器实战解析与优化 BNO055作为一款集成了9轴传感器融合算法的智能芯片&#xff0c;能够直接输出姿态角数据&#xff0c;极大简化了嵌入式系统中姿态解算的复杂度。然而在实际应用中&#xff0c;许多开发者发现使用STM32等常见MCU的模拟IIC接口难以稳定…...

TPU柔性材料3D打印GoPro车载支架:从减震原理到实战拍摄全指南

1. 项目概述与设计思路我一直对第一人称视角&#xff08;FPV&#xff09;拍摄很着迷&#xff0c;尤其是那种能贴着地面、模拟小车视角疾驰的画面&#xff0c;动态感和沉浸感是手持拍摄无法比拟的。市面上的运动相机车载支架要么是硬连接&#xff0c;颠簸起来画面抖动得厉害&…...

去中心化AI市场BloomBee:技术架构、挑战与开发者实践指南

1. 项目概述&#xff1a;当AI遇见去中心化&#xff0c;BloomBee想解决什么&#xff1f;最近在AI和Web3的交叉领域&#xff0c;一个名为BloomBee的项目引起了我的注意。它的名字很有意思&#xff0c;“Bloom”是开花、繁荣的意思&#xff0c;“Bee”是蜜蜂&#xff0c;合起来像是…...

Ruby LLM框架:为Ruby开发者打造的大语言模型应用开发工具包

1. 项目概述&#xff1a;一个为Ruby语言量身打造的LLM应用框架如果你是一名Ruby开发者&#xff0c;最近被各种大语言模型&#xff08;LLM&#xff09;的应用搞得心痒痒&#xff0c;但看着满世界的Python库和框架感到无从下手&#xff0c;那么crmne/ruby_llm这个项目可能就是你在…...

基于意图与技能解耦的智能对话系统构建指南

1. 项目概述&#xff1a;一个意图与技能驱动的AI对话引擎最近在折腾AI应用开发&#xff0c;特别是对话型AI助手时&#xff0c;发现一个核心痛点&#xff1a;如何让AI不仅能理解用户说了什么&#xff08;意图识别&#xff09;&#xff0c;还能精准地调用相应的功能&#xff08;技…...