网络原理之HTTP(3)

在网络原理中,现在我们更多的是掌握这些理论,等到真正设计网站的时候要用到的,而且这个面试与工作也是经常接触,应该细致的掌握他们。

上节课我们讲了这些内容,接下来我们继续。

在描述了响应结果之后,要判断是正确还是错误,当出错时,还要探究他的原因。

状态码就能完成这样的功能。

状态码

状态码都是HTTP标准的大佬们定义好的,具体如下表:

这些当然不用全部掌握,掌握几个常见的就可以了。

200

是最常见的状态码,表示成功。在fiddler可以看到这些。

404------Not Found

访问的资源没找到。

URL从IP定位到主机,再从port端口号定位到程序,然后从path定位到程序管理的资源。

然后path访问的资源在服务器上没有。

这些是不同程序的404:

当GetMapping这些配置路由,请求的路径与路由描述的路径不一致时,就会404,上面(百度、搜狗、哔哩哔哩)对404的包装。

403 Forbidden

访问被拒绝(没有权限)。比如在gitee中你的私人仓库,别人无法访问。

405 Method Not Allowed

虽然在网上找别人的网站出现405是很难找到的,但是在咱们自己开发的过程中,很容易出现405的,当请求的方法与服务器这边声明的注解不匹配,就会出现405。

500 Method Server Error

服务器出现了错误,服务器处理逻辑的代码中抛出异常,但是你没有catch到,就会出现这个。

504 Gateway Timeout

这是"网关",即网络的入口,在服务器资源紧张的时候就会触发,比如你在选课系统上,直接卡住了进不去。

302 Move temporary

重定向。

当你访问服务器A时,服务器A让你找B。

状态码整体有很多,结论就是:

当然,除此之外,418是彩蛋(不建议使用)

通过Java socket 构造HTTP请求

HTTP请求,本质上就是ICP请求,只需要构造字符串,符合HTTP协议的格式,写入到TCP socket中。

Postman这样的工具构造HTTP请求

这个程序能把你手动构造的请求全部自动转化为代码。

当然,这个在国内外都很常用的,是外国人研发的。

那么国内有没有呢?当然有,而且也很常用,我自己还下载了一个。

apifox

目前apifox在国内使用越来越多了,是国内团队搞的。

apifox可以直接写接口文档,也很方便进行测试与团队管理。

上述HTTP报文格式的内容,要重点掌握(面试高频考题),fiddler、Postman与apifox这些工具也要掌握。

https

https就是HTTP的基础上加密。

为了防止出现"运营商劫持"这种情况,之所以运营商能劫持,因为数据传输都是明文的加密,通过密文来传输的------明文加密得到密文,密文解密得到明文。

并且https还为防止黑客入侵作出了努力。

https用密钥来进行加密和解密

加密的方式有很多种,今天先介绍两种,一种叫"对称加密",另一种叫"非对称加密"。

对称加密

HTTPS之前是用明文传输的(就是HTTP),此时黑客很容易获取到传输的数据内容,也很容易进行篡改。

于是引入了对称加密。

对称密钥

客户端发送请求时,将数据使用key密钥(一段很长的字符串)进行加密(参考图中的密文),在到达右边的服务器之前,先到达黑客入侵的路由器,黑客如果不知道key是什么,就无法对数据进行解密,无法理解数据的含义,更不用说篡改了,到达服务器后,服务器使用key解密请求,构造响应(响应也需要key加密),然后又到达黑客入侵的路由器,黑客仍无法破解,最后密文响应返回到客户端。

但密钥本身是明文传输的,很可能会被黑客获取到,当黑客拿到了密钥,后续的加密操作就没有意义了。

于是就需要对密钥进行加密。

但如果仍然使用对称加密的方式,生成一个key2对称密钥,使用key2对key进行加密,key就可以密文传输给服务器了,但key2还是得传输给服务器,难道还要搞一个key3对key2加密吗?无论套多少层,总有一层需要明文传输,黑客入侵只是时间问题。

于是,就需要"非对称加密"

非对称加密

引入非对称加密就是为了解决密钥传输的安全性问题。

总体分为"公钥"和"私钥"。

如果说,公钥是一把锁(加密),那么私钥就是这把锁的钥匙(解密)。

这里,客户端持有公钥,服务器持有私钥,客户端发出请求时,在对称加密的基础上,密文请求用公钥加密,先到达被黑客入侵的路由器上,由于是公钥,可以公开,黑客很容易获取到,但他由于没有私钥,所以黑客不能对888888加密后的数据进行解密,此时数据到达服务器,服务器使用自己的私钥解密,就知道了对称密钥是多少了,然后再进行对称加密的过程。

那么直接使用非对称加密不行吗?

实际情况下:

对称加密,运算速度快,开销小,适合针对大量数据进行加密;非对称加密,运算速度慢,开销大,适合加密少量数据,加密大量数据十分耗时。

当然,上述方案仍然存在严重漏洞,我们下期继续探讨。

相关推荐
M ? A2 小时前
VuReact 1.6.2 发布,新一代 Vue 3 转 React 编译工具
前端·javascript·vue.js·react.js·面试·开源·vureact
Mem0rin2 小时前
[Java]排序
java·算法·排序算法
番茄去哪了2 小时前
JeecgBoot框架集成spring ai并进行同步调用异步调用模板
java·人工智能·spring
京师20万禁军教头2 小时前
30面向对象(中级)-super关键字
java
神奇小汤圆2 小时前
案例真题详解:Redis 主从复制~终于搞懂了
面试
TechWayfarer2 小时前
IP定位API接口怎么选?在线、离线还是混合?一套决策框架
网络·python·tcp/ip
positive_zpc2 小时前
计算机网络——数据链路层(二)
服务器·网络·计算机网络
551只玄猫2 小时前
【计算机网络 实验报告7】传输层两种协议的对比与TCP连接管理分析
网络·网络协议·计算机网络·课程设计·传输层·实验报告·tcp连接
likerhood2 小时前
Java 中的 `clone()` 与 `Cloneable` 接口详解
java·开发语言·python