前言
总结自用
总结
对比于http,https加入了加密,认证,完整性校验
是http+SSL,为了双方加密通话,用了对称加密,对称加密需要密钥交换,于是非对称加密;而为了防止中间人攻击,实际上就是为了识别公钥是来自于对方的,引入了证书体制证书体制,证书里有数字签名来保证不被篡改
对于消息的完整性,采用哈希检查(摘要算法?TODO)
- Q:非对称加密已经很安全了,为什么还要用混合加密
- A:非对称加密的速度慢,平时需要用对称加密通信
- ps.其他问题参考资料[3]可帮助理解
SSL握手过程(TODO不够详细)
- 建立443端口连接
- 客户端发送随机数1和支持的加密方法
- 服务端发随机数2并确认加密方法且发自己的证书,
- 客户端检查证书,并用里面的公钥加密随机数3发送(涉及到CA的检查可延申)
- 服务端用3个随机数生成对称密钥,以后都用这个来通信
https中间人攻击
用证书可以免疫这种攻击,中间人把服务器发来的公钥换成自己的公钥,再发送给客户端,然后再收到客户端的信息用自己私钥解开后,再用服务端原本的公钥加密发回去,这样就可以作为中间人读取两端互发的信息
减少https开销:
SSL sessionID,TODO
摘要算法
发送明文之前会通过摘要算法算出明文的「指纹」,发送的时候把「指纹 + 明文」发出去,(这个不是证书体制的其中一个吗)
服务器解密后,用相同的摘要算法算出发送的明文的指纹并作比较
(是哈希检查?TODO)
Http
- http报文
- host:用来指定域名
- connection:keep-alive
- content-type
http版本
- 1.1默认使用长连接,请求流水线,增加了host头域和range
- 2.0多路复用,采用增量压缩来传输头部
- 3.0基于UDP
状态码
1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。
「200 OK」是最常见的成功状态码,表示一切正常。
「204 No Content」与 200 OK 基本相同,但响应头没有 body 数据。
「206 Partial Content」是应用于 HTTP 分块下载或断电续传,表示响应返回的 body 数据只是一部分,也是服务器处理成功的状态。
「301 Moved Permanently」永久重定向,说明请求的资源已不在,需用新的 URL 再次访问。
「302 Moved Permanently」临时重定向,请求的资源还在,但暂时要用其他URL 来访问。
301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。
「304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,用于缓存控制。(不太懂)
「400 Bad Request」表示客户端请求的报文有错误,但只是个笼统的错误。
「403 Forbidden」表示服务器禁止访问资源,并不是客户端的请求出错。
「404 Not Found」表示请求的资源在服务器上不存在或未找到
「500 Internal Server Error」与 400 类型,是个笼统通用的错误码,具体什么错误不说
「501 Not Implemented」表示客户端请求的功能还不支持
「502 Bad Gateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
「503 Service Unavailable」服务器忙
参考资料
- 硬核!30 张图解 HTTP 常见的面试题 - CSDN的文章 - 知乎 https://zhuanlan.zhihu.com/p/112010468
- https://www.bilibili.com/video/BV1Ae411W7oY
- https://zhuanlan.zhihu.com/p/43789231是篇好文