【JavaEE】认识HTTP协议
创始人
2024-05-23 01:11:44
0

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

🛰️🛰️系列专栏:【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的相关知识点我们下篇博客继续阐述,感谢您的一键三连!!

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...