JAVA EE_HTTP

为什么意气风发的少年,总是听不进去别人的劝解。

                                                                                                       ​​​​​​​        ​​​​​​​               ----------陳長生.


 ❀主页:陳長生.-CSDN博客❀

📕上一篇:JAVA EE_网络原理_数据链路层-CSDN博客


1.HTTP

1.1.HTTP是什么

        HTTP的中文名为超文本传输协议,是一种常用的应用层协议

1.2.HTTP工作过程

2.HTTP协议格式

        HTTP是一种文本协议的格式,我们可以通过一些抓包软件来查询响应的请求和响应信息,例如Fibble

2.1.抓包工具Fibbler

        可以把Fibbler理解为一个代理,他可以帮客户端进行操作。

举个栗子:

       假设有一个辣条工厂,这给厂做了很多辣条,当时单单靠老板自己卖不完,于是他找到了张三,李四,王五等人来帮他出售,这些人就可以称为代理,也就是正向代理。

       于此同时,购买的人需要买这些辣条,但是他们不想自己买,找了人来替买,,这些被找来的人也可以称为代理,也就是反向代理。

2.1.1.下载地址

Web Debugging Proxy and Troubleshooting Tools | Fiddler

2.1.2.配置环境

由于大部分网站都是https,但是fibbler中默认没显示https内容,所有我们需要手动勾选一下。

2.2.如何使用

2.2.1.删除

点击想要删除的包信息,在点击键盘上的DEL

2.2.2.查看请求/响应信息

点击想要查看的包,在右边寻找ROW属性值,上面一个就代表包的请求信息,而下面的就为包的请求信息

我们可以点击右下角的View in Notepad 查看文本内容的请求/响应内容

2.3.查看请求/响应内容

2.3.1.请求内容

  • 第一行为请求行
  • 从第二行开始到空一行的位置为请求报头
  • 空行代表请求头结束
  • 空行下面如果有内容那么就是请求正文(有的请求有,有的请求没有)

2.3.2.响应内容

  • 第一行为响应行
  • 从第二行开始到空一行的位置为响应报头
  • 空行代表响应头结束
  • 空行下面内容为响应正文

3.HTTP请求

3.1.URL

URL中最重要的为IP,端口号,路径,查询字符串。

        一般我们用网址来查找网页的时候,只需要输入www.xxxx.com(例如百度:www.baudu.com)即可了,那么上面的一串URL怎么还需要那么多属性,其实是被省略掉了。

  • 协议:可以省略,默认下URL前面都会加个http
  • 登录信息:可以省略,这一个值是运用在几十年前的,现在已经不在URL中显示了
  • 端口号:可以省略,如果没有给端口号赋值的话,会默认给80端口号,如果是https的话会给443端口号
  • 带层次的文件路径:可以省略
  • 查询字符串:可以省略
  • 片段标识符:可以省略

3.1.1.键值对

        在上面一串URL中,问号后面的查询字符串那段可以称为键值对,键值对是由程序员自己定义的,意思一般只有自己懂。

以百度为例,红色框中的内容都为键值对

3.2.GTE

表示获取数据,位于请求行的首位

3.2.1.出现情况

  • 直接在浏览器输入URL连接
  • 点击超文本传输连接
  • 加载图片

3.2.2.特点

  • 一般没有body内容
  • 要想传输数据要通过query string

3.3.POST

表示上传数据,位于请求行的首位

3.3.1.出现情况

  • 用户登录
  • 上传资源

3.2.2.特点

  • 有body,一般传输数据直接使用body

3.4.GET与POST

3.4.1.区别

  • GET用于获取,POST用于上传
  • GET一般没有body,要想传输数据需要通过query string
  • POST直接通过body传输

3.4.2.判别网络流言

  • 1流言:POST比GET更安全,原因是POST的内容是在body里,而GET的内容是在URL上;
  • 1解析:错误,谈到安全那肯定得想到加密,如果POST和GET的内容都没有加密,那么黑客通过抓包,不管是POST还是GET,都可以获取到其中的信息。
  • ---------------------------------------------------------------------------------------------------------------------------
  • 2流言:POST请求的数据量比GET请求的数据量大
  • 2解析:错误,这是在很早之前的浏览器上的限制了,当时的技术并不发达,传输的自然就少了,随着技术的不断更新换代,这种说法早已被淘汰了,而且http中并没有限制请求数据的大小。
  • ---------------------------------------------------------------------------------------------------------------------------
  • 3流言:GET官方建议幂相等,POST则没有
  • 3解析:差不多是对的,官方建议是建议,但是并没有强制实施,所以程序员可以不遵守该规则。
  • 幂相等:请求一定,响应一定,假设申请一个百度的浏览器,那么返回的界面也是百度。 

3.5.请求报头

以下是一些常见的报头类型

3.5.1.Host

        表示当前请求报头的域名和端口号

3.5.2.Content-Length

        表示当前请求正文的长度(单位:字节)

3.5.3.User-Agent

        表示当前客户端是什么类型(爬虫/浏览器/客户端)

        也可以根据当前使用的机子(PC端/手机端)显示合适的页面

3.5.4.content-type

        表示当前的数据格式

3.5.5.Referer

        表示当前的请求数据是有哪个网址跳转的

3.5.6.Cookie

以键值对的形式表示(使用“;”分割多个键值对,“=”分割键和值)

cookie本质上是浏览器在本地存储数据的一种形式

        众所周知,在浏览器中向服务器访问是有风险的,但是浏览器会提供一个方案,那就是cookie,cookie中的内容,其实是服务器给浏览器的,浏览器会把cookie保存在本地硬盘上,为了安全,不允许网站随意访问硬盘,而是只是按照“键值对”方式来存储简单数据。

        cookie的作用就是保存一些不怎么重要的,但是有用的信息,例如“上次访问时间”,同时它也是一种保护用户身份的表示。

关于sessionld:
        sessionld是会话id,用来标识当前浏览器的身份。

举个栗子:

        长生是A公司厂库的管理员,它有一张身份卡,这张身份卡中只记录了长生这个人,长生可以用这张卡自由进出A公司厂库的各个地方,但是他要是想去B公司厂库里乱逛,那肯定是不行的。

         回过来,sessionld就代表着身份卡,记录着长生这个人,至于他的身高年龄等各属性是由cookid来存储的。

4.HTTP请求

4.1.状态码

4.1.1.200开头

表示响应正常

200:访问成功

4.1.2.300开头

重定向

指客户端访问一个URL时,它自动跳转到另一个URL

301:永久重定向

例如:网站 http://aaa.com 的http升级,永久变为 https://aaa.com

302:临时重定向

例如:登录一些网站后,自动跳转到个人主页

4.1.3.400开头

表示客户端出现问题

404:客户端要访问的资源不存在

403:访问被拒绝(没有权限)

4.1.4.500开头

表示服务端出现问题

500:服务器临时故障

502:网关没有从服务器上获取有效响应

504:当处理的数据量过大时或网络延时以及服务堵塞,就可能会造成超时异常

5.HTTPS

5.1.HTTPS是什么

        HTTPS是根据HTTP协议为基础进行一个升级,使其更安全

5.2.加密是什么

        明文:任何人都能看得懂的

        密文:明文通过加密,得到密文

        假设小美提前跟长生说,都会把你看到的单词内容,从第二个单词开始,把每个字母的前一个字母或数字都去掉再读,过了一会小美写好了小纸条(TI ULEOAV0E 9Yooku),让旁边的同学传给了长生,传纸条的同学都瞄了一眼内容,但是看不懂,传到长生那的时候,长生按小美之前说的话开始解读字条内容,解读到(I LOVE You)~~   

        上诉中,小美跟长生将的话就为密钥,而小美所做的就为加密,其他人都看不懂,只有她和长生能看的懂。   

5.3.HTTPS的工作原理

        由于再互联网上明文传输信息很危险,所以数据都会进行加密传输

        而加密的方式有很多,可以分为“对称加密”和“非对称加密”

5.3.1.对称加密        

        对称加密就是使用同一个密钥进行传输

        

使用密文传输,黑客即使截获数据也不知道内容,但真的是这样吗?

        如果有多台客户端与服务器进行数据传输,那么多台的客户端的密钥肯定都是不相同的(如果都是相同的密钥,如果黑客直到了其中一台客户端的密钥,其他的客户端也就都遭殃了),既然是不同的密钥,那么服务器要维护那么多密钥是很麻烦的,所以比较理想的做法就是在传输前告知服务器密钥是什么

       但是,如果在传输前告知服务器本次传输的密钥是什么,由于该条信息是明文传输的,所以黑客也能知道密钥是什么,那之后传输的数据黑客也能通过密钥破解,就跟明文传输没什么区别的,所以https引用了“非对称加密”       

5.3.2.非对称加密

        非对称加密就是使用两把钥,公钥(pub1)和私钥(pri1)

        公钥:所有人都拿的到,可以理解为锁

        私钥:只有之间有,可以理解为钥匙

        客户端通过公钥pub1将密钥进行加密传输给服务端,服务端根据私钥进行解密得到密钥,之后就使用对称加密进行传输

为什么使用对称加密:

        因为非对称加密的运算速度是非常慢的,于是就需要非对称加密和对称加密联合使用

5.3.3.中间人攻击

        但是即使是使用了非对称加密,黑客还是有办法进行攻击,就比如“中间人攻击”

        由于公钥是服务端发布给客户端的,所以黑客也能够拿到,如果黑客截获信息,篡改公钥,客户端就收到黑客的公钥,使用黑客的公钥进行数据传输,那么黑客就能根据自己的公钥破解该条信息

5.3.4.证书

        为了防止这种“中间人攻击”的出现,于是https就引用了证书

        证书是在计算机出厂的时候就在操作系统里的,里面有一系列的信息

        证书的有效期

        证书的所有者

        证书对应服务器的地址/域名

        数字签名

        开启一段会话的时候,服务器会向公证机构申请证书,证书中的各种信息就会以字符串的形式表示出来,当数据发送到客户端的时候,客户端就会判断该证书是否为真。

5.3.5.数字签名     

        公证机构发布证书后,会对该证书生成校验和

        公证机构会拿着自己生成的非对称密钥对(pbu2/pri2),使用其中的私钥pri3对校验和进行加密,就得到了数字签名

数字签名的验证:

        客户端拿到证书后,会对该证书进行校验和计算,拿到check1,然后再时候公证机构的pub2对证书中的数字签名进行解密,得到check2,如果相等,则信任该信息,如果黑客再其中篡改了证书中的内容,则不会相等,浏览器就会对用户进行提示“该网站存在风险”

黑客是否能通过其他操作进行攻击:

1>能否篡改公钥

答:不能,一旦篡改了,check1和check2就对应不上

2>能否直接做一个证书

答:不能,证书中包含了服务器的地址/渔民,浏览器很容易识别出来

3>能否在篡改公钥的同时,将数字签名也改了

答:不能,数字签名是通过私钥加密的,黑客拿不到

4>客户端如何拿到公证机构的公钥,黑客是否能伪造公证机构的公钥

答:公证机构的公钥不是从网络上获得的,而是内置在操作系统里,所以黑客是伪造不了的

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

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

相关文章

存储扇区分配表:NAND Flash与SD NAND(贴片式SD卡)的架构差异

NAND Flash 和 SD 卡(SD NAND)的存储扇区分配表在原理上有相似之处,但由于二者的结构和应用场景不同,也存在一些差异。 相同点: 基本功能:NAND Flash 和 SD 卡(SD NAND)的存储扇区分…

界面控件DevExpress WinForms中文教程:Banded Grid View - API

DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…

4G物联网模块实现废气处理全流程数据可视化监控配置

一、项目背景 随着工业化进程的加速,工业废气的排放对环境造成了严重影响,废气处理厂应运而生。然而,废气处理厂中的设备众多且分散,传统的人工巡检和数据记录方式效率低下,难以及时发现问题。为了实现对废气处理设备…

Kubernetes控制平面组件:Kubelet详解(四):gRPC 与 CRI gRPC实现

云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…

【数据结构】线性表--队列

【数据结构】线性表--队列 一.什么是队列二.队列的实现1.队列结构定义:2.队列初始化函数:3.队列销毁函数:4.入队列函数(尾插):5.出队列函数(头删):6.取队头元素&#xff…

C语言—再学习(结构体)

一、建立结构体 用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体。 struct Student { int num; //学号char name[20]; //名字为字符串char sex; //性别int age; //年纪float score; //分数char addr[30]; 地址为字符…

【前端基础】10、CSS的伪元素(::first-line、::first-letter、::before、::after)【注:极简描述】

一、伪元素的作用 选取某个特定的元素。 二、::first-line、::first-letter ::first-line:针对首行文本设置属性 ::first-letter:针对首字母设置属性 三、::before、::after 在一个元素之前(::before)或者之后(…

系统漏洞扫描服务:维护网络安全的关键与服务原理?

系统漏洞扫描服务是维护网络安全的关键措施,能够迅速发现系统中的潜在风险,有效预防可能的风险和损失。面对网络攻击手段的日益复杂化,这一服务的重要性日益显著。 服务原理 系统漏洞扫描服务犹如一名恪尽职守的安全守护者。它运用各类扫描…

从 Excel 到 Data.olllo:数据分析师的提效之路

背景:Excel 的能力边界 对许多数据分析师而言,Excel 是入门数据处理的第一工具。然而,随着业务数据量的增长,Excel 的一些固有限制逐渐显现: 操作容易出错,难以审计; 打开或操作百万行数据时&…

框架的源码理解——V3中的ref和reactive

最近在研究各个框架的源码,从源码角度去理解 vue3 的 reactive 和 ref API,记录下研究的成果 reactive 首先,reactive() 的参数必须是一个对象,返回值是一个 Proxy 对象,具有响应性。如果参数不是对象类型&#xff0…

能源数字化转型关键引擎:Profinet转Modbus TCP网关驱动设备协同升级

在工业自动化的世界中,ModbusTCP和Profinet是两个非常重要的通讯协议。ModbusTCP以其开放性和易用性,被广泛应用于各种工业设备中;而Profinet则以其高效性和实时性,成为了众多高端设备的首选。然而,由于这两种协议的差…

【ant design】ant-design-vue 4.0实现主题色切换

官网&#xff1a;Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 我图方便&#xff0c;直接在 app.vue 中加入的 <div class"app-content" v-bind:class"appOption.appContentClass"><a-config-provider…

一个指令,让任意 AI 快速生成思维导图

大家好&#xff0c;我是安仔&#xff0c;一个每天都在压榨 AI 的躺平打工人。 今天分享一个 AI 办公小技巧&#xff0c;让你用一个指令让 AI 生成思维导图。 DeepSeek、Kimi、豆包都可以哈 &#xff5e; KimiXMind 安仔经常用 XMind 来绘制思维导图&#xff0c;但是 AI 是没…

便捷的批量打印工具推荐

软件介绍 本文介绍的软件是一款批量打印软件&#xff0c;名为PrintConductor。 软件功能强大 这款批量打印软件功能极为强大&#xff0c;它不仅能够批量打印各种不同格式的文件&#xff0c;还可以直接打印整个文件夹。 初次使用设置 第一次打开这款软件时&#xff0c;要记…

USRP 射频信号 采集 回放 系统

USRP 射频信号采集回放系统 也可以叫做&#xff1a; 利用宽带RF录制和回放系统实现6G技术研究超宽带射频信号采集回放系统使用NI USRP平台实现射频信号录制和回放操作演示USRP也能实现多通道宽带信号流盘回放了&#xff01; 对于最简单的实现方法就是使用LabVIEW进行实现 采…

MFC 调用海康相机进行软触发

初始化相机类文件 #pragma once #include "MvCameraControl.h" class CMvCamera { public:CMvCamera();~CMvCamera();//初始化相机int InitCamera();int SaveCurrentImage(CString filePath);//关闭相机void CloseCamera();//设置int SetEnumValue(IN const char* s…

虚拟主播肖像权保护,数字时代的法律博弈

首席数据官高鹏律师团队 在虚拟主播行业蓬勃发展的表象之下&#xff0c;潜藏着一场关乎法律边界的隐形战争。当一位虚拟偶像的3D模型被非法拆解、面部数据被批量复制&#xff0c;运营方惊讶地发现——传统的肖像权保护体系&#xff0c;竟难以完全覆盖这具由代码与数据构成的“…

ArrayList-集合使用

自动扩容&#xff0c;集合的长度可以变化&#xff0c;而数组长度不变&#xff0c;集合更加灵活。 集合只能存引用数据类型&#xff0c;不能直接存基本数据类型&#xff0c;除非包装 ArrayList会拿[]展示数据

鸿蒙ArkUI体验:Hexo博客客户端开发心得

最近部门也在跟进鸿蒙平台的业务开发&#xff0c;自己主要是做 Android 开发&#xff0c;主要使用 Kotlin/Java 语言。&#xff0c;需要对新的开发平台和开发模式进行学习&#xff0c;在业余时间开了个项目练手&#xff0c;做了个基于 Hexo 博客内容开发的App。鸿蒙主要使用Ark…

【和春笋一起学C++】(十四)指针与const

将const用于指针&#xff0c;有两种情况&#xff1a; const int *pt; int * const pt; 目录 1. const int *pt 2. int * const pt 3. 扩展 1. const int *pt 首先看第一种情况&#xff0c;const在int的前面&#xff0c;有如下语句&#xff1a; int peoples12&#xff1…