运营商是怎样判断用户是关机还是不在服务区的?
一般对于网络(主要是指核心网)来说,手机可以认为只有两种大的状态,即 attach(附着)和 detach(去附着)。
如果是用户自己按下电源键关机或者手机知道自己快没电即将自动关机的时候,此时手机会发起 IMSI detach operation 流程,告知网络(主要是告知 MSC/VLR,再由 MSC/VLR 告知给 HLR)要关机了,然后网络侧将此用户标记为关机状态。此时如果有针对这个 IMSI 号码的呼叫,直接回复“您拨打的用户已关机”就行了,以便节省寻呼资源。大致的 IMSI detach 说明和流程可以参见 3GPP TS23.012 或者此方面的书籍。
而如果是用户突然把电池给拔了,那手机来不及发起 IMSI detach operation 流程,网络侧还是会认为手机处于 attach 状态。而在手机没电池这段时间有针对这部手机的呼叫,可是网络寻呼了老半天(其实也就几秒钟)却完全听不到手机的回应,那么此时就会回复主叫用户类似“您拨打的用户暂时无法接通”这样的语音。
再假设手机一直没上电,可是网络侧又不知道手机究竟是个什么情况,是被绑架了还是卡机了?还是所处的地方信号太差导致网络没收到手机的寻呼响应?如果手机君直接被撕票了,那无论如何再怎么寻呼也寻呼不到,而且还浪费了寻呼资源。对此情景的一个应对方法就是设置一个周期性位置更新定时器(比如 3GPP TS24.008 中定义的 T3212 定时器),手机通过网络下发的这个定时器来定时的上报自己的位置信息,让网络知道自己还活着的同时还更新了自己的位置信息,便于网络寻呼。而如果超出了这个定时器时间,而手机却没有上报位置更新信息,那么网络则将手机置于 Implicit IMSI detach 状态(3GPP TS23.012),此时有针对此用户的寻呼,则不再浪费寻呼资源,直接回复“您所拨打的用户已关机”。一般现网中的周期性位置更新定时器设置为 30 分钟到 1 个小时左右。
上述讨论的都是一些比较简单的情况,实际上移动性管理里,手机在网络侧的标记中还会有更多的状态和多个定时器设置,感兴趣且想深入了解可以参阅 3GPP 规范或者此方面的书籍。