Android开发学习笔记(4)

来源:互联网 发布:eureka java demo 编辑:程序博客网 时间:2024/04/30 10:38

Android开发学习笔记(4)

终端网络技术


无线网络

无线网络物理层架构(LTE为例)

  • LTE于2G、3G相比做了很多精简化操作
  • 手机 ==(数据请求)==》无线基站(通过信道(有限)进行数据交互) ==(数据)==》服务网关SGW(负责与无线基站通信,通过移动管理实体MME查询手机归属无线基站)==》分组网关PWG
  • 手机与无线基站连接是无线连接(“最后一公里”),其余有线

第三方影响

  • 心跳保活(运营商因素)
    • 分组网关保存连接信息,运营商每隔一段时间就淘汰一批,为了保活需要每隔一段时间发送一定的数据量使不丢弃
  • 不同厂家不同版本物理设备,故障引起连锁反应(非运营商因素)

TCP与无线网络

  • TCP设计之初基于带宽延迟相对稳定、丢包小、资源充足(有线),不适合无线
  • TCP特点与移动网络应用层相应优化
    • 端到端有序可靠传输
      • 序号与确认
      • 端到端校验
      • 超时重传(超时计时器RTO略大于RTT)
      • 应用层应考虑重传算法、数据校验
      • 连接超时的选择
        • 考量因素:可用性、网络敏感性、用户体验
        • android超时重传时间点1、2、4、8…
    • 流量控制和拥塞控制
      • 滑动窗口协议
        • 通告窗口rwnd —— 来自接收端的流量控制
        • 拥塞窗口cwnd —— 来自发送端的流量控制
        • 滑动窗口 —— 取rwnd与cwnd最小值
        • 慢启动
      • 移动网络中丢包率高,接收不到不意味着拥塞。
      • google提出BBR
      • 服务端实践
        1. 采用WestWood拥塞控制算法
        2. 增大TCP初始拥塞窗口
        3. 连接空闲时禁用慢启动
        4. 启用窗口缩放(RFC1323)
      • 客户端实践
        1. 减少send调用次数
        2. 就近接入
        3. 长连接,避免慢启动
        4. 压缩传输数据
        5. 写满TCP发送buffer(流式传输而非分块)
        6. 控制好数据处理线程

网络协议

  • TCP
    • 语法 约定格式
    • 语义 约定的每一部分代表的含义
    • 时序 例:三步握手
  • 数据编码(语法)表达内容
    • 文本编码(空间浪费较多)
      • 逗号分隔
        • 对顺序有强要求
        • 特殊分隔符”,” 转移
        • 不能表达结构信息,类型安全…
      • key-value(http常用)
        • 清晰表达能力
        • 顺序无关
        • 可扩展性好
        • 前后兼容性
        • 不能表达相对复杂结构化信息、嵌套信息,不能进行类型安全检查
        • 不容易形成较好规范
      • XML
        • 自描述
        • 类型安全检查信息
    • 二进制编码
      • TLV(Tag-Length-Value)
        • Value也可为TLV结构
        • 信息表达能力强
        • 数据压缩效果不是很好
      • Google ProtoBuff
        • 开源、跨平台、跨语言
        • 自描述实现兼容性
        • 数据组织方式有效减少网络传输大小与流量消耗
        • 更小、快、简单
        • 前后兼容
        • 良好的文档、社区、案例支持,使用广泛
    • 其他
      • 压缩
      • 加密
        • 非对称加密(RSA)—— 身份验证、密钥交换
        • 对称加密(AES、DES)
  • 语义 —— 业务数据
    • 扩展性
      • 规模扩展(后台),通常依赖无状态网络协议或带资源标识的有状态
      • 功能扩展
    • 兼容性
      • 版本号
      • 自描述
    • 并发性
    • 错误处理
    • 简洁、高效
  • 语义 —— 信令数据
    • 分包,区分并发请求划分间隔
      • octet-stuffing 特殊分隔符
      • octet-counting 计算长度
      • connect-blasting 断连接
    • 兼容性与扩展性
      • 版本号
      • 压缩、加密算法
    • 并发处理
      • 序列号、命令号
    • 精简
  • 时序同步
    • 工具 —— 时序图、状态图
0 0
原创粉丝点击