1、定义:HTTP
协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
2.1 认识url
2.2 urlencode和urldecode
urlencode是一种编码方式,urldecode是一种解码方式。客户端通过http协议发送请求时,会对请求进行urlencode编码。http使用urldecode解码。
3、 请求格式 响应格式
4、HTTP方法
5、HTTP响应的状态码
6、Cookie 和session
7、HTTP和HTTPS差别
HTTP:使用HTTP协议进行通信的双方,数据没有经过加密,数据在网络上是裸奔的。使用抓包工具fiddler可以捕捉到对应的数据。get方法提交的数据,请求时网页上都可以直接看到,post被抓包工具抓包后也能看到。故HTTP协议不具有保密性。
HTTPS:
HTTPS加密方式:
7.1、对称加密:双方共用一个密钥,两边通信同时使用这一个密钥加密解密
非对称加密:有公钥和私钥,公钥暴露,用公钥加密后,私钥来解密。
所有的密码学加密算法,都和cpu有关,只要算力足够强大,就可以破解一个加密的数据。强大的算力有很大的成本。安全的本质就是:破解的成本 >> 破解的收益。
加密的过程简单理解:
7.2、加密情况下的通信问题:
7.2.1、可以直接使用对称密钥进行加密解密吗?
不可以,使用加密算法,对方首先要知道你的密钥,那么就可能存在被第三方截获的情况,那么其就可以解密得到你的数据和服务器的数据
所以1、http一开始通信的时候绝对不可以使用对称密钥
7.2.2、想要做到安全通信可以使用2对公钥和私钥吗?可以,但是client和server必须提前内置公钥和私钥。但是这样效率没有对称密钥高。
所以,使用非对称密钥加密解密算法(密钥协商阶段) + 对称密钥加密解密算法(加密通信阶段)。
7.2.3、密钥协商阶段使用非对称密钥 + 加密通信阶段使用对称密钥存在的问题
正常情况下:
发生问题:中间人有非对称密钥,并可将client和server的通信进行修改
解决问题:本质上要确保对方发来的公钥是合法的,也就是对方的主机server必须合法
CA认证:权威机构对网站和服务器进行了合法的认证,颁发了证书:
client端在操作系统或者浏览器出厂的时候,内置了各种权威的根认机构的各种证书
证书内容如下:
server的公钥和私钥用来进行非对称密钥协商,CA的用来验证证书合法性
client端如何进行证书验证?如下
由于任何人都没有CA的私钥,所以无法形成CA的指纹,所以无人能够更改证书,也就无人能够中间攻击。
个人总结:中间人想要攻击别人必须将自己的公钥给客户端,然后手拿server端公钥,就变成了两头通吃。但是现在先认证证书了,证书上还带有server的公钥,所以中间人公钥给不到客户端。所以,想要攻击别人得修改证书,但是你又没有CA私钥,那么你修改后,客户端对证书进行认证的时候就发现错误了,所以根本无法有效攻击。