计算机网络知识
1.HTTP相关知识,包括一个Http请求的内部结构,Http各个版本的不同,Http的特性等等。
2.TCP相关知识,包括三次握手、四次挥手、窗口滑动、拥塞控制等等
3.IP相关知识
4.5层和7层网络架构知识,这里只需要了解框架就行,各个层的具体协议除了上面说的其他都不需要特别了解。
- 通过实例了解OSI七层模型的每个功能
https://www.cnblogs.com/qishui/p/5428938.html
客户机发起一次请求的时候:客户机会将请求封装成http数据包-->封装成Tcp数据包-->封装成Ip数据包--->封装成数据帧--->硬件将帧数据转换成bit流(二进制数据)-->最后通过物理硬件(网卡芯片)发送到指定地点。
服务器硬件首先收到bit流....... 然后转换成ip数据包。于是通过ip协议解析Ip数据包,然后又发现里面是tcp数据包,就通过tcp协议解析Tcp数据包,接着发现是http数据包通过http协议再解析http数据包得到数据。
OSI通讯协议模型
http://blog.csdn.net/hguisu/article/details/7249611
http://blog.csdn.net/yaopeng_2005/article/details/7064869TCP的三次握手、四次挥手
http://www.cnblogs.com/super86/p/3387457.html
https://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html#threehandHttp协议
http://www.cnblogs.com/ranyonsue/p/5984001.html
http://www.ruanyifeng.com/blog/2016/08/http.html
https://zhuanlan.zhihu.com/p/24913080
Android 网络通讯框架机制
OkHttp
- 架构原理、机制
想想假入之前没有用okhttp框架,自己写网络请求时的场景,启动一个异步线程,发起请求,处理请求,异步线程结束,假如考虑到网络不好、多个同时多次发起网络请求的情况下呢?性能还有保障嘛?
通过引入Chain 对拦截器(Interceptor)处理,封装Request、Response对象,在通过引入线程池(Dispatcher控制)、缓存(DiskLruCache)、重连机制(RouteSelector)来提高网络请求性能
-
okhttp的优点
- 支持HTTP2/SPDY黑科技
- socket自动选择最好路线,并支持自动重连
- 拥有自动维护的socket连接池,减少握手次数
- 拥有队列线程池,轻松写并发
- 拥有Interceptors轻松处理请求与响应(比如透明GZIP压缩,LOGGING)
- 基于Headers的缓存策略
- 这三篇就够了
https://juejin.im/post/581311cabf22ec0068826aff
http://www.jianshu.com/p/89e5d5c6d77f
http://www.jianshu.com/p/aad5aacd79bf
Retrofit
动态代理形式模式来使用,底层还是用的okhttp