GSM 駐網 註冊 打電話 流程總結(精華)
來自專欄 像新手一樣拚命學習協議,饑渴而貪婪
前段時間學習了大量的基礎知識,不斷的總結和思考,寫出我自己的理解,作為協議的入門
有些基礎知識跳過去,前面學習的時候我都掃盲過了,現在需要系統將知識點串起來,成為一個體系。
從我的好奇心開始,好奇心一直支撐著我們一點點進步
手機開機為什麼就可以連上網路,到底做了什麼?
上面是我沒有學協議時認知的網路,因此我需要將網路的結構先畫出來,了解原理
MS 默認就是手機
在覆蓋的GSM網路中,BTS 一直在廣播信息BCCH,第一使用的手機和卡開機了,手機一般覆蓋在好幾個小區,這裡就需要進行小區選擇,因為會接收到好幾個小區的BCCH的廣播,那它是怎麼選擇的
- 根據BCCH 判斷是不是卡的運營商網路,如果不是可以接入其他運營商網路,但是只能撥打緊急號碼
- 小區是不是被禁止接入,原因,小區話務量大,飽和了設置CBA參數 小區禁止接入還有一個參數CBQ共同組成 接入小區優先順序判斷條件,這個是系統給出的參數值,手機只要接收參數,根據條件選擇接入
- 上面的兩個參數有點不智能,所以還要根據C1 演算法來進行判斷,是否要接入網路
當前運營商網路是否覆蓋、CBA和CBQ參數 和 C1演算法的參數 從所有小區的BCCH信息中獲取
當我們第一次使用新的SIM 卡後, SIM卡保存BCCH信息,所以需要搜索所有頻點的BCCH,也就是不同小區的BCCH, 手機中會設置搜索多少個頻點(雙頻手機會搜索 374個 GSM1800 RF 信道)搜索 124 RF 頻點,並且從不同的頻點上抽取5個測試值進行平均,計算每個頻點的信號強度。根據不同信號列出一個表,整個測量過程大概3~5s。
然後手機會將頻率調諧到信號強度最好的頻點上,然後檢索FCCH 突發脈衝序列 進行頻率校正(鎖頻),判斷是否是BCCH的載波(因為只有BCCH 才有FCCH,FCCH在BCCH下行載頻0號時隙上傳輸),手機通過解碼 SCH(通過BCCH載頻的下行鏈路0號時隙發送)讀取BTS 的BISC 還有幀同步的TDMA幀 完成時間同步 。(PS:BCCH 包含FCCH和SCH ),然後讀取BCCH上的系統消息(SIB消息)主要信息有 位置區識別號 LAI 、相鄰小區的列表、小區識別號CGI、本小區的頻率列表、隨機接入控制信息、小區選擇參數、控制信道描述、小區選項,然後判斷
- 是不是所屬的運營商網路?
- 小區是不是禁止接入
- C1 是不是大於0
都滿足的話 駐留在該網路,就能註冊網路了,註冊後手機上會出現 信號格和哪個網路 2g 3g 4g
如果不滿足,重新調諧到信號排列第二的網路,按照上面的步驟,直到找到合適的小區
如果超過30個小區都沒有駐留,那麼判斷後面的信號肯定不行了。手機監測 信號強度搜索C1>0而且沒有被禁止的小區,直接駐留,只能打緊急電話,這個就是我們看到手機沒有信號但是也能撥打緊急電話的情況
這裡可以畫個流程圖
上面是第一次情況,後面手機關機開機流程不一樣了,第一次搜索網路會保存在手機中,BA列表(BCCH ALLOWCATION),上一次駐留的載波保存在SIM卡中(應該在BCCH中),優先搜索第一次保存的SIM卡中保存的BCCH載波,不行的話,在BA列表中搜索重新走駐網流程,如果BA列表中也沒有,那就相當於第一次手機駐網
上面的參數信息細細的理解下
小區的概念 : BTS 裡面有三面天線,每一面是一個扇形,每一個扇形區域就是一個小區,編號 CI 小區標識。每個BTS 的編號就是BSIC(Base Station Identity Code 基站識別碼)。每個BSC ,為尋呼而設置的,負責區域的區域就是位置區域碼 LAC (Location Area Code )
LAI 位置區識別號 = MCC+MNC+LAC
這裡 說下,我平時看到手機可不可以打電話或者上網,就是看信號格 和 顯示4g 2g 等圖標就算註冊網路,其實就是識別出網路類型和接收電平。如果想打電話或者有其他業務(比如位置更新)就需要進行隨機接入。
接下來就是隨機接入過程,在GSM中,隨機接入實在CCCH 公共控制信道中進行,用來BTS 和 移動台之間傳遞控制信息,完成呼叫建立和尋呼功能,通用和專用的區分: 還未建立連接就稱為通用,已經建立連接,單獨佔用一條信道就稱為專用
這裡 RACH AGCH PCH屬於 CCCH
隨機接入過程
- RACH 隨機接入信道 Radom Access CHannel 手機通過RACH 申請分配一個獨立專用控制信道,作為對尋呼的響應或者手機主叫/登記的接入,RACH在上行的BCCH載頻的0號時隙上傳送
- AGCH 允許接入信道(Access Brant CHannel) 用於為手機分配一個專用控制信道SDCCH 在下行BCCH載頻的0號時隙上傳
手機和網路建立通信,通過RACH信道向網路發送「信道申請(Channel Request)」消息,突發脈衝只有8bit有用消息,3bit 用來表示建立原因(緊急呼叫、位置更新、響應尋呼或者主叫請求)另外5bit 手機隨機選擇的鑒別符號,用來是網路識別是不同的手機發送的請求。
然後網路向手機發送立即指配指令,再次將這個5bit鑒別符發送給移動台,可以判斷是不是發給自己的
RACH 有36bit 8bit 信道申請信息 6bit 網路色碼 4bit 尾比特 18bit 1:2卷積計算 就是36bit 加密信息
上面我們是在Um空口看到流程實際上還有其他工作處理
手機-BTS (Um介面):手機通過RACH信道發送「信道申請」消息,BTS接收「信道申請」
BTS-BSC (Abis 介面):BTS 通過Abis 介面給BSC 發送一條信道請求消息(包含 接入原因、 BTS對傳輸時間TA估計)
BSC-BTS (Abis 介面):BSC 根據接入原因和現有系統中是否有資源選擇一個SDCCH信道給手機,首先需要發給BTS一個信道激活的消息,BTS 進行信道激活
BTS-BSC(Abis 介面):BTS 激活完成 給BSC 發送一條Channel Active ACK 信道激活證實 消息
BSC - 手機 : BSC 在AGCH 信道上向手機發送「立即指配指令」 消息,包含分配的SDCCH 信道描述、 接收信道申請消息的TDMA幀號、初始化時間提前量TA值、初始化最大傳輸功率 以及隨機鑒別符號
上面就是建立SDCCH 信道的過程,手機會調整到SDCCH信道上,建立鏈路,物理層建立。
然後建立數據鏈路層 Um介面使用LAPDm協議,讓手機發送SABM幀建立非同步平衡模式,然後BTS 給手機發送UA應答,數據鏈路層就這樣建立了
先看看數據鏈路層作用:增加傳輸的可靠性,將數據組成數據塊,在數據鏈路層稱為幀,幀是數據鏈路層傳送的單元,控制幀的傳輸的差錯處理、調節傳輸速率和接收方匹配網路實體之間提供數據鏈路通路的建立、維持和釋放的管理。
很明顯數據鏈路層建立通過SABM幀和UA幀來確認
Set Asynchronous Balanced Mode (SABM)--建立邏輯通道
Unnumbered Acknowledgement (UA) response-響應建立通道
上面物理層就是層1 數據鏈路層就是層2 網路層就是層3
立即指配完成後,手機收到參數 分配的SDCCH 信道描述、 接收信道申請消息的TDMA幀號、初始化時間提前量TA值、初始化最大傳輸功率 以及隨機鑒別符號
系統所指配的新信道上發送SABM幀,其中包含一個完整的L3消息(MP-L3-INF)。在Um介面,SABM幀是LAPDm層上請求建立一個多幀應答操作方式連接的消息。系統收到SABM幀後,回送一個UA幀,作為對SABM幀的應答,表明在MS與系統之間已建立了一條LAPDm通路;
另外,此UA幀的消息域包含同樣一條L3消息 含有 隨機鑒別符號 ,MS收到該消息後,與自己發送的SABM幀中隨機鑒別符號 比較,只有當完全一樣時,才認為被系統接受,說明是自己發送的信息。
L3消息中包含MS的IMSI,IMSI對每個 MS是唯一的,這可保證在該信道上只有一個MS可接入系統。在Abis介面,這條消息是ESTIND(建立指示),用來通知已建立LAPDm連接,作為對立即指配消息的應答。
SABM中攜帶的消息對於主叫來說是:cm service request; 對於被叫來說是:paging response; 對於位置更新來說:locating update request;等;另外,在手機發完SAMB幀後,會啟動定時器T3122;如果在T3122時間內,沒有收到UA確認,就會認為數據鏈路鎖死。
BSC 收到 建立指示,知道LAPDm 數據鏈路層建立。接下來就是SCCP請求
終於有鑒權和加密了,SIM卡這時有很重要的作用
手機中插入一張SIM 卡,SIM卡的保存的東西十分重要,用來被網路識別允許入網
開機的時候,會讀取SIM卡信息,有哪些信息?SIM卡的結構如下
這樣我們就讀取SIM卡所有信息
我們去營業廳辦卡的時候,營業廳會那我們的身份證進行實名,保存在持卡者相關信息中,這張SIM卡的一些信息 在運營商的網路中HLR也會保存數據
在位置更新和發起呼叫 就要進行鑒權和加密過程,所以上面數據鏈路層已經建立,後面就是鑒權和加密
SIM 卡中鑒權和加密用到 IMSI Ki A3 A5 A8 演算法 ,IMSI (International Mobile Subscriber Identity 國際移動用戶識別碼)Ki (key identifier)鑒權密鑰,信令流程在SDCCH上發送如下
手機在請求業務(呼叫、位置更新、補充業務)這裡舉例呼叫
手機發送請求 含有CKSN 如果是第一次註冊網路,因該是IMSI 如果網路中已經註冊過 那就是TMSI。CKSN 密鑰序列號碼,判斷是否可以進行無鑒權程序的RR加密, CKSN=0 表示沒有分配KC,第一次是0
MSC接收到後發給VLR ,對比資料庫判斷是不是新用戶
如果是新用戶,就向HLR/AUC發起取鑒權集請求的消息
作為響應,HLR/AUC給MSC/VLR回取鑒權集證實消息
Ki 和 A3 A8 演算法是很機密的東西只有 SIM卡和HLR/AUC中保存,sres 用來發送給BTS,和手機發送的SRES 對比,表示鑒權成功。
kc 是用來發給手機在加密的時候使用。加上隨機數的ki 加密後 ,比較安全。
KI(IMSI) + rand + A3 ---------> sres
KI(IMSI) + rand + A8 ---------> kc(密鑰)Key Cryptography
HLR/AUC 獲取IMSI 和隨機數RAND 使用A3 演算法 得到SRES 還有使用A8 演算法的出來用來加密的kc 密鑰 發送給MSC/VLR (RAND SRES Kc 被稱為鑒權三參組 一般一次發給MSC/VLR 5組,還剩下2組時 繼續向HLR/AUC 申請)
通過BTS 將RAND 和 CKSN不是0 發送給手機,手機就有有效的kc ,因為有好幾個三參數組,所以後面就可以不經過鑒權就可以直接進行加密,CKSN 和kc 是一一對應
如果手機的第一條層三消息SABM幀裡面的CKSN和網路端的CKSN一致,則認為不用進行鑒權過程,直接進行加密過程,若不一致則要經過鑒權過程,才能進行加密過程
然後手機收到RAND 進行加密生成SRES 發送給BTS 進行對比,是一致的就可以直接加密了,MSC/VLR收到後,會繼續進行鑒權核對。
具體的加密原理:
手機使用TDMA 幀號(22bit)和kc (64bit)通過A5演算法,得出加密序列(114bit)。kc 每次鑒權產生一次,但是TDMA幀號4.615ms變化一次,難度變高了
信令流程:
鑒權圖片直接成功後,MSC 會通過發送加密模式命令,手機加密成功後,就可以進行加密傳數據(這個屬於用戶面的數據傳輸)
如果已經IMSI註冊過,那麼就會分配TMSI (Temporary Mobile Subscriber Identity 臨時移動用戶識別碼)替代IMSI,一般情況 位置區改變和鑒權加密後,就會重新分配。流程:
加密完成之後,在SETUP建立之前
手機在位置區第一次註冊的時候,MSC 會將TMSI 分配給手機,當手機離開位置區的時候,手機收到TMSI 再分配命令,是加密的信息,保存在手機SIM卡中
上面 經歷了 隨機接入階段、鑒權加密階段、TCH 指配階段
然後就是主叫流程
打電話 後就是隨機接入、鑒權加密、TCH指配階段、然後獲得了SDCCH信道,手機發送Setup 消息,向MSC 提供: 請求業務類型、手機提供的承載能力、被叫用戶號碼、補充業務有附加信息
MSC 收到消息後,向VLR 查詢用戶的相關信息,VLR根據業務類型和申請的業務信息,決定呼叫可以繼續建立(比如國際長途業務沒開通就不能撥打,返回給手機 釋放完成消息)
如果通過,VLR向MSC發送 完成呼叫能力查詢 消息,MSC給手機發送 呼叫進行(call proceseding)消息,還在處理,MSC 向BSC 發送指配請求(Assignment Request)讓BSC 分配TCH 信道
BSC 給BTS 發送信道激活 消息 ,BTS 激活資源給BSC 發送信道激活證實消息,BSC 就會通過SDCCH 給 手機發送 信道指配消息,手機就會到TCH 上傳送語音
TCH 語音信道建立
然後就是被叫響應,被叫被尋呼找到,就會振鈴,就是Alerting 提醒,然後摘機 就是連接 connect
主叫同時也會收到alert 消息。說明通路建立。用戶摘機後,主叫收到應答消息,於是主叫知道了就可以說話了,主叫就會發送 Connect ACK 連接確認。就開始說話吧
上面就是最基本註冊網路,打電話的大致流程,其他的我不準備繼續研究。
上面用到了TDMA 幀,TDMA 幀理解
TDMA (Time Division Mutiple Access)時分多址,GSM900 上行 890~915MHZ
下行 935~960MHZ
GSM 在無線路徑上傳輸 突發脈衝 只有156.25bit,每個時隙佔用頻譜資源200khz。
突發脈衝在時間和頻率坐標上發送 稱為time slot 時隙,時隙以0.577ms 時間重複
一個TDMA 幀有8個時隙 4.615ms
每個bit 佔用
跳頻本質:把1s 的信號 分成217份,每一份通過不斷變化的頻率發送出去
全速率TCH 信道編碼
20ms 語音塊使用8kHz 採樣 8000Hz/s×0.02s = 160個樣本
根據A律13折線 量化編碼 變成13bit 加上3bit 形成16bit 可以和其他編碼兼容
最後經過編碼後 260bit 分成50bit 最重要比特 、132個重要比特、78個不重要比特
50bit 加上3bit 奇偶校驗 聯通132bit 重要比特 4個尾比特 進行1:2 卷積編碼 378bit 最後78 不重要比特 共有456比特
每個突發脈衝 156.25bit 計算
LAPDm 幀編碼 屬於數據鏈路層 應用在邏輯信道 BCCH PCH AGCH SDCCH FACCH SACCH 但是SCH 和 RACH 不算
一個LAPDm幀有23Byte 即 184bit 加上 40bit 糾錯循環碼 224bit 經過1:2 卷積編碼 就是456bit 信息,被放在4個突發脈衝中,每個突發脈衝只能攜帶114bit信息 (2個57bit加密比特)
SCH 信道編碼 知道SCH 對應突發脈衝
訓練序列有64bit ,每個SCH 信道有25bit 消息欄位,19bit 是幀號,6bit 用於BISC 號, 25bit加上10bit 奇偶校驗位 和4bit 尾數,就有39比特 將39比特進行卷積編碼 就有78比特
RACH 信道編碼
RACH 由 8比特 消息比特組成,3bit 建立原因+ 5比特 隨機鑒別符號,然後8比特 加上6比特 網路色碼 (6比特BISC 和 6比特 奇偶校驗位 模2 取)加上4比特 尾數 就有18比特,進行1:2 卷積編碼 得到36加密比特
詳細介紹時隙 TDMA 幀 跳頻 復幀還有超幀的關係
每個時隙對應一個物理信道,突發脈衝是在時隙上發送的
突發脈衝分為 5種類型
NB 普通突發脈衝序列 Normal Burst
DB 空閑突發脈衝序列 Dummy Burst
FB 頻率校正突發脈衝序列 Frequency Correction Burst
SB 同步突發脈衝序列 Synchronization burst
AB 接入突發脈衝序列 Access Burst
普通突發脈衝序列 用於攜帶業務信道TCH 以及除了RACH SCH FCCH 控制信道上的信息
TB 尾比特 000 幫助均衡器識別起始位和終止位
保護間隔 空白信息,防止時隙交錯
加密比特是經過A5加密填充
F 標誌 打電話時候我們一直佔用TCH 信令不能傳輸了,如果需要傳輸,2個F設置1 FACCH 就會使用突發脈衝序列,如果只設置一個 突發脈衝序列 一半可以使用,0 表示TCH 1 表示FACCH
頻率校正突發脈衝序列
相當於特定頻率的未調製的載波在FCCH 上發送
固定比特 全是0 手機一下子就能識別
同步突發脈衝序列
用於和手機時間同步 含有TDMA幀號 (FN Frame Number)以及基站識別碼(BISC)相關信息
接入突發脈衝序列
用於手機的隨機接入
保護間隔特別長,因為手機嘗試接入網路時,不知道具體位置無法計算舉例,所以設置比較長
空閑突發脈衝序列
在其他信道不發送突發脈衝的時候,基站接收小區配置c0下行信道每個時隙發送的突發脈衝,手機要 不斷接收BCCH 射頻功率,進行小區選擇,如果BCCH 載頻的TCH 有時候不發送信號,影響載頻信號強度的評估,評估是根據採樣點採用的平均值而得來的
所以不能讓BCCH載頻時隙空閑,發送空閑突發脈衝
下面是信道的分類
TDMA 幀
一個TDMA幀包含8個時隙 ,需要定義TDMA幀號,用來手機和BTS同步 語音信號的加密,在SCH上同步,加密是和kc原始信號通過A5加密,有了TDMA幀號 手機就可以知道是TCH載頻還是BCCH載頻,0號時隙傳輸的BCCH信號還是TCH信號
復幀,含有26幀持續時間為120ms 和含有51幀持續時間為235.8ms這兩種復幀
26幀的復幀
包含26個TDMA幀,幀12 是第13個幀 用作慢速隨路控制信道(SACCH)在手機和BTS之間傳送鏈路控制信息,12個突發脈衝序列的業務信息,一個突發脈衝的SACCH 然後是12個突發脈衝序列的業務信息,和一個空閑的突發脈衝序列
採用半速率,26幀業務復幀可以傳2路手機通話
51幀的復幀
包含51個TDMA幀,用於攜帶BCH 和CCCH 專用於控制信道
超幀
51 和 26沒有公約數,1326 幀就是超幀
巨幀
一個巨幀包含2048個超幀
26*56*2048 = 2715648 個TDMA幀,持續時間是3h 28min 53s 760ms 每個TDMA幀 由幀計數器FN 標記,和加密、跳頻有關係
幀的理解實在物理層,還沒有完全整理
--------------------------------
在程序員的路上你不孤單,還有賤賤的楊
歡迎經常來逛博客,是我工作中遇到的零零散散記得筆記,不多,但會不定時更新和大家探討
初始篇:Android 源碼環境搭建(OSX) - engineer_james的博客 - CSDN博客
歡迎給我郵件 jamesyang1991cn@gmail.com
推薦閱讀:
※C5GAME封禁飾品補償方案細則與協議是什麼?
※詳談OSI七層網路協議和TCP/IP協議
※隨機接入和信道分配
※MS主叫流程 分析