http https
1 历史
HTTP是一个基于TCP/IP协议传输数据,应用层协议。
HTTP/1.1使用的还是很多 2015年发布HTTP/2
HTTP2使用了多路复用:
多个请求共享一个tcp/ip连接。
2 报文格式
请求:
请求方法 URL 版本 CRLF(换行符)
首部字段名: 值
CRLF
…
首部字段名:值
CRLF
CRLF
请求主体(get在url中)
响应
版本 状态码 状态码描述 CRLF
首部字段名:值
…
首部字段名:值
CRLF
CRLF
响应主体
3 https
基于http协议,通过SSL或者TSL提供加密处理数据,验证对方身份以及数据完整性保护
不同于HTTP,数据不是明文传输
HTTPS默认端口为443,SSL加密手段是在传输控制层和应用层之间,技术上属于应用层。
SSL建立连接过程
1 client向server发送请求https://baidu.com 然后连接server的443端口,发送的信息是随机值1和客户端支持的加密算法
2 server返一个响应握手信息,包括随机值2和匹配好的协商加密算法
3 server给client发送第二个响应报文:数字证书,证书中有两个东西:公钥和私钥
4 客户端解析证书 验证公钥是否有效,没问题就生成一个预主秘钥
5 通过随机值1和随机值2和预主秘钥组装会话秘钥,通过证书的公钥加密
6 传送加密信息,服务端使用公钥解密获得随机值1、随机值2、预主秘钥
7 服务端解密得到随机值1 随机值2 预主秘钥,组装会话秘钥,跟客户端会话秘钥相同
8 客户端通过会话秘钥加密一条信息发给服务端,验证服务端书否正常就收客户端加密消息
得到随机值1 随机值2 预主秘钥,组装会话秘钥,跟客户端会话秘钥相同
8 客户端通过会话秘钥加密一条信息发给服务端,验证服务端书否正常就收客户端加密消息
9 同样服务器也会通过会话秘钥加密一条消息回传给客户端,客户端正常接收SSL层连接建立完成