http基础

http

软件架构的分类

  • c/s架构,客户端,服务端之间的通信

  • b/s架构,浏览器,服务端之间的通信,这个是常见的了,微信小程序,就不需要下载app(专门的客户端了)就能直接的访问了

http请求流程

  • 访问http网页的流程
  1. 建立请求,客户端发送请求给服务器端(如果有访问控制策略的话,可能会被拒绝)

  2. 接收请求,服务单web软件读取请求的内容(报文)

  3. 处理请求,服务端根据请求资源从数据存储中返回资源并封装http协议

  4. 返回响应,将封装好的资源发送给客户端(浏览器),因此客户端可以得到响应并查看资源

  5. 记录日志,发送响应完成后,web服务器软件记录日志,也就是记录本次的事件

http的特点

  • 连接是没有状态的,每一次连接都是向服务器重新发送请求,服务器响应请求后结束连接(没有连接的保持,能够让服务器的资源更优,更快的相应请求)

    • 短连接,请求完成后,立即断开连接,有一个坏处就是,如果这个访问的时候资源很多的话,这样并发量特别大,占用资源了

    • 长连接,就是在网页资源特别多的情况下,对服务器发送的请求数就会更多,开启长连接,可以让多个资源通过一个tcp连接来完成传输

      • 不会立即关闭,下次连接走的就是上次的这个通道,连接复用
  • 单向连接,仅客户端发送请求连接服务器端,都是html放在浏览器上面的,只有客户端访问的时候才会看到,被动的连接

  • 明文传输(对于重要的用户数据可以用https进行加密)

http请求方法

  • 就是http可以做什么

  • get请求,直接获取网页的内容,url获取资源,访问nginx网页就是直接这种的get方法

  • post,传输数据,数据是不可见的,注册用户的时候传入给后端的数据库

  • head,查看网页的头部信息,服务器的版本,操作系统类型等

  • put 直接上传内容

  • delete 删除资源,但是现在的web应用中,禁止了,不是靠http删除

https加密访问

  • https保证了连接安全,数据的安全(数据都是加密传输的)

  • 加密的方式

    • 对称加密,指的是加密和解密使用的都是同一把密钥

    • 非对称加密,指的就是加密和解密使用的不同的密钥

对称加密

img

  • 流程:

    • 客户端发送一个数据,通过密钥进行加密发送给服务短

    • 服务端接收后,使用密钥进行解密数据,从而获取数据

  • 那么如果在这个密钥传输的过程汇总,被截取了,那么这个数据就能被获取到,数据的安全性不够

  • 优点:对数据的加解密都是非常的快

  • 缺点:不够安全

非对称加密

img

  • 通常就是服务端生成一个密钥对,公钥和私钥

  • 流程

    • 客户端发送请求给服务端

    • 服务端相应请求将公钥发送给客户端

    • 客户端将用户名和密码使用公钥加密后发送给服务端

    • 服务端通过这个私钥进行解密即可获取数据

    • 整个过程中,私钥是没有传输的,安全性比较高,但是消耗的资源比较的高

  • 使用公钥加密,使用私钥解密,私钥谁生成谁保管,私钥不会再网络中流通

  • 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中,非对称加密用来验证服务端身份,对称加密用来传递数据

ca流程

  • ca公钥和私钥,公钥给服务器,私钥进行客户端签名

  • 客户端发起连接请求,发送证书(包含用户公钥+ca签名)

  • 服务器验证证书,公钥验证,证书的有效期,用户

  • 如果证书通过,并就行挑战,服务端用客户端的公钥生成随机挑战码

  • 客户端使用私钥解密

  • 服务端验证解密正确,登录成功

posted @ 2025-10-19 16:58  w7nn  阅读(5)  评论(0)    收藏  举报