全面解析android APN

时间:2024-04-09 21:36:32

全面解析android APN

此博文写作坚持以下理念:

图胜于表,表胜于言;
最好的解释是不用解释;

1. APN的概念

1.1 APN的定义

Definition of Access Point Name

In the GPRS backbone, an Access Point Name (APN) is a reference to a GGSN. To support inter-PLMN roaming, the internal GPRS DNS functionality is used to translate the APN into the IP address of the GGSN.
——3gpp 23.003

从定义可看出,APN是GGSN的引用,被internal GPRS DNS转换为GGSN的IP地址。
全面解析android APN
那么GGSN是什么,又是做什么的?

GGSN: Gateway GPRS Support Node, 网关GPRS支持节点

GGSN主要起网关作用,所扮演的角色:
对内:网络传输; (网络接入控制,分组数据的过滤)
对外:路由器(路由选择和分组的转发,IP地址分配)

1.2 APN的参数

一个典型的APN有如下参数(名称,MCCMNC,接入点,类型)

举例(CMCC APN)

<apn carrier=“连接互联网” //名称
mcc=“460” //MCC
mnc=“07” //MNC
apn=“cmnet” //接入点
type=“default,supl,net” //类型
/>
其他更多参数:
全面解析android APN

Note :每个有数据业务的运营商都会设定自己的APN,APN可能是多条,包括3G使用、4G使用,NET和WAP,不同APN的使用范围和收费会有差别。
APN的类型:

全面解析android APN

1.3 APN的存储与加载

1.3.1 APN的存储位置

以XML的格式存储:Apns-conf.xml
sourcecode文件路径:
MTK平台(通常):alps\mediatek\frameworks\base\telephony\etc
高通平台(通常):android\vendor\qcom\proprietary\telephony-apps\etc

编译后打包到systemimage中,
UE文件路径:system/etc/ Apns-conf.xml

当UE开机后,根据XML写入database中。
table:content://telephony/carriers

1.3.2 APN的加载

到database:TelephonyProvider读取XML并在database中插入table
到UI menu:根据MCCMNC从database读取对应参数项填写到UI菜单序列中
PDP建立时:DCtracker负责创建/更新waiting APN list

关系图:

1.4虚拟运营商的APN

虚拟运营商(MVNO)没有自营网段,使用了主运营商的网段,因而和主运营商有相同的MCCMNC。为了能够与主运营商区分,虚拟运营商的APN还包含了MVNO参数。MVNO参数分为SPN/PNN/IMSI/GID1,是从SIM卡对应栏位读取的值,目的是从该值中判断该SIM卡是否属于MVNO。
在读取MVNO卡的APN时,会同时去匹配MCCMNC和MVNO参数。

APN的概念部分到此告一段落,下面做个总结:

全面解析android APN

2. APN的实现机制

待续。

本文为原创文章。可尽情点赞,留言和讨论。