SIP學習之旅【環境搭建篇】
經過兩天的資料收集對SIP有了初步的了解,在網絡電話VOIP應用方案中很多都是采用Linux服務器部署電信級SIP Server軟件或者使用專門的硬件服務器來提供SIP Server服務,客戶端用SIP電話機或軟電話,結構組成包括:SIP終端,代理服務器,重定向服務器,注冊服務器器,鑒權服務器,SIP Server服務器等,很龐大、很復雜、很無奈(沒有多余的電腦給我裝Linux,更沒有SIP硬件),所以我需要的是Windows下運行的SipServer和SoftPhone,以及一個抓包工具就可以了。
SipServer:MiniSipServer ,下載地址 http://www.myvoipapp.com/download/index.html
SoftPhone: X-Lite ,下載地址 http://www.counterpath.com/x-lite-4-for-windows-download.html
抓包工具:MiniSniffer(這工具有個缺陷就是沒有報文時間,不過用習慣了就是它了),點擊下載
SIP協議文檔:SIP流程圖帶動畫解釋.pdf,點擊下載
組網結構圖:

部署:
1. 安裝並啟動MiniSipServer,一路Next就行,通過開始菜單啟動,默認監聽 UDP 5060 端口;系統自帶三個默認用戶,密碼和用戶名一樣,在下一步要用到。
2. 安裝並配置X-Lite
X-Lite需要.NetFramework4.0和VC2010 SP1,安裝時聯網下載。
完整的配置方法參考 Setup IP PBX for small business step by step,介紹比較全面
配置“本機”上的X-Lite(userID:100 password:100 );“測試機”上的X-Lite(userID:101 password:101)

3.通過X-Lite讓測試機和本機通話
在本機和測試機上都運行X-Lite軟件后,在MiniServerIP中點擊“分機”查看用戶在線狀態,登陸的用戶圖標是綠色;在命令行下可以查看連接。如下圖:
。
4. 抓包並分析SIP協議
a.關掉MiniSipServer和兩個X-Lite,運行MiniSniffer抓包工具,並開始抓包。

b.運行 MiniSipServer和測試機上的X-Lite,因為MiniSniffer好像抓不到本機端口之間的數據包也為了便於分析數據就運行測試機上的 X-Lite客戶端。記住在運行之前打開MiniServerSip的報文跟蹤功能。

c.對比抓包和跟蹤信息,經過對比分析抓包和MiniSipServer自身的報文跟蹤信息是一致的,所以為了以后調試和學習Sip協議完全可以使用 MiniSniffer做為輔助工具。


為了便於分析,保存Sniffer中的報文。
d.分析報文,根據 RFC3261 中文版 第22.3章的描述,注冊流程分為4步:

1)上行Register
REGISTER sip:192.168.1.132 SIP/2.0
2)下行認證要求407報文
SIP/2.0 407 Proxy Authentication Required
3)上行包含認證信息的Register
REGISTER sip:192.168.1.132 SIP/2.0
4)下行注冊成功信息
SIP/2.0 200 OK
在第三步上傳的報文中包含密碼信息,但認證算法太麻煩,沒能手工解析或構造出來,關於認證算法參考文章:http://blog.sina.com.cn/s/blog_4b839a1b01000bqq.html
至此,對SIP協議及其流程有了個清晰的認識,為以后能夠更好的理解協議棧找到了一個可行的方法。
這篇學習記錄前段時間寫了一半,今天補齊為2011年畫個句號,來年再找個合適的開源庫寫一個軟電話的例子,到時對SIP協議棧的學習就可以告一段落了。爭取在春節前完成。。。。。
明天就是2012了,今天拿到了駕照
。祝願各位圓友 元旦快樂。
posted @ 2011-12-31 15:44 趙保龍 閱讀(676) 評論(1) 編輯
SIP學習之旅【資料收集篇】
背景:
接到一個任務將某個廠家提供的視頻SDK進行封裝,接入某電網公司視頻監控統一平台,從該平台提出的接口協議中第一次看到SIP和一些交互報文。又一次深深感受到知識的匱乏。。。。。歷經兩天,google、論壇、博客全用上了收集相關資料,覺着不錯的列舉如下:
1. SIP開發環境的搭建
http://www.rosoo.net/a/201007/9819.html
要在windows或者linux平台下開發基於SIP的軟電話,需要以下軟件
服務器端軟件: 注冊多個客戶端到服務器上,可以進行通話測試
SIP客戶端軟件:主要用於測試,可以對別人已經完成的客戶端進行抓包,以比對自己程序的發包數據
SIP協議棧:基於某個現成的SIP協議棧來開發會加快開發進度
RTP棧:傳輸語言或者視頻數據的協議棧
抓包測試工具:調試網絡程序最有效的辦法
以下介紹這些軟件主要以開源軟件為主。。。。 詳見原文
2. 基於SIP協議的視頻通訊
http://tech.163.com/05/0101/15/1915T5RL00091590.html
講了三個方面:
sip協議及其發展 、 sip系統的基本組成(用戶代理、sip代理服務器、重定向服務器以及sip注冊服務器)、sip同h.323的關系
3.sip協議學習
http://blog.csdn.net/kofshower/article/details/1617760
講解了SIP中的INVITE、NOTIFY、MESSAGE、INFO 四個會話過程。
4. sip學習網絡資源索引貼
http://hi.baidu.com/wanhongnan/blog/item/519ca001589efe01738da54b.html
鏈接很多,非常全
5.SIP資料匯總
http://www.cnblogs.com/mahang/archive/2011/10/07/2200796.html
SIP協議、Asterisk、OpenSIPS、NAT穿透(即SIP打洞)
6. SIP流程圖帶動畫解釋
這個是真不錯,圖文並茂講解了 SIP流程圖、注冊、會話建立和注銷
7.SIP Stack with SIP Proxy - (VOIP)
http://www.codeproject.com/KB/cs/SIP_stack_with_SIP_proxy.aspx?msg=3066858
用到了LumiSoft.Net.SIP開源類庫
8.Introduction to SIP for Java, C#, and VB Developers
http://www.codeproject.com/KB/IP/SIPIntroduction.aspx?q=sip+client
講解的夠細,英文的,可惜提到的類庫都不開源。
很多人提到的SIP Server:
1.Asterisk
安裝教程 http://www.docin.com/p-154358866.html
只有Linux版本,配置復雜。
2.OpenSIPS
開源SIP服務器OpenSIPS應用介紹
http://www.docin.com/p-163183479.html
3. SIPp
SIPp 學習筆記 一 (安裝)
http://blog.csdn.net/nunogomes18/article/details/2461562
最重要的事一個網友給我回復的郵件:
服務端: minisipserver,partysip, opensips
客戶端:osip/exoisp/ortp/mediastreamer/linphone
這下終於可以吧開了兩天的IE關一下了,明天配置一個測試環境。
