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

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>客户端如何拿到公证机构的公钥,黑客是否能伪造公证机构的公钥

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

相关文章:

  • 仅需三张照片即可生成沉浸式3D购物体验?谷歌电商3D方案全解析
  • 信息系统项目管理师高级-软考高项案例分析备考指南(2023年案例分析)
  • 【通用智能体】Search Tools:Open Deep Research 项目实战指南
  • Ubuntu 安装 squid
  • 【MySQL】第五弹——表的CRUD进阶(三)聚合查询(上)
  • AI:人形机器人的应用场景以及商业化落地潜力分析
  • 神经网络与深度学习第六章--循环神经网络(理论)
  • 16 C 语言布尔类型与 sizeof 运算符详解:布尔类型的三种声明方式、执行时间、赋值规则
  • 业务系统上线为什么这么难
  • Level2.8蛇与海龟(游戏)
  • 浅谈前端架构设计与工程化
  • C语言_编译全攻略_从原理到实战的深度解析
  • 如何利用 Python 获取京东商品 SKU 信息接口详细说明
  • 深度学习模型基本框架
  • 谷歌浏览器(Google Chrome)136.0.7103.93便携增强版|Win中文|安装教程
  • 【Redis】零碎知识点(易忘 / 易错)总结回顾
  • C++学习:六个月从基础到就业——C++11/14:decltype关键字
  • Redis持久化机制详解:保障数据安全的关键策略
  • 深入理解 TypeScript 中的 unknown 类型:安全处理未知数据的最佳实践
  • C语言—再学习(结构体)
  • 广东缉捕1名象牙走私潜逃非洲“红通”逃犯
  • 美国务卿与以色列总理通话,讨论加沙局势
  • 竞彩湃|足总杯决赛或有冷门,德甲欧冠资格之争谁笑到最后
  • 时隔3年,持续近2小时,俄乌在土耳其谈成了什么?
  • 词条数量大幅扩充,《辞海》第八版启动编纂
  • 嫩黑线货物列车脱轨致1名路外人员死亡,3人被采取刑事强制措施