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请求

     

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/anyanpeng/p/15591924.html
Copyright © 2011-2022 走看看