蘇靜+班正宇
摘 要:本文結合SIP軟交換系統的結構,針對SIP軟交換系統的功能及相關問題,對系統做出擴展,確保系統在響應正常業務的同時,增加了對Android系統的支持,結合NDK開發框架,設計了一套基于SIP協議的安卓客戶端。
關鍵詞:SIP;軟交換;DNK開發框架;安卓客戶端
中圖分類號:TN915 文獻標識碼:A 文章編號:2095-1302(2014)03-0039-04
0 引 言
掌上通信軟件作為手機應用的一部分,正發揮著巨大的作用。隨著互聯網的不斷改善,在互聯網上利用網絡進行語音通話已成為現實,網絡電話應運而生。網絡電話的原理正是采用了VoIP(Voice over Internet Protocol)技術實現的,VoIP是一種建立在互聯網上的數字化或分組化的語音傳輸技術。在VoIP中常用的控制協議(Control Protocol)有H.323、SIP、MEGACO和MGCP。其中SIP(會話發起協議)是建立VOIP連接的IETF標準。為了方便用戶之間的通信,需要設計一款基于SIP協議的Android應用軟件。
SIP協議的Android平臺的通信軟件開發可以進一步提高人們間的通信質量,解決人與人之間由于遠距離通信而產生高昂話費的問題。
1 需求分析
SIP軟交換系統是一個支持SIP協議通信的服務器,分為服務器和Android客戶端兩部分。服務器主要完成數據的封包請求的轉發,路由的尋址等,讓用戶從Android客戶端中發出的數字信息通過服務器的處理轉發給另外一個客戶機,而另外一個Android客戶機通過解析從服務器中收到的數據,并把信號還原為原始數據,從而達到通信的目的。主要完成以下服務:服務器啟動,將服務器綁定到指定的IP地址上,客戶機連接這個IP地址上服務器,客戶機通話等。
本系統是為了達到用戶與用戶間的通信,讓用戶能在不通過三大運營商的收費情況下,實現免費通話,從而降低了用戶的經濟開銷,并且通話不受任何限制,使用戶之間暢所欲言。
SIP軟交換系統由服務器和Android客戶端組成:
服務器功能:數據的讀取與解析,SIP版權認證,創建SIP協議棧,綁定地址、定位、認證、能力,會話管理,數據包的接收、解析、過濾、組裝與應答,Proxy行為;
Android客戶端功能:連接服務器,發送語音,接收數據,解析數據。
本系統的整體功能結構圖如圖1所示。
圖1 SIP系統整體結構圖
2 系統設計
2.1 系統主要功能設計
(1)數據(*.xml)的讀取與解析設計
在Proxy Server啟動之前,需要預先對Proxy Server進行設置,如SIP棧的名稱、IP、端口、路由等參數的設置,考慮到系統移植和維護的方便性,把這些信息寫在配置文件configuration.xml中,在系統啟動的時候讀取,以便于移植和維護。
(2)SIP版權認證設計
系統啟動時,應對系統的版權進行驗證,只有合法授權的系統才能正確啟動。主要認證最大用戶數(Max),失效日期(Expiration),系列號(Serial),網卡物理地址(Mac),密鑰 (Key),同樣這些信息也寫在了配置文件license.xml中。
(3)創建SIP協議棧設計
棧是一種數據結構,只能在一端進行插入和刪除的線性表,按照后進先出的存取規則。創建SIP協議棧后,在接收到一個以太網數據幀時,數據可以方便地從協議棧里面由底部向頂部上升,同時報文首部在各層協議上被去掉,方便讀取報文數據。報文首部的協議標識在每層協議上都很方便檢查,這樣就可確定數據接收的上層協議,同時按照事先規定好的規則分析出需要的內容,例如數據包的源端口號、源IP、目的IP等等。
(4)注冊、定位、認證、能力設計
Proxy Server啟動以后,要獲得代理的服務,必須先注冊成為Proxy Server的用戶,用戶信息存放在后臺數據庫中,包含用戶名、密碼、服務器地址等。要對用戶進行代理,必須能定位用戶位置,對用戶身份進行認證,確認后把呼叫方和被叫方的地址、媒體參數等提供給對方,以完成會話的創建。
(5)會話管理設計
包括發送和終止會話、修改會話參數、激活服務等。
(6)數據包的接收、解析、過濾、組裝與應答
系統在收到以太網的數據包后,對數據包進行解析,過濾掉“非法”數據包,獲取“合法”的正常業務信息,組裝數據包進行交互。
(7)Proxy行為設計
當Proxy Server收到一個請求時,在做代理之前,首先應該判斷自己是否需要響應該請求,是否非法或者沒有可信任證書需要認證,是應該按有狀態還是無狀態的方式處理。無狀態,即Proxy只是簡單的轉發到下一個Proxy Server,之后該請求的相關資料就被丟棄。這些信息(特別是事務信息)會被有狀態的Proxy保留,所有接收到的請求和所有接收請求的應答的相關信息被保留。這些被它保留的信息用于處理與這個請求相關的后續消息。
(8)Android連接服務器設計
當服務器注冊到一個網絡地址上時,客戶端的Android手機獲取服務器綁定的IP地址,然后發送請求,若IP地址無誤,那么Android客戶端順利連接上服務器。
(9)Android發送語音和接收語音消息設計
根據已經連接上SIP軟交換系統的Android客戶端,會話終端向目標終端發起呼叫或者會話終端監聽被叫,經服務器驗證注冊,采用SIP協議實現語音通信。
2.2 Android內線呼叫運作模式設計
Android內線呼叫運作的具體流程如圖2所示。關鍵步驟分析如下:
F1:INVITE是終端代理201@192.168.6.5 作為主叫向代理服務器192.168.6.180發送INVITE請求;
F2:407 Proxy Authentication Required表示代理服務器對主叫進行INVITE認證發出407請求碼,認證成功;
F3:ACK為回送ACK請求,表示已收到Proxy對INVITE請求的最終響應;
F4:INVITE為終端代理201@192.168.6.5 作為主叫向代理服務器192.168.6.180發送INVITE請求,邀請發起一路呼叫;
F5:INVITE表示代理服務器192.168.6.180向終端代理被叫202@192.168.6.3發送INVITE請求,邀請被叫發起一路呼叫;
F6:100 Trying被叫Android終端向服務器發出呼叫處理中的應答消息,100 Trying;
F7:180 Ringing表示被叫Android終端振鈴并向服務器發出振鈴消息,180 Ringing;
F8:100 Trying表示服務器向主叫發出呼叫處理中的應答消息,100 Trying;
F9:180 Ringing為服務器向主叫發出振鈴消息,180 Ringing,主叫振鈴;
F10和F11:200 OK表示主叫和被叫之間呼叫建立,發出200 OK應答消息;
F12和F13:ACK為呼叫建立的確認消息;
F14和F15:BYE為結束請求;
F16和F17:200 OK表示主叫和被叫之間結束呼叫,發出200 OK應答消息。
圖2 Android內線呼叫時序圖
2.3 Android客戶端設計
根據RFC 3261的定義,多媒體會話(Multimedia Session)是指一組多媒體發送者和接收者,以及從發送者到接收者的數據流。Android客戶端界面設計圖如圖3所示。
圖3 主界面設計圖
3 數據庫設計
3.1 系統E-R圖
本系統的實體有計算機SIP服務器、Android終端用戶,其E-R圖如圖4所示。
圖4 SIP系統的E-R圖
3.2 數據表的結構
本系統一共使用了47張數據表,由于表與表之間的關系太過于復雜,故這里只選出其中用到的2張表。其中t_extension表主要是用來擴展電話機的電話號碼。extension為主鍵,如表1所列。
表1 t_extension表
字段名 數據類型 說明 備注
extension 自動編號 電話號碼 主鍵
tenant_id 文本 用戶名編號 外鍵
extension_type 文本 擴展類型 ——
sup_extension 默認(no) 子擴充 ——
而留言表則主要是保存前表與表之間的關系。id_table_id為主鍵。如表2所列。
表2 id_table表
字段名 數據類型 說明 備注
id_table_id 自動編號 記錄ID 主鍵
table_name 自動編號 擴展表明 ——
next_id 文本 保存時間 ——
quantity 文本 保存通信記錄 ——
4 系統功能實現
要對Android進行過濾,難點不在采用什么樣的方法去過濾,而在于如何識別異常,這就需要系統在開發和數據解析的時候嚴格遵循標準的協議,這樣才能精確識別異常數據包。
4.1 Android運行主界面
主頁面主要用來顯示輸入電話號碼的地址欄和連接SIP服務器的IP地址。
4.2 SIP賬戶設置模塊
SIP賬戶設置的列表頁面主要是進行基本的通話設置與起始連接SIP服務器的設置,用戶有很多不同的選擇。當點擊所選的SIP賬戶名稱時,就會轉到該設置的詳細設置頁面。SIP賬戶設置的列表頁面如圖5所示。
圖5 設置列表
SIP賬戶的詳細設置主要有認證用戶名稱、密碼、服務器和域的設置與查看,讓用戶知道如何設置才能順利連接上服務器,以及連接使用的端口是多少,最重要的是還能查看支持的VoIP類型。
4.3 認證用戶名模塊
因為連接服務器的Android客戶端可能有很多,所以必須進行認證,只有認證合法了才能進行友好回話,否則不予以連接,或者連接中斷。用戶可進行多種選擇。該頁面如圖6所示。
圖6 認證用戶名列表頁面
4.4 Wi-Fi模塊
Wi-Fi模塊的列表頁面可列出當前能夠使用的各個網絡的連接方式名稱,用戶可從中進行選擇。當點擊所選的連接網絡方式名稱時,就會轉到該詳細頁面。該頁面如圖7所示。
在Wi-Fi模塊詳細頁面主要設置如何使用Android手機連接SIP服務器,同時還提供優先撥打功能。該設置信息一目了然。該頁面如圖8 所示。
圖7 Wi-Fi模塊頁面
這樣設置完成后,就可以撥打電話,然后通話了。
5 結 語
本文從Android手機出發,針對SIP軟交換系統的原理,在Android手機上進行合理的設置與開發,實現了基于Android的SIP軟交換系統。同時通過對SIP軟交換系統的擴展,使其在Android客戶端上也能使用,最終在一定程度上實現了對系統的改良。
圖8 詳細展示設置
參 考 文 獻
[1] 張揚. 基于SIP的軟交換在集群通信系統中的設計與實現[J].計算機系統應用,2010,19(1):31-35.
[2] 劉習義.基于SIP協議VoIP軟終端的研究與實現[J].信息安全與技術,2011(10):33-35.
[3] 楊磊,林海泉,朱劍鋒.SIP軟交換系統群呼的實現[J].軟件,2012,33(3):44-46.
[4] 劉德山,金百東,張建華.Java 程序設計[M].北京:科學出版社,2012.
[5] 隆益民.Android應用開發[M].廣州:中山大學出版社,2010.
SIP soft switch system base on Android
SU Jing, BAN Zheng-yu
(College of Information and Electrical Engineering, Qiongzhou University, Sanya 572022, China)
Abstract: Aiming at the function of SIP soft switch system and some related problem, the system is extended in combination of the SIP soft switch system structure, which added support for Android system and ensured that the system in response to normal business at the same time. A set of Android client based on SIP protocol is designed in combination of NDK development framework.
Keywords: SIP; soft switch; NDK development framework;Android client
Android內線呼叫運作的具體流程如圖2所示。關鍵步驟分析如下:
F1:INVITE是終端代理201@192.168.6.5 作為主叫向代理服務器192.168.6.180發送INVITE請求;
F2:407 Proxy Authentication Required表示代理服務器對主叫進行INVITE認證發出407請求碼,認證成功;
F3:ACK為回送ACK請求,表示已收到Proxy對INVITE請求的最終響應;
F4:INVITE為終端代理201@192.168.6.5 作為主叫向代理服務器192.168.6.180發送INVITE請求,邀請發起一路呼叫;
F5:INVITE表示代理服務器192.168.6.180向終端代理被叫202@192.168.6.3發送INVITE請求,邀請被叫發起一路呼叫;
F6:100 Trying被叫Android終端向服務器發出呼叫處理中的應答消息,100 Trying;
F7:180 Ringing表示被叫Android終端振鈴并向服務器發出振鈴消息,180 Ringing;
F8:100 Trying表示服務器向主叫發出呼叫處理中的應答消息,100 Trying;
F9:180 Ringing為服務器向主叫發出振鈴消息,180 Ringing,主叫振鈴;
F10和F11:200 OK表示主叫和被叫之間呼叫建立,發出200 OK應答消息;
F12和F13:ACK為呼叫建立的確認消息;
F14和F15:BYE為結束請求;
F16和F17:200 OK表示主叫和被叫之間結束呼叫,發出200 OK應答消息。
圖2 Android內線呼叫時序圖
2.3 Android客戶端設計
根據RFC 3261的定義,多媒體會話(Multimedia Session)是指一組多媒體發送者和接收者,以及從發送者到接收者的數據流。Android客戶端界面設計圖如圖3所示。
圖3 主界面設計圖
3 數據庫設計
3.1 系統E-R圖
本系統的實體有計算機SIP服務器、Android終端用戶,其E-R圖如圖4所示。
圖4 SIP系統的E-R圖
3.2 數據表的結構
本系統一共使用了47張數據表,由于表與表之間的關系太過于復雜,故這里只選出其中用到的2張表。其中t_extension表主要是用來擴展電話機的電話號碼。extension為主鍵,如表1所列。
表1 t_extension表
字段名 數據類型 說明 備注
extension 自動編號 電話號碼 主鍵
tenant_id 文本 用戶名編號 外鍵
extension_type 文本 擴展類型 ——
sup_extension 默認(no) 子擴充 ——
而留言表則主要是保存前表與表之間的關系。id_table_id為主鍵。如表2所列。
表2 id_table表
字段名 數據類型 說明 備注
id_table_id 自動編號 記錄ID 主鍵
table_name 自動編號 擴展表明 ——
next_id 文本 保存時間 ——
quantity 文本 保存通信記錄 ——
4 系統功能實現
要對Android進行過濾,難點不在采用什么樣的方法去過濾,而在于如何識別異常,這就需要系統在開發和數據解析的時候嚴格遵循標準的協議,這樣才能精確識別異常數據包。
4.1 Android運行主界面
主頁面主要用來顯示輸入電話號碼的地址欄和連接SIP服務器的IP地址。
4.2 SIP賬戶設置模塊
SIP賬戶設置的列表頁面主要是進行基本的通話設置與起始連接SIP服務器的設置,用戶有很多不同的選擇。當點擊所選的SIP賬戶名稱時,就會轉到該設置的詳細設置頁面。SIP賬戶設置的列表頁面如圖5所示。
圖5 設置列表
SIP賬戶的詳細設置主要有認證用戶名稱、密碼、服務器和域的設置與查看,讓用戶知道如何設置才能順利連接上服務器,以及連接使用的端口是多少,最重要的是還能查看支持的VoIP類型。
4.3 認證用戶名模塊
因為連接服務器的Android客戶端可能有很多,所以必須進行認證,只有認證合法了才能進行友好回話,否則不予以連接,或者連接中斷。用戶可進行多種選擇。該頁面如圖6所示。
圖6 認證用戶名列表頁面
4.4 Wi-Fi模塊
Wi-Fi模塊的列表頁面可列出當前能夠使用的各個網絡的連接方式名稱,用戶可從中進行選擇。當點擊所選的連接網絡方式名稱時,就會轉到該詳細頁面。該頁面如圖7所示。
在Wi-Fi模塊詳細頁面主要設置如何使用Android手機連接SIP服務器,同時還提供優先撥打功能。該設置信息一目了然。該頁面如圖8 所示。
圖7 Wi-Fi模塊頁面
這樣設置完成后,就可以撥打電話,然后通話了。
5 結 語
本文從Android手機出發,針對SIP軟交換系統的原理,在Android手機上進行合理的設置與開發,實現了基于Android的SIP軟交換系統。同時通過對SIP軟交換系統的擴展,使其在Android客戶端上也能使用,最終在一定程度上實現了對系統的改良。
圖8 詳細展示設置
參 考 文 獻
[1] 張揚. 基于SIP的軟交換在集群通信系統中的設計與實現[J].計算機系統應用,2010,19(1):31-35.
[2] 劉習義.基于SIP協議VoIP軟終端的研究與實現[J].信息安全與技術,2011(10):33-35.
[3] 楊磊,林海泉,朱劍鋒.SIP軟交換系統群呼的實現[J].軟件,2012,33(3):44-46.
[4] 劉德山,金百東,張建華.Java 程序設計[M].北京:科學出版社,2012.
[5] 隆益民.Android應用開發[M].廣州:中山大學出版社,2010.
SIP soft switch system base on Android
SU Jing, BAN Zheng-yu
(College of Information and Electrical Engineering, Qiongzhou University, Sanya 572022, China)
Abstract: Aiming at the function of SIP soft switch system and some related problem, the system is extended in combination of the SIP soft switch system structure, which added support for Android system and ensured that the system in response to normal business at the same time. A set of Android client based on SIP protocol is designed in combination of NDK development framework.
Keywords: SIP; soft switch; NDK development framework;Android client
Android內線呼叫運作的具體流程如圖2所示。關鍵步驟分析如下:
F1:INVITE是終端代理201@192.168.6.5 作為主叫向代理服務器192.168.6.180發送INVITE請求;
F2:407 Proxy Authentication Required表示代理服務器對主叫進行INVITE認證發出407請求碼,認證成功;
F3:ACK為回送ACK請求,表示已收到Proxy對INVITE請求的最終響應;
F4:INVITE為終端代理201@192.168.6.5 作為主叫向代理服務器192.168.6.180發送INVITE請求,邀請發起一路呼叫;
F5:INVITE表示代理服務器192.168.6.180向終端代理被叫202@192.168.6.3發送INVITE請求,邀請被叫發起一路呼叫;
F6:100 Trying被叫Android終端向服務器發出呼叫處理中的應答消息,100 Trying;
F7:180 Ringing表示被叫Android終端振鈴并向服務器發出振鈴消息,180 Ringing;
F8:100 Trying表示服務器向主叫發出呼叫處理中的應答消息,100 Trying;
F9:180 Ringing為服務器向主叫發出振鈴消息,180 Ringing,主叫振鈴;
F10和F11:200 OK表示主叫和被叫之間呼叫建立,發出200 OK應答消息;
F12和F13:ACK為呼叫建立的確認消息;
F14和F15:BYE為結束請求;
F16和F17:200 OK表示主叫和被叫之間結束呼叫,發出200 OK應答消息。
圖2 Android內線呼叫時序圖
2.3 Android客戶端設計
根據RFC 3261的定義,多媒體會話(Multimedia Session)是指一組多媒體發送者和接收者,以及從發送者到接收者的數據流。Android客戶端界面設計圖如圖3所示。
圖3 主界面設計圖
3 數據庫設計
3.1 系統E-R圖
本系統的實體有計算機SIP服務器、Android終端用戶,其E-R圖如圖4所示。
圖4 SIP系統的E-R圖
3.2 數據表的結構
本系統一共使用了47張數據表,由于表與表之間的關系太過于復雜,故這里只選出其中用到的2張表。其中t_extension表主要是用來擴展電話機的電話號碼。extension為主鍵,如表1所列。
表1 t_extension表
字段名 數據類型 說明 備注
extension 自動編號 電話號碼 主鍵
tenant_id 文本 用戶名編號 外鍵
extension_type 文本 擴展類型 ——
sup_extension 默認(no) 子擴充 ——
而留言表則主要是保存前表與表之間的關系。id_table_id為主鍵。如表2所列。
表2 id_table表
字段名 數據類型 說明 備注
id_table_id 自動編號 記錄ID 主鍵
table_name 自動編號 擴展表明 ——
next_id 文本 保存時間 ——
quantity 文本 保存通信記錄 ——
4 系統功能實現
要對Android進行過濾,難點不在采用什么樣的方法去過濾,而在于如何識別異常,這就需要系統在開發和數據解析的時候嚴格遵循標準的協議,這樣才能精確識別異常數據包。
4.1 Android運行主界面
主頁面主要用來顯示輸入電話號碼的地址欄和連接SIP服務器的IP地址。
4.2 SIP賬戶設置模塊
SIP賬戶設置的列表頁面主要是進行基本的通話設置與起始連接SIP服務器的設置,用戶有很多不同的選擇。當點擊所選的SIP賬戶名稱時,就會轉到該設置的詳細設置頁面。SIP賬戶設置的列表頁面如圖5所示。
圖5 設置列表
SIP賬戶的詳細設置主要有認證用戶名稱、密碼、服務器和域的設置與查看,讓用戶知道如何設置才能順利連接上服務器,以及連接使用的端口是多少,最重要的是還能查看支持的VoIP類型。
4.3 認證用戶名模塊
因為連接服務器的Android客戶端可能有很多,所以必須進行認證,只有認證合法了才能進行友好回話,否則不予以連接,或者連接中斷。用戶可進行多種選擇。該頁面如圖6所示。
圖6 認證用戶名列表頁面
4.4 Wi-Fi模塊
Wi-Fi模塊的列表頁面可列出當前能夠使用的各個網絡的連接方式名稱,用戶可從中進行選擇。當點擊所選的連接網絡方式名稱時,就會轉到該詳細頁面。該頁面如圖7所示。
在Wi-Fi模塊詳細頁面主要設置如何使用Android手機連接SIP服務器,同時還提供優先撥打功能。該設置信息一目了然。該頁面如圖8 所示。
圖7 Wi-Fi模塊頁面
這樣設置完成后,就可以撥打電話,然后通話了。
5 結 語
本文從Android手機出發,針對SIP軟交換系統的原理,在Android手機上進行合理的設置與開發,實現了基于Android的SIP軟交換系統。同時通過對SIP軟交換系統的擴展,使其在Android客戶端上也能使用,最終在一定程度上實現了對系統的改良。
圖8 詳細展示設置
參 考 文 獻
[1] 張揚. 基于SIP的軟交換在集群通信系統中的設計與實現[J].計算機系統應用,2010,19(1):31-35.
[2] 劉習義.基于SIP協議VoIP軟終端的研究與實現[J].信息安全與技術,2011(10):33-35.
[3] 楊磊,林海泉,朱劍鋒.SIP軟交換系統群呼的實現[J].軟件,2012,33(3):44-46.
[4] 劉德山,金百東,張建華.Java 程序設計[M].北京:科學出版社,2012.
[5] 隆益民.Android應用開發[M].廣州:中山大學出版社,2010.
SIP soft switch system base on Android
SU Jing, BAN Zheng-yu
(College of Information and Electrical Engineering, Qiongzhou University, Sanya 572022, China)
Abstract: Aiming at the function of SIP soft switch system and some related problem, the system is extended in combination of the SIP soft switch system structure, which added support for Android system and ensured that the system in response to normal business at the same time. A set of Android client based on SIP protocol is designed in combination of NDK development framework.
Keywords: SIP; soft switch; NDK development framework;Android client