Http网络通讯

计算机网络知识

1.HTTP相关知识,包括一个Http请求的内部结构,Http各个版本的不同,Http的特性等等。
2.TCP相关知识,包括三次握手、四次挥手、窗口滑动、拥塞控制等等
3.IP相关知识
4.5层和7层网络架构知识,这里只需要了解框架就行,各个层的具体协议除了上面说的其他都不需要特别了解。

Http网络通讯_第1张图片
OSI网络七层模型

Http网络通讯_第2张图片
QQ图片20171205091912.png
Http网络通讯_第3张图片
0_1325744597WM32.gif
  • 通过实例了解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/7064869

  • TCP的三次握手、四次挥手
    http://www.cnblogs.com/super86/p/3387457.html
    https://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html#threehand

  • Http协议
    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的缓存策略
Http网络通讯_第4张图片
对Request、Response的封装Chain

Http网络通讯_第5张图片
Builder参数的引入对于缓存、请求的优化
  • 这三篇就够了
    https://juejin.im/post/581311cabf22ec0068826aff
    http://www.jianshu.com/p/89e5d5c6d77f
    http://www.jianshu.com/p/aad5aacd79bf
Retrofit

动态代理形式模式来使用,底层还是用的okhttp

  • 资料收集
    http://blog.csdn.net/stven_king/article/details/51839537

你可能感兴趣的:(Http网络通讯)