Android 开发高手课
张绍文
前微信高级工程师,Tinker 负责人
52721 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
导读 (1讲)
模块一 高质量开发 (25讲)
Android 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

15 | 网络优化(上):移动开发工程师必备的网络优化知识

数据处理
多路复用I/O
UNIX网络I/O模型
Link Turbo技术
WiFi和蜂窝网络
5G基带芯片
基带芯片对技术的要求
iPhone XS支持的无线网络类型
对网络“慢”的思考
对网络“快”的思考
网络通信发展的历程
性能测量
延迟与带宽
网卡收发包的流程
I/O模型
Link Turbo
无线网络
推荐书籍
课后作业
总结
网络性能评估
网络I/O
网络基础知识
移动开发工程师必备的网络优化知识

该思维导图由 AI 生成,仅供参考

专栏前面我们已经学习过文件 I/O 和存储优化,相信你已经掌握了文件 I/O 和存储的性能分析以及优化思路。今天我们就再接再厉,继续学习系统中另外一种常见的 I/O——网络 I/O。
我在写今天的文章时,回想了一下大学期间学的那本几百页厚的《计算机网络》,当时学得也是云里雾里,网络的确涉及了方方面面太多的知识。那我们作为移动开发者来说,都需要掌握哪些必备的网络知识呢?文件 I/O 跟网络 I/O 又有哪些差异呢?
今天我们不谈“经典巨著”,一起来解决移动开发工程师面对的网络问题。

网络基础知识

现在已经很难找到一款完全不需要网络的应用,即使是单机应用,也会存在数据上报、广告等各种各样的网络请求。既然网络已经无处不在,我们必须要掌握哪些基础知识呢?
1. 无线网络
在过去十年,移动互联网的高速增长离不开无线网络的普及。无线网络多种多样,而且各有各的特点,并且适合使用的场景也不同。
下图是 iPhone XS 支持的无线网络类型,你可以看到 WiFi、蜂窝网络、蓝牙、NFC 这些都是我们日常经常使用的无线网络类型。
“千兆级 LTE”指的是蜂窝网络在理论上速度可以达到光纤级别的 1Gbps(125MB/s)。虽然基于 4G 标准,但通过MIMO(多输入多输出)、使用载波聚合的LAA等技术,现在已经发展到千兆级 LTE。2020 年我们也即将迎来 5G 的商用,它的理论传输速率可以达到 20Gbps。目前 5G 的标准还没有完全 release,关于 5G 的原理我推荐你看看这篇文章
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了移动开发中的网络基础知识和网络I/O,包括无线网络的发展、网络I/O模型和数据处理流程。作者介绍了延迟、带宽、吞吐量、连接数和错误等网络性能指标,并提到了网络优化的重要性。此外,文章还涉及了网络性能评估和性能测量的方法,以及一些实用的网络性能分析工具。最后,作者强调了对网络技术的持续学习和思考的重要性,并提供了相关书籍推荐和课后作业。整体而言,本文系统性地介绍了移动开发工程师必备的网络优化知识,对于想要深入了解网络优化的读者来说,是一篇值得阅读的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • ming
    张老师我遇到一个问题就是Mars做长连接怎么能用jobservice兼容Android8.0以上版本,没有相应思路希望你能给我一些帮助谢谢

    作者回复: 这个简单来说就是如何保活,在耗电的章节会说到。 但是8.0之后就已经非常难了,微信其实主要靠的是厂商白名单

    2019-01-17
    2
    13
  • snail24
    对课后作用的思考: 他们是如何实现网络不稳定的探测的? 所谓不稳定,我的理解其实就是弱网络的判断,那么什么是弱网络?一般情况下,低于2G 网速,上行20kbps /下行 50kbps 就可以认为是弱网;当然,这个范围是见仁见智的,也可以更大一些; 此时分为wifi连接上,但可用与不可用两种状态; 不可用时的一种典型场景就是: 连上需要登录认证后使用的公共wfi ; 所以问题就变成2个方面的判定: (1) 判定网络是否可用: 这个最简单有效的办法就是向指定地址发起HTTP请求,服务端返回204响应码即可;这个也是Google 在 6.0 以上流量监控模块的实现方案;其他同学有提到ping 方案,呵呵,ping 一般是内部ip开放探测网络是否畅通的方案,但企业ip 一般是对外禁止ping的,因为会有安全攻击;所以ping 其实是行不通的; (2) 判断网络是否稳定: 稳定的临界判断可以根据网络速度来判断,厂商一般会有流量统计模块,自然可以统计当下的wifi 传输速度,只要低于某个速度,甚至在某个时间内经常断开又连上,就可以判断为不稳定网络了。 以上拙见,欢迎绍文老师以及其他同学指正O(∩_∩)O~

    作者回复: 这个不太好实现的,对于手机厂商来说,可以拿到更多底层的参数,答案在下一章有说

    2019-01-20
    3
    8
  • 像风
    5G延迟的数据从哪里来的?似乎不严谨啊。10ms的延迟是指多远的传输距离?光速绕地球一圈尚且要大约140毫秒,如果传输距离是地球的周长,怎么可能只有10ms?而且因为5G的频率较高,在不良导体中能量损耗严重,不能传输过远的距离,需要经过许多个基站转发,基站处理也需要时间啊。总觉得这个10ms像是上市公司为了热炒5G概念在“短距离内的两个端点端对端传输的延迟时间”...

    作者回复: 我是参考AT&T给出的数据

    2019-03-20
    2
    4
  • xushengxing
    一开始比较朴素的想法:通过请求已知的,稳定的服务器,去请求应用的服务器。在这两个环节中,判定是网络问题,还是应用服务的问题。 googl一下,发现WifiManager也可以获取连接速度,信号强度这些指标。

    作者回复: 对于厂商可以拿到更加底层的参数

    2019-01-18
    1
  • 荆明
    关于课后作业,如何侦测网络,是在哪一章回复的?后面几章好像没看到回复这个问题

    作者回复: Link turbol?后面正文里面说了答案了

    2019-02-26
  • Jack
    如何实现侦测,如何区分是应用后台服务器出问题还是 WiFi本身有问题呢 是不是可以尝试百度等比较稳定的服务,以此来判断是后台出了问题,还是wifi传输出现拥堵

    作者回复: 对于手机厂商来说,这样不是好的方式。下一章会有答案

    2019-01-29
  • 董尚斌
    理论上后台挂掉的话,请求是5xx错误码。 通过http的响应码就可以区分。

    作者回复: 如果有返回码,已经代表是可以联通了。

    2019-01-21
  • 欧哩給
    做App的流量使用统计有什么方法呢?

    作者回复: 后面会讲到

    2019-01-17
  • ZYW
    我说个最简单的思路,连上WIFI.ping 一个公有ip,如果通过就说明可以,如果不行就说明WIFI网络不可达,这期间还可以做 丢包获取看网络的丢包率。

    作者回复: 公网ip也无法确定有没有问题,下一章会有答案,其实是不需要的

    2019-01-17
  • 凡式galaxy
    怎么区分是wifi问题还是应用后台问题?

    作者回复: 在后面一章会有答案哈

    2019-01-17
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部