外观
如何理解网络请求在应用侧和系统侧分别经过哪些环节?
标准回答
应用网络库建立请求,进行 DNS、连接、TLS 和协议通信,实际数据走 socket 与内核网络栈。ConnectivityService 维护默认网络、网络能力和选择策略,netd 等组件参与路由、DNS 和网络规则等管理,但不是每个 HTTP 数据包都通过 Java 系统服务转发。请求失败时,我会分开检查默认网络与验证状态、DNS、路由、TLS 证书、代理、超时和服务端响应。设备连着 Wi-Fi 只代表建立了链路,不保证互联网可用。
延伸追问
对热点、VPN、多网络并发等场景还要确认请求使用的是哪个 Network,以及该网络是否能到达目标地址。
内容来源
- Android Framework 知识手册 · 原条目
6-7