# Http, Https协议
* 参考资料
* [HTTP](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/HTTP.md)
* [快速理解https实现的原理](https://www.jianshu.com/p/35f78893aa50)
### 常见问题
* Http协议
>>
http是在网络协议的应用层, 用户通过http协议访问网站时, 浏览器和服务器之间是明文传输, 这就意味着用户填写的密码, 帐号, 交易记录等机密信息都是明文, 随时可能被泄露, 窃取, 篡改, 被黑客加以利用.
* HTTPS的原理(https如何加密)
>>
SSL(Security Socket Layer)全称是加密套接字协议层
SSL安全机制的通信过程如下: 用户与服务器建立连接后, 服务器会把数字证书与公用密钥发送给用户, 用户端生成会话密钥, 并用公共密钥对会话密钥进行加密, 然后传递给服务器, 服务器端用私人密钥进行解密, 这样, 用户端和服务器端就建立了一条安全通道, 只有SSL允许的用户才能与服务器进行通信
* HTTP 状态码
>>
1XX 信息(表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应)
2XX 成功
3XX 重定向
4XX 客户端错误, 403 Forbidden, 404 Not Found
5XX 服务器错误
* 常见的请求头
>>
[不需要全记,仅供查阅](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/HTTP.md#%E9%80%9A%E7%94%A8%E9%A6%96%E9%83%A8%E5%AD%97%E6%AE%B5)
有 4 种类型的首部字段:通用首部字段、请求首部字段、响应首部字段和实体首部字段
* http缓存协议
>>
[缓存](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/HTTP.md#%E4%BA%94%E5%85%B7%E4%BD%93%E5%BA%94%E7%94%A8)
Cookie是服务器发送给客户端的数据, 该数据会被保存在浏览器中, 并且客户端的下一次请求报文会包含该数据. 通过Cookie可以让服务器知道两个请求是否来自于同一个客户端, 从而实现保持登录状态等功能.
Session是服务器用来跟踪用户的一种手段, 每个Session都有一个唯一标识: Session ID. 当服务器创建了一个Session时, 给客户端发送的响应报文包含了Set-Cookie字段, 其中有一个名为sid的键值对, 这个键值对就是Session ID.
客户端收到后就把Cookie保存在浏览器中, 并且之后发送的请求报文都包含Session ID.
HTTP就是通过Session和Cookie这两种方式一起合作来实现跟踪用户状态的, Session用于服务器端, Cookie用于客户端
### todo
* HTTPS 握手的步骤和过程
* OKHttp 的源码和原理
* Retrofit 的源码和原理
* HTTP 2.0 有没有了解过
* Volley能否进行数据量很大的请求,比如说加载100M的图片
* Volley的优缺点
* Volley源码,优缺点
* Volley返回数据量比较大的请求时怎么办
* https是如何保证安全的,证书如何校验
* Tcp/Udp