【JavaEE】认识HTTP协议

news2024/11/16 10:26:28

✨哈喽,进来的小伙伴们,你们好耶!✨

🛰️🛰️系列专栏:【JavaEE】

✈️✈️本篇内容:认识HTTP协议、请求。

🚀🚀代码存放仓库github:JavaEE仓库!

⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,星夜启程!

目录

什么是HTTP协议?

http的应用场景有哪些?

什么是协议格式?

如何看到协议格式?

 为什么要使用抓包工具?

认识http请求;

http响应;

认识URL;

URL encode/decode;


什么是HTTP协议?

HTTP ( 全称为 " 超文本传输协议 ") 是一种应用非常广泛的 应用层协议
所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些
其他的资源, 比如图片, 视频, 音频等二进制的数据。
在计算机网络中,网络协议有很多,其中我们学习过的有IP、TCP、UDP等,其中还有一个应用非常广的协议叫做http协议,这也是后端领域以后最常用的协议了。
其中http协议处在TCP/IP五层协议栈的应用层,http在传输层是基于tcp的。
传输层协议:主要关注的是 端对端 之间的数据传输.TCP,重点关注的是可靠传输用层协议,则是站在程序应用的角度,要对传输的数据,来进行具体的使用。

应用层协议:很多时候,是程序员自定制的;根据实际的需求场景,来设计协议。

http的应用场景有哪些?

这个就非常广泛了,比如你打开一个网站,比如百度,或者打开一个手机应用APP,这个时候就用到了http。

什么是协议格式?

即数据具体是怎么组织的。

我们之前学习过UDP:报头(源端口,目的端口,长度,校验和)+载荷。

那么TCP/IP这三者都属于二进制协议,需要理解二进制的bit位;而http则是一个文本格式的协议,即不需要去理解具体的二进制位,只是理解文本的格式即可,即我们肉眼即可观察明白。

如何看到协议格式?

这里可以通过 Chrome 开发者工具或者 Fiddler 抓包 , 分析 HTTP 请求 / 响应的
细节;那么博主推荐使用fiddler抓包来获取到具体的http交互过程。
下载地址 :Fiddler下载链接!
进去之后是下面这个界面:

 为什么要使用抓包工具?

首先来认识一下代理的作用:

即请求和响应,都是要路过代理的。
这个时候在代理上,就很容易获取到 请求 和 响应 的详细内容;因此,抓包工具就是一个代理;抓包工具就很容易的能够获取到,传输过程中的网络上的详细数据。

进去fiddler官网之后,我们选择下面图片箭头指向的这个Fiddler Classic

 安装解压打开后是这样的界面,fiddler左侧是一个列表,显示到当前抓到的所有http/HTTPS的数据报;

 当我们选择左侧列表的某个条目并且双击进入的时候,右侧会显示这个条目的详细信息;

 这个标签页的选项,就表示了当前使用啥样的格式来显示 HTTP 请求;咱们用的最多的就是 Raw 这个选项;
选择 Raw 看到的就是 HTTP 请求数据的本体;选择其他的选项相当于 Fiddler 对数据进行了一些加工 调整了格式;

我们可以点击这里的view in notepad查看原始数据;

 结果:

 那么有的同学可能会出现以下情况;

 这是因为Fiddler 刚安装好的时候,默认没有启用 HTTPS;如果你抓到了 HTTPS 的包,就会出现类似的情况;当下网络上的大部分的网站都是 HTTPS;如果不开启 HTTPS,其实就基本没啥可抓的,所以我们可以允许fiddler启动https;

首先我们打开fiddler,按照下图的箭头依次勾选,然后点击OK;

 可能会出现fiddler要求安装xx证书,一定要点是!!

认识http请求;

请求格式:

我们通过fiddler抓包便可以获取到;

 注意请求分成四个部分;

1、请求行(首行)包含三个部分

a、http方法:方法大致描述了这个请求的目的,上面那张图片显示的是get方法;即想从服务器获取到某个东西;

b、URL:描述了要访问的网络资源的位置具体在哪;

c、版本号:HTTP/1.1表示当前使用的http的版本是1.1;(1.1是当下的主流版本,还可能是1.0/2/3)

2、请求头(header)包含了很多行

注意这里每一行都是一个键值对;键值对?不就是那个…… 相信大家都已经很熟悉了;那么这里的键值对的数目是不固定的,不同的键值对表示不同的含义;

3、空行

相当于请求头结束的标记!类似于链表的null一样。

4、请求正文(body)不一定有,可选;

Fiddler使用技巧;

我们在使用fiddler的时候,经常看到左侧会抓取很多的包,我们不知道如何选择哪一个是我们需要的,这里教大家一个技巧,我们可以选中左侧的某一行,然后Ctrl+A全选,点电脑上的Del键,把抓包信息全部删除,再去进行我们需要的操作,然后再点击到fiddler这里,即可观察到我们一个操作对应的fiddler抓包信息;

这里我们演示一个gitee登录会触发的抓包情况;

1、首先我们打开gitee的登录界面,点击登录;

 2、这时候切到fiddler的界面;

可以看到我们一个登录操作对应的抓包信息;

http响应;

响应格式:

那么我们刚才学习了http的请求操作,这里来认识一下响应;响应大致和http请求的格式差不多,还是以刚才的gitee登录来展示;

step1:抓取gitee登录的信息,首先点击raw,然后点击下面那个按钮,查看具体数据;

step2:打开之后的界面;

 对照上面的响应格式,从上到下依次是首行、响应头;空行是响应头的结束标记;空行以下是响应正文。

1、首行,包含了3个部分

a、版本号——http1.1

b、200 状态码,描述了这个响应表示一个成功的还是失败的;这里200表示成功;

c、OK状态码的描述,通过一个/组简单的单词,来描述当前状态码的含义;

2、响应头(header)

也是键值对结构,依然是每个键值对占一行,每个键和值之间使用空格来分割;

3、空行

表示响应头结束的标记;

4、响应正文(body)

服务器返回给客户端的数据,这里的数据可能是不同的格式,最常见的是html形式。

认识URL;

平时我们俗称的 " 网址 " 其实就是说的 URL,含义就是网络上唯一资源地址符;即明确哪个主机,又要明确主机上哪个资源;
这里我们假如在百度搜索西瓜来举例;
1、首先打开百度,输入西瓜,然后随便找个链接点进去;

 2、可以看到上面一栏里面出现了一大串字符;(这里我给截图下来的方便观察)

a、路径就是 /

b、/ 后面这一大片都是查询字符串;

c、开头的 http/https描述了这个URL路径是给哪个协议来使用的;

URL 总结:
对于 URL 来说,里面的结构看起来比较复杂,其实最重要的,和开发最关系紧密的,主要就是四个部分:

1、ip 地址/域名;
2、端口号(常省略);
3、带层次结构的路径;
4、query string 查询字符串;

URL encode/decode;

为什么需要转义?

/ ? : 等这样的字符 , 已经被 url 当做特殊意义理解了 . 因此这些字符不能随意出现 .
比如 , 某个参数中需要带有这些特殊字符 , 就必须先对特殊字符进行转义;

转义的规则;

将需要转码的字符转为 16 进制,然后从右到左,取 4 ( 不足 4 位直接处理 ) ,每 2 位做一
位,前面加上 % ,编码成 %XY 格式;
举例说明:
当我们在百度中搜索C++的时候,观察URL中的query string;

那么小伙伴们可能就要问了,这个%2B%2B的在干嘛?骂人嘛?那肯定不是!

这个键值对 %2B%2B 其实就是通过URL encode转义之后得到的结果;字符 + 的ASCII的十六进制的表示就是2B,按照URL encode转义的规则在这个字符前加上%,就是现在这样的 %2B%2B

OK,今天就到这里啦,关于http的相关知识点我们下篇博客继续阐述,感谢您的一键三连!!

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

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

相关文章

Golang 提取视频中音频,存为MP3格式 | Golang工具

目录 前言 环境依赖 代码 总结 前言 本文提供将视频中音频提取出来存为mp3格式,一如既往的实用主义。 主要也是学习一下golang使用ffmpeg工具的方式。 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:windows ffmpeg安装部署_阿良的博…

Delphi复制HID、ID门禁卡源码

T5557卡是美国Atmel公司生产的多功能非接触式射频芯片卡,属于125KHz的低频卡,在国内有广大的应用市场,如很多酒店的门禁卡都是使用T5557卡。该芯片共有330bit(比特)的EPROM(分布为10个区块, 每个区块33bit)。0页的块0是被保留用于设置T5557操…

模电学习3. MCU接三极管开关电路简单分析

模电学习3. MCU接三极管开关电路简单分析一、说明二、使用NPN型三极管工作状态分析1. 饱和状态基本要求2. 计算限流电阻R23. IbI_bIb​4. 计算 RbR_bRb​5. 下拉电阻三、使用PNP型三极管工作状态分析1. 示例原理图2. IO输出低电平3. IO输出高电平一、说明 本文演示了一个使用M…

adb调试工具-笔记

adb调试工具adb工具可以在电脑通过终端命令操作安卓手机/模拟器命令:adb shell dumpsys window windows | findstr mFocusedApp该命令是查找程序的包名和界面名让我们打开夜神模拟器,并打开设置界面然后在电脑打开命令行,输入上述查询命令传送…

小红书数据分析网站:2023年如何产出爆文(纯干货分享)

导语: 不懂小红书最近火热的赛道、总是错过爆款打造的节奏……2023年了,相信不少人会发现关于小红书营销种草投放,入门容易,做好难。本文将借助第三方工具为品牌锚定赛道,寻找新风向。 1、行业流量大盘 —— 实时掌握…

Android 进程保活(一)

最近公司项目需求,需要给应用加入进程保活。 这里简述一下需求,由于App应用对接了蓝牙接收实时数据,并且数据量很大; 用户在操作App获取实时数据的时候,不可能一直看着手机屏幕, 这时候手机一般会有黑屏或者…

freertos学习之路1-裸机和rtos的区别

写在最前 由于工作需要,需要开始学习freertos的相关知识,本专题主要记录freertos的相关内容 参考: https://www.bilibili.com/video/BV19g411p7UT 正点原子视频 1. 裸机和rtos的多任务处理 试想一种场景,我们正在打游戏&#xff0…

java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之ElasticSearch【ElasticSearch的概念、关于文档、索引的命令】~整起

ElasticSearch一、ElasticSearch基本概念1.ElasticSearch是什么?从哪来、来干啥?2.ElasticSearch与Solr的对比与选型:3.ES核心概念及相关操作4.ELK:拆箱即用的技术,解压完成就能用5.IK分词器6.ElasticSearch与SpringBo…

字节跳动青训营--前端day6

文章目录前言一、React的历史和应用二、React的设计思路1. ui编程痛点 & 对React的期望2. 组件化3.状态归属问题4. 生命周期三、React(hooks)1.Virtual DOM(虚拟 DOM):2. diff算法四、React状态管理库五、应用级框架科普前言 仅以此文章…

spark 内存管理机制与相关参数调优

spark 内存管理 文章目录spark 内存管理spark 1.6 内存管理机制spark 2.0 内存管理机制spark 3.3.1 官方文档spark 内存相关参数调优spark 1.6 内存管理机制 https://0x0fff.com/spark-memory-management 统一内存管理 Spark 1.6 之后引入的统一内存管理机制,与静…

SpringbootAdmin:轻量级的Springboot监控组件,用过的都说好

简介 Springboot Admin是一个管理和监控Springboot项目的组件,分为服务端和客户端,两端通过http进行通信。由于其轻量级的特性,所以特别适合中小项目使用。 其效果图如下: 服务端配置 1,引入Springboot admin和Spri…

3.5 异常

1.概述 异常是一些用来封装错误信息的对象 它由异常的类型、提示信息、报错的行号提示三部分组成 2.异常的继承结构 3.异常的处理方式 当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出 当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常 大…

简单使用OpenGauss数据库

1 参考网站 # OpenGauss官网 https://opengauss.org/zh/2 Docker安装OpenGauss 下载OpenGauss docker pull enmotech/opengauss:3.0.0安装OpenGauss 容器参数说明: GS_PASSWORD:必须设置该参数,该参数设置了openGauss数据库的超级用户omm…

LeetCode 刷题系列 -- 1110. 删点成林

给出二叉树的根节点 root,树上每个节点都有一个不同的值。如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。返回森林中的每棵树。你可以按任意顺序组织答案。示…

多域(跨域)计算「起势」,智能汽车赛道迎来新拐点

多域(跨域)计算平台正在成为新一轮市场争夺战的焦点。 就在今年CES展上,采埃孚推出多域功能版本的ProAI高性能计算平台,可以在不同的单板上支持基于域的ADAS、信息娱乐以及车身控制功能,并适配不同供应商的系统芯片以及…

前后端分离的陷阱

不管你设计的系统架构是怎么样,最后都是你的组织内的沟通结构胜出。这个观点一直在组织内不断地被证明,但也不断地被忽略。 前后端分离的利与弊 近几年,随着微服务架构风格的引入、前后端生态的快速发展、多端产品化的出现,前后…

vue前端框架应用案例(三)实现简单的echarts柱状图表

目录前端效果展示项目架构Seller.vueSellerPage.vueindex.jsApp.vuemain.jsindex.html后端源程序接口测试本博客内容参考黑马课程,详细信息请参考以下网址 Bilibili官方黑马课程:【echarts数据可视化项目】 前端 效果展示 项目架构 Seller.vue 该部分…

点云双边滤波

双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、局部的特点。双边滤波器的好处是可以做边缘保…

rootlogger 和 logger的关系

你是不是经常看到日志框架&#xff08;log4j、log4j2、logback等&#xff09;配置文件中有类似配置&#xff0c;但是始终搞不清楚啥意思&#xff1f;<root level"INFO"><appender-ref ref"CONSOLE" /><appender-ref ref"FILE" /&…

3.9.1Cache的基本概念和原理

文章目录一、引子二、工作原理三、局部性原理&#xff08;1&#xff09;空间局部性&#xff08;2&#xff09;时间局部性&#xff08;3&#xff09;总结四、性能分析&#xff08;1&#xff09;方案一&#xff08;2&#xff09;方案二&#xff08;3&#xff09;考题五、块&#…