zoukankan      html  css  js  c++  java
  • Tomcat内核1

    一、通信协议


     

    HTTP是Hyper Text Transfer Protoco(l超文本传输协议)的缩写

    HTTP是一个应用层协议,它由请求和响应组成,是一个标准的B/S模型

    HTTP是一个无状态的协议,即同一个客户端上,此次请求与上一次请求是没有对应关系的

    HTTPS本质也是HTTP,只是在HTTP上增加了一个SSL或TLS协议层

    SSL或TLS提供加解密机制

     

    1.2 SSL和TLS的原理

    传统http传输的风险:
    1)窃听风险:第三方可以获知通信内容

    2)篡改风险:第三方可以修改通信内容

    3)冒充风险:第三方可以冒充他人身份参与通信

    SSL/TLS解决以上三个问题

    1)所有信息都是加密传播,第三方无法监听

    2)配备身份证书,防止身份被冒充

    3)防篡改服务,利用Hash算法对消息进行签名,通过验证签名保证通信内容不被篡改

    1.3 常见的加解密算法

    对称加密:密钥只有一个,加密、解密都是这个密码,加解密速度快,典型的对称加密算法有DES、AES、RC4等

    非对称加密:密钥成对出现,分别为公钥与私钥,从公钥无法推知私钥,反之,从私钥也不能推知公钥。加密、解密使用不同的密钥

    公钥加密需要私钥解密,反之,私钥加密需要公钥解密。非对称加密速度较慢,典型的非对称加密算法有RSA、DSA、DSS等。

    Hash算法:这是一种不可逆的算法,它常用于验证数据的完整性

    1.4 HTTPS通信要完成的事情

     

    ① 客户端浏览器向服务器发送SSL/TLS协议的版本号、加密算法的种类、产生的随机数,以及其他需要的各种信息。

    ②服务器从客户端支持的加密算法中选择一组加密算法与Hash算法,并且把自己的证书(包含网站地址、加密公钥、证书颁发机构等)也发送给客户端。

    ③ 浏览器获取服务器证书后验证其合法性,验证颁发机构是否合法,验证证书中的网址是否与正在访问的地址一致,通过验证的浏览器会显示一个小锁头,否则,提示证书不受信

    ④ 客户端浏览器生成一串随机数并用服务器传来的公钥加密,再使用约定好的Hash算法计算握手消息,发送到服务器端。

    ⑤服务器接到握手消息后用自己的私钥解密,并用散列算法验证,这样双方都有了此次通信的密钥

    ⑥服务器再使用密钥加密一段握手消息,返回给客户端浏览器。

    ⑦ 浏览器用密钥解密,并用散列算法验证,确定算法与密钥。

    完成上面7步后,就可以利用此次协商好的秘钥进行通信

    二、HTTP请求/响应模型


     

     HTTP协议永远都由客户端发起请求,由服务器进行响应并发送回响应报文。

    如果没有客户端进行请求或曾经请求过,那么服务器是无法将消息推送到客户端的

     

    1)客户端浏览器先要与服务器建立连接

    2)客户端组装请求报文,发送给服务端

    3)服务端接收报文,对报文解析,组装成一定格式的响应报文,返回给客户端

    4)客户端接收报文,通过浏览器内核对其进行解析,与服务端断开连接

    三、解析HTTP报文


     3.1 HTTP请求

     

  • 相关阅读:
    hdu1158Employment Planning
    hdu1244Max Sum Plus Plus Plus
    .net客户端根据url获取字符串及图片,并保存本地
    wpf 3d文字
    .NET json格式 使用Newtonsoft.Json.JsonConvert类 附读取文件方法
    c# 按钮点击(开启||置顶)全局变量
    WPF 分辨率自适应,获取当前系统分辨率+窗口当前坐标
    WPF 循环读取文件中实现进度条显示
    WPF摄像头拍照+选择是否保存
    WPF Image显示本地照片 判断选择删除
  • 原文地址:https://www.cnblogs.com/anyanpeng/p/15591924.html
Copyright © 2011-2022 走看看