国际移动用户识别码(IMSI) international mobile subscriber identity 国际上为唯一识别一个移动用户所分配的号码。
从技术上讲,IMSI可以彻底解决国际漫游问题。但是由于北美目前仍有大量的AMPS系统使用MIN号码,且北美的MDN和MIN采用相同的编号,系统已经无法更改,所以目前国际漫游暂时还是以MIN为主。其中以O和1打头的MIN资源称为IRM(International Roaming MIN),由IFAST (International Forum on ANSI-41 Standards Technology)统一管理。目前联通申请的IRM资源以09打头。可以看出,随着用户的增长,用于国际漫游的MIN资源将很快耗尽,全球统一采用IMSI标识用户势在必行。
结构组合
IMSI共有15位,其结构如下:MCC+MNC+MSIN ,(MNC+MSIN=NMSI)
MCC:Mobile Country Code,移动国家码,MCC的资源由国际电联(ITU)统一分配和管理,唯一识别移动用户所属的国家,共3位,中国为460;
MNC:Mobile Network Code,移动网络码,共2位,中国移动TD系统使用00,中国联通GSM系统使用01,中国移动GSM系统使用02,中国电信CDMA系统使用03,一个典型的IMSI号码为460030912121001
MSIN:Mobile Subscriber Identification Number共有10位,其结构如下:09+M0M1M2M3+ABCD 其中的M0M1M2M3和MDN号码中的H0H1H2H3可存在对应关系,ABCD四位为自由分配。可以看出IMSI在MSIN号码前加了MCC即NMSI,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个移动网络运营商,可以通过MNC来进行区别。
MCC(3位)+MNC(2位)
20201, "Cosmote", "GR"
20205, "Vodafone GR", "GR"
20210, "TELESTET", "GR"
20404, "Vodafone NL", "NL"
20408, "KPN", "NL"
MCC 是 Mobile Country Code 的缩写,译为移动国家代码。它由三位数字组成。用于标识一个国家,但一个国家可以被分配多个 MCC 。
比如美国的 MCC 有 310,311,和316。中国的 MCC 只有 460。
MNC 是 Mobile Network Code 的缩写,译为移动网络代码。它由二到三位数字组成。它和 MCC 合在一起唯一标识一个移动网络提供者。比如
中国移动的 MNC 是 00,中国联通的 MNC 是 01,中国联通 CDMA 的 MNC 是 03,中国卫星全球星网的 MNC 是 04。
01为MNC(Mobile Network Code,移动网络号码):用于识别移动用户所归属的移动通信网,2~3位。中国移动系统使用00、02、04、07,中国联通GSM系统使用01、06、09,中国电信CDMA系统使用03、05、电信4G使用11,中国铁通系统使用20。
因此,460-00 就唯一标识了中国移动。
SPN 就是你购买SIM卡作为客户签约的运营商,为你提供的服务,
Service Provide么。只有在出国漫游时有些意思,如
中国移动⽤户在美国漫游到 AT&T ⽹络上,有的会显示 AT&T(registered PLMN) -
CMCC(SPN), 有的仅是AT&T。这些显示规则,有的如同时显示Registered PLMN - SPN与
否,存储在USIM卡中,有的如同在⼿动搜⽹中只显示SPN等,作为配置开关放到Android
Properties中。实际上类似“中国移动”,“China Mobile”等SPN名的字符串以UCS2编码格式或者GSM7位码存放到EFSPN的Service Provider Name字段。
除了显示当前VPLMN的名称,是否还要显示SPN名称,:
在美帝出差时发现有时显示AT&T - CMCC还是仅仅显示AT&T。这时有⼈会说我如
何关联哪些PLMN对应这个SPN名字呢?这个就是EFSPDI 的⼯作了
persist.radio.always_send_plmn
如果值为1,只使⽤PLMN name,忽略SPN;
每次,当我们出国的时候,运营商会给我们发条短信,大致内容是“到达目的地,手机开机后请在设置中打开漫游开关,手机将会自动搜网;如果自动搜网不成功,那么,请在设置中手动选择xx运营商”。而PLMN主要相关的也就是这个场景。
在我们的测试中,我们会用QXDM的F9来读取手机USIM卡上面存储的IMSI。
例如 460 01 1418603055
而PLMN其实就是MCC+MNC
关于PLMN的分类和接入的简单流程,请参考下面这篇博客,这里就不赘述了。
https://blog.csdn.net/f2157120/article/details/81501300
而想要更深入了解PLMN相关协议,建议阅读23.122协议
https://www.3gpp.org/ftp/Specs/latest/Rel-16/23_series/
至此,可能你也就知道,为什么手机和基站都要设置PLMN了,手机端需要知道,我能接入的运营商的PLMN有哪些,而基站那边需要知道,我允许哪些运营商的手机漫游进来。