综述
记录下对OkHttp的源码学习过程,版本号为3.8
OkHttp官方的简介
OkHttp is an HTTP client that’s efficient by default:
HTTP/2 support allows all requests to the same host to share a socket.
Connection pooling reduces request latency (if HTTP/2 isn’t available).
Transparent GZIP shrinks download sizes.
Response caching avoids the network completely for repeat requests.
简单归纳特点为支持连接复用,Gzip压缩和缓存等,所有的这些都是为了减少时延,增强传输性能。
准备工作
了解HTTP的一些基本知识,推荐阅读《图解HTTP》或者《HTTP权威指南》
HTTP协议栈,HTTPS协议栈,TCP/IP协议,WebSocket协议
URL语法,HTTP报文 (LINE,HEADER,BODY)
SOCKET编程,TCP性能聚焦(握手延迟,慢启动等)
代理,缓存,安全,认证。
下载源码,查看源码
推荐使用Intellij IDEA查看源码
阅读优质的研究分享
整体框架与流程
OKHTTP的整体框架大致的可以分为
Interface——接口层:接受网络访问请求 可以理解为应用层
Protocol——协议层:处理协议逻辑 可以理解为安全层
Connection——连接层:管理网络连接,发送新的请求,接收服务器访问 可以理解为会话层
Cache——缓存层:管理本地缓存
I/O——I/O层:实际数据读写实现 可以理解为传输层
Inteceptor——拦截器层:拦截网络访问,插入拦截逻辑