http
软件架构的分类
-
c/s架构,客户端,服务端之间的通信
-
b/s架构,浏览器,服务端之间的通信,这个是常见的了,微信小程序,就不需要下载app(专门的客户端了)就能直接的访问了
http请求流程
- 访问http网页的流程
-
建立请求,客户端发送请求给服务器端(如果有访问控制策略的话,可能会被拒绝)
-
接收请求,服务单web软件读取请求的内容(报文)
-
处理请求,服务端根据请求资源从数据存储中返回资源并封装http协议
-
返回响应,将封装好的资源发送给客户端(浏览器),因此客户端可以得到响应并查看资源
-
记录日志,发送响应完成后,web服务器软件记录日志,也就是记录本次的事件
http的特点
-
连接是没有状态的,每一次连接都是向服务器重新发送请求,服务器响应请求后结束连接(没有连接的保持,能够让服务器的资源更优,更快的相应请求)
-
短连接,请求完成后,立即断开连接,有一个坏处就是,如果这个访问的时候资源很多的话,这样并发量特别大,占用资源了
-
长连接,就是在网页资源特别多的情况下,对服务器发送的请求数就会更多,开启长连接,可以让多个资源通过一个tcp连接来完成传输
- 不会立即关闭,下次连接走的就是上次的这个通道,连接复用
-
-
单向连接,仅客户端发送请求连接服务器端,都是html放在浏览器上面的,只有客户端访问的时候才会看到,被动的连接
-
明文传输(对于重要的用户数据可以用https进行加密)
http请求方法
-
就是http可以做什么
-
get请求,直接获取网页的内容,url获取资源,访问nginx网页就是直接这种的get方法
-
post,传输数据,数据是不可见的,注册用户的时候传入给后端的数据库
-
head,查看网页的头部信息,服务器的版本,操作系统类型等
-
put 直接上传内容
-
delete 删除资源,但是现在的web应用中,禁止了,不是靠http删除
https加密访问
-
https保证了连接安全,数据的安全(数据都是加密传输的)
-
加密的方式
-
对称加密,指的是加密和解密使用的都是同一把密钥
-
非对称加密,指的就是加密和解密使用的不同的密钥
-
对称加密
-
流程:
-
客户端发送一个数据,通过密钥进行加密发送给服务短
-
服务端接收后,使用密钥进行解密数据,从而获取数据
-
-
那么如果在这个密钥传输的过程汇总,被截取了,那么这个数据就能被获取到,数据的安全性不够
-
优点:对数据的加解密都是非常的快
-
缺点:不够安全
非对称加密
-
通常就是服务端生成一个密钥对,公钥和私钥
-
流程
-
客户端发送请求给服务端
-
服务端相应请求将公钥发送给客户端
-
客户端将用户名和密码使用公钥加密后发送给服务端
-
服务端通过这个私钥进行解密即可获取数据
-
整个过程中,私钥是没有传输的,安全性比较高,但是消耗的资源比较的高
-
-
使用公钥加密,使用私钥解密,私钥谁生成谁保管,私钥不会再网络中流通
-
ssh登录就是这样的,2台服务器,一个服务器生成了公钥和私钥,我将这个私钥给另外一台机器,然后建立免密登录就能直接进行登录了
-
数字签名 使用私钥签名,通过公钥进行校验(解密的操作),通常的就是rpm包
ca签名
ca是什么
-
是一个权威机构,专门用来颁发ssl证书,证书可以用在程序,服务器,web服务器等各种需要认证的或者加密或者解密的场景中
-
比如访问百度,你怎么知道这个不是假的呢,ca认证的即可
-
ca在https场景中:专门用来对网站的公钥进行签名(网站的负责人提交CSR(CSR文件中包含了,公钥、网站的域名、开设的服务器的地址、申请人等。。。)申请信息给到权威机构,权威机构CA使用自己的私钥进行签名,签名后就会得到证书(证书是一个CRT的文件))
网站的证书
-
单域名证书: 也就是证书只对一个特定的域名进行签名 这是所有证书中最便宜的(大部分公有云网站和CA机构都提供免费申请一般是三个月有效)
-
多域名证书: 给多个特定的域名进行签名(这个是最具性价比)
-
通配符证书: 就是对example.com 所有子域名进行签名(这个是最贵的)
ca在https中的作用
-
就是验证服务端的身份,也就是判断服务端是不是冒充的
-
1.用户发起连接请求
-
2.服务端相应请求并发送证书
-
3.浏览器会根据这个这个证书信息,使用证书的中的ca公钥进行校验
-
4.如果检验得出信息与证书的中信息一致,则说明这个服务端是可靠的
-
5.如果校验通过,客户端使用服务端的公钥进行加密随机数并发送给服务端
-
6.服务端通过自己的私钥解密随机数,服务端使用随机数进行对称加密,加密数据发送给客户端
-
7.客户端通过本地的随机数解密得到数据
-
因此https中,非对称加密用来验证服务端身份,对称加密用来传递数据