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

 

原文地址:https://www.cnblogs.com/anyanpeng/p/15591924.html