控制面主要负责网络连接的建立和管理,而数据面则负责数据的传输和路由。这两个方面共同协作,为用户提供稳定、高效的移动网络体验。
控制面流程
控制面主要负责处理移动网络的信令和连接管理。当用户尝试使用移动数据网络时,控制面会进行一系列的操作来确保网络连接的建立和管理。
-
APN配置:
- 用户在使用移动数据网络之前,需要在设备上配置接入点名称(APN)。APN包含了访问移动网络所需的各种参数,如运营商名称、国家码、网络码、APN名称等。
- 当设备启动时,TelephonyProvider会初始化telephony.db数据库,读取APN配置文件(如apn-conf.xml),并将配置信息加载到数据库中。
-
网络注册和认证:
- 设备通过SIM卡向移动网络注册,并获取网络认证。这一过程中,设备会与移动网络交换一系列的信令,以验证身份并获取网络访问权限。
-
连接管理:
- Android系统通过ConnectivityManager、ConnectivityService等组件来管理网络连接。这些组件会评估当前可用的网络,并根据网络类型、信号强度等因素选择合适的网络进行连接。
- 当有多个网络可用时(如WIFI和移动数据网络),系统会根据一定的规则(如评分机制)来选择最优的网络进行连接。
-
移动性管理:
- 当设备在网络中移动时(如从一个基站切换到另一个基站),控制面会负责处理相关的移动性管理信令,以确保设备能够持续保持网络连接。
数据面流程
数据面主要负责数据的传输和路由。一旦控制面建立了网络连接,数据面就会开始处理数据的发送和接收。
-
数据通道建立:
- 在控制面建立网络连接后,数据面会建立相应的数据通道(如PDP上下文或EPS承载)来传输数据。
-
数据传输:
- 用户应用通过Socket等网络接口发送和接收数据。这些数据会经过TCP/IP协议栈的处理,然后被封装成适合移动网络传输的数据包。
- 数据包通过数据通道传输到移动网络,然后经过一系列的路由和转发操作,最终到达目标地址。
-
数据流量管理:
- Android系统会监控数据流量的使用情况,并根据需要执行流量限制或提醒用户。
- 数据连接建立成功后,系统会周期性(如每秒)地通过TrafficStats获取数据上行(TX)和数据下行(RX)的流量,并与上次获取的值进行比较,以判断数据上下行的状态。
-
网络选择和评分机制:
- Android系统会根据网络的类型、信号强度、速度等因素为不同的网络打分。当有多个网络可用时,系统会优先选择分数较高的网络进行连接。
- 例如,WIFI的基础分值通常高于移动数据网络。每次网络建立时,都会通过NetworkMonitor去ping特定网址以检查连通性。如果无法ping通,该网络的分数会降低。