HTTP(2)

一、HTTP

1.构造HTTP请求

1.为什么要构造HTTP请求?
  自己构造http请求,可以完全控制请求报文,不依赖浏览器的默认行为,用来测试服务器收到不同的请求后怎么响应。
  例如:发送请求参数为空、超长、特殊符号、中文,看服务器会不会崩溃、报错。
  少填某个必要选项,看服务器返回的错误提示。
2.构造http请求的方法:

1.通过form表单构造HTTP请求(写HTML)
2.通过Ajax构造HTTP请求(写JavaScript)
3.通过Java Socket构造HTTP请求(Java)
4.通过调用Java标准库的方法构造HTTP请求(Java)
5.通过postman构造HTTP请求

2.通过调用Java标准库的方法构造HTTP请求(Java)

new客户端

java 复制代码
HttpClient httpClient=HttpClient.newHttpClient();

工厂方法

上述new客户端的方法是调用静态 工厂方法。
静态工厂方法:在产品接口本身写静态方法,直接生成产品。不需要单独的工厂接口。

构造请求

java 复制代码
HttpRequest httpRequest=HttpRequest.newBuilder()
						.uri(URI.creat("https://www.baidu.com"))
						.GET()
						.header("User-Agent","122q")
						.build();
						

链式调用法:这几个方法返回的都是同一个HttpRequest对象

发送请求,接收响应

java 复制代码
HttpResponse httpResponse=httpClient.send(httpRequest,HttpResponse.BodyHandlers.ofString());

同步异步

上述send就是同步。
同步:发送请求后,当前线程卡在原地等结果。等不到结果就一直阻塞。
异步:发送请求后,立刻返回,线程不会卡住,马上执行后续代码。

2.手动测试构造HTTP请求

Postman构造HTTP请求

二、 HTTPS

1.明文

明文:传输的原始数据

2.密文

密文:加密后的数据

3.加密

把明文加密变为密文

4.解密

把密文解密得到明文

5.密钥

加密解密过程中,用到的一个特殊的数据。
密钥本质是一个二进制数据,在传输时会基于Base64编码为字符串。

6.对称加密

网络传输时,数据必须要进行加密传输。先引入了对称加密。
对称加密:客户端/服务器生成一个密钥,双方确认密钥之后,通信的加密解密都用这个密钥。
加密过程:

问题:如果路由器被黑客入侵,那么黑客获取到密钥,传输的数据就会被黑客获取!

所以我们要给密钥加密!
但是用一个对称密钥k1给另一个对称密钥k2加密,K1仍需要网络传输,K1一旦被窃听,整个加密体系崩溃,无法解决 密钥传递时的安全问题。
因此,引入了非对称加密

7.非对称加密

1.加密过程

加密过程:

非对称加密就是把对称加密和非对称加密结合起来进行密文传输

2.为什么要把对称和非对称结合起来进行密文传输?

对称加密:传输效率高,占用的系统资源少;
非对称加密:传输效率低,占用的系统资源多。

所以在非对称加密得到对称密钥后,之后的传输使用对称传输。

8.非对称传输的漏洞-中间人攻击

客户端不知道对方是服务器还是黑客
服务器不知道对方是客户端还是黑客

这里的问题是对称密钥key已泄露!后续的密文传输全都失效!
所以,引入证书来解决中间人攻击问题!

9.证书

证书本质上是一个字符串(结构化数据)

1.证书的结构

证书由5部分组成:
1.服务器公钥
2.网站域名
3.CA(certificate authority证书颁发机构)机构名称
4.证书有效期
5.CA用CA自己的私钥做的数字签名

2.签名

签名的本质是一个"加密过的校验和".

CA有一对自己的私钥和公钥。

签名的构成:把证书的前四个部分通过计算得到一个校验和,

然后CA由自己的私钥,把校验和加密,就得到了签名。

10.引入证书解决中间人攻击问题

CA的pub和pri不会被中间人攻击
因为CA的pub不在网络传输,预先存在客户端的操作系统中;
CA的pri绝对不能泄露。

11.结语

"永远不要失去发芽的心"

相关推荐
徐子童1 小时前
介绍MVCC机制
java·mysql·面试题·秋招·并发·mvcc
万联WANFLOW1 小时前
94%成交引爆美区:TikTok直播电商迎来高客单价时代
网络·业界资讯
Wang's Blog1 小时前
Java 项目实战: 外卖平台-启用禁用员工账号与Long精度丢失修复
java·服务器
xiaoye-duck1 小时前
《Linux 网络编程》深入理解数据链路层:从MAC帧到ARP协议的底层原理详解
linux·网络
开开心心就好1 小时前
安卓手写文字生成工具,多种纸张一直免费
网络·网络协议·tcp/ip·leetcode·智能手机·电脑·模拟退火算法
乌暮1 小时前
Java 抽象类与接口详解:半成品图纸 vs 能力合同
java·开发语言·后端·学习
一条泥憨鱼1 小时前
苍穹外卖【day12| 工作台,通过Apache POI导入/导出运营数据】
java·后端·苍穹外卖
心平气和量大福大1 小时前
android-权限
android·java
006_1 小时前
ruoyi-vue-plus项目 minio外网访问配置
java