• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      軟交換實驗系統(tǒng)SIP信令監(jiān)聽軟件的設計與實現(xiàn)*

      2010-03-14 09:04:46毅,馬丹,唐
      電視技術 2010年10期
      關鍵詞:監(jiān)聽流程圖數(shù)據(jù)包

      張 毅,馬 丹,唐 紅

      (重慶郵電大學 通信與信息工程學院,重慶 400065)

      1 引言

      軟交換是下一代網(wǎng)絡的控制功能實體,為NGN具有實時性要求的業(yè)務提供呼叫控制和連接控制功能,是下一代網(wǎng)絡呼叫與控制的核心。在軟交換中,一個重要的控制協(xié)議就是會話初始化協(xié)議(Session Initial Protocol,SIP)。SIP協(xié)議用來建立、修改和終止多媒體會話[1]。隨著交換技術的快速發(fā)展,實驗課程也在不斷更新,軟交換和SIP協(xié)議等已成為該課程的主要內(nèi)容。因此,設計一套軟交換實驗系統(tǒng)來配合理論教學,使學生深入理解和掌握軟交換系統(tǒng)的工作原理已勢在必行。

      為了將軟交換實驗系統(tǒng)的內(nèi)部工作過程開放出來,該系統(tǒng)的一個重要任務就是實時監(jiān)聽SIP通話創(chuàng)建、修改和釋放過程。還要實現(xiàn)包括用戶代理及服務器的配置、SIP網(wǎng)絡平臺和信令模塊的組建等其他的實驗相關內(nèi)容,而Wireshark等通用平臺不能更好地與這些具體實驗內(nèi)容相融合?;诖朔N需求,筆者設計并實現(xiàn)了一個軟交換實驗系統(tǒng)中用于監(jiān)聽[2]和顯示SIP信令的軟件平臺。

      2 總體設計

      2.1 實驗系統(tǒng)環(huán)境介紹

      軟交換實驗系統(tǒng)分為硬件和軟件兩部分。硬件部分由網(wǎng)絡平臺和多個PC組成,如圖1所示。其中一臺PC做服務器主機,其余PC做客戶端主機。其中的網(wǎng)絡平臺采用交換機,因為本實驗系統(tǒng)對使用人數(shù)(即端口數(shù))和帶寬等相關性能參數(shù)有更高的要求。但是,這種方法的實施增加了監(jiān)聽的難度。筆者將深入探討交換式以太網(wǎng)環(huán)境下客戶端如何對服務器進行遠程監(jiān)聽的方法。

      軟件部分是由服務器端的SIP服務器和客戶端的軟交換終端及本軟件組成。網(wǎng)絡監(jiān)聽技術有2個要點:1)盡可能完整地捕獲網(wǎng)絡上的數(shù)據(jù)包;2)對捕獲到的數(shù)據(jù)包進行分析和翻譯,并將翻譯結果顯示出來。因此,首先要在客戶端遠程捕獲服務器端的SIP數(shù)據(jù)包,然后對捕獲到的數(shù)據(jù)包進行分析,包括數(shù)據(jù)包的解析、保存、過濾和顯示。軟交換實驗系統(tǒng)的軟件功能框圖如圖2所示。

      2.2 交換環(huán)境下的監(jiān)聽方法

      交換環(huán)境下實現(xiàn)監(jiān)聽的方法與共享環(huán)境下不同,共享環(huán)境下只要將主機設置成混雜模式就能監(jiān)聽到其他主機間通信的數(shù)據(jù)包,而交換環(huán)境只能監(jiān)聽到源地址或目的地址為本身的數(shù)據(jù)包,在交換環(huán)境下實現(xiàn)監(jiān)聽其他主機間數(shù)據(jù)包的常用方法是地址解析協(xié)議(ARP)欺騙[3]。ARP用于將32位IP地址映射為以太網(wǎng)的48位MAC地址,以便將數(shù)據(jù)包封裝成幀進行發(fā)送。ARP欺騙就是通過向目標主機發(fā)送一個包含偽造的IP-MAC映射信息的ARP應答報文,當目的主機收到此應答報文后就會更新其ARP高速緩存,從而使目標主機將數(shù)據(jù)包發(fā)送給錯誤的對象。但是ARP欺騙的監(jiān)聽方式存在缺陷,比如,如果局域網(wǎng)內(nèi)2臺客戶端主機A和B同時向主機C發(fā)送呼叫請求,A和B就會同時向服務器發(fā)送內(nèi)容為C主機IP對應A主機MAC地址和B主機IP對應C主機MAC地址的ARP應答報文,這樣服務器就會發(fā)生混亂,不能識別C主機。

      筆者使用 WinPcap(Windows Packet Capture)函數(shù)庫提供的遠程捕獲數(shù)據(jù)包功能[4],克服了ARP欺騙的缺陷,實現(xiàn)了交換環(huán)境下在客戶端捕獲到服務器端數(shù)據(jù)包的功能,方法簡單可靠。

      圖2 軟交換實驗系統(tǒng)的軟件功能框圖

      3 設計與實現(xiàn)

      基于上述分析,本軟件的主要任務是捕獲和分析SIP數(shù)據(jù)包。在實驗系統(tǒng)交換環(huán)境下,服務器端運行遠程捕獲數(shù)據(jù)包的后臺程序,該程序能夠在遠程主機上捕獲數(shù)據(jù)包,并把捕獲到的數(shù)據(jù)包發(fā)回客戶端主機;客戶端運行本監(jiān)聽軟件,接收并分析捕獲到的SIP數(shù)據(jù)包。WinPcap的捕獲遠程數(shù)據(jù)包功能主要由pcap_findalldevs_ex()函數(shù)來實現(xiàn),將該函數(shù)中的參數(shù)source設置成遠程主機的IP地址和網(wǎng)卡設備,即可捕獲到相應遠程主機的數(shù)據(jù)包。

      3.1 數(shù)據(jù)包捕獲模塊

      數(shù)據(jù)包捕獲模塊的主要功能是采集數(shù)據(jù),這是整個軟件的基礎和數(shù)據(jù)來源。使用ARP欺騙方式監(jiān)聽數(shù)據(jù)包不適合較大數(shù)據(jù)通信量的網(wǎng)絡,也不適用于本實驗系統(tǒng)。因此,使用Windows平臺下一個免費、公共的網(wǎng)絡訪問系統(tǒng)WinPcap捕獲網(wǎng)絡中的原始數(shù)據(jù)包。

      設計程序時首先初始化WinPcap:獲取設備列表并返回適配器的詳細信息,打開適配器并返回一個包捕獲器的描述符,通過設置數(shù)據(jù)流過濾規(guī)則實現(xiàn)過濾數(shù)據(jù)包。初始化完成之后,新建線程,在新線程中捕獲基于IPv4的用戶數(shù)據(jù)協(xié)議(User Datagram Protocol,UDP)數(shù)據(jù)包[5]。 數(shù)據(jù)包捕獲流程如圖3所示。

      圖3 數(shù)據(jù)包捕獲流程圖

      3.2 數(shù)據(jù)包解析模塊

      該模塊的主要功能就是對捕獲的數(shù)據(jù)包按照數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層和應用層的層次結構自底向上進行解析:通過設置WinPcap過濾條件捕獲到基于IPv4的UDP數(shù)據(jù)包,根據(jù)UDP使用不同的端口號為不同的應用保留各自的數(shù)據(jù)傳輸通道從UDP數(shù)據(jù)包中篩選出SIP數(shù)據(jù)包,根據(jù)SIP數(shù)據(jù)包的第1個換行符判定起始行的內(nèi)容,根據(jù)起始行的前7個字符是否為“SIP/2.0”解析出請求方法或狀態(tài)碼。SIP消息解析流程如圖4所示。

      圖4 SIP消息解析流程圖

      3.3 數(shù)據(jù)包保存模塊

      監(jiān)聽程序在運行的時候需要消耗大量的處理器時間,此時如果對數(shù)據(jù)包內(nèi)容進行詳細分析就會造成丟包,所以應先保存數(shù)據(jù)包再整理分析。但是,SIP消息的長度不確定,而且每次捕獲到數(shù)據(jù)包的個數(shù)也不確定,所以要使用vector(一個能夠存放任意類型的動態(tài)數(shù)組)來存儲捕獲到的任意長度字符串形式的數(shù)據(jù)包。將數(shù)據(jù)包的內(nèi)容壓入堆棧,在調(diào)用某條數(shù)據(jù)包時,即可將對應序號的數(shù)據(jù)包內(nèi)容顯示到界面上。

      3.4 數(shù)據(jù)包過濾模塊

      通過監(jiān)聽SIP代理服務器,能將若干個通話流程的SIP數(shù)據(jù)包全部捕獲到本地主機,因此捕獲到SIP數(shù)據(jù)包之后,要對數(shù)據(jù)包再一次進行過濾,將需要查看流程的SIP數(shù)據(jù)包過濾出來。根據(jù)捕獲數(shù)據(jù)包的主、被叫的用戶名來提取出需要查看流程的數(shù)據(jù)包。根據(jù)From和To頭字段中的內(nèi)容找到主、被叫用戶名與所需查看的主、被叫用戶名對比,即可過濾出需要的數(shù)據(jù)包。

      3.5 數(shù)據(jù)包顯示模塊

      軟件界面圖由MFC編寫,主窗口被列表框和編輯框劃分成上下兩個窗口。將解析出的SIP數(shù)據(jù)包時間、長度、源IP地址/源端口號、目的IP地址/目的端口號、消息的起始行等值,賦給相應的全局變量,在列表框中調(diào)用這些變量用于實時顯示相應數(shù)據(jù)包頭部信息。單擊列表框的某行數(shù)據(jù)包頭部信息可以調(diào)用存儲SIP數(shù)據(jù)包字符串數(shù)組對應位置的元素,在編輯框中顯示該數(shù)據(jù)包的完整內(nèi)容。

      利用MFC函數(shù)新建一個對話框用于顯示呼叫流程圖,先用Windows自帶的繪圖函數(shù)構成畫箭頭模塊[6],然后從保存數(shù)據(jù)包數(shù)組中循環(huán)取出每個數(shù)據(jù)包的源、目的IP和請求方法/狀態(tài)碼,畫出每條流程,最后組成完整的呼叫流程圖。

      4 測試及分析

      設定2個客戶端A(用戶名為100,地址為172.22.141.150)和 B(用戶名為 101,地址為 172.22.141.143)通過SIP服務器(IP地址為172.22.141.25)進行通信。在客戶端A的主機上同時運行Wireshark和本軟件對通信過程的數(shù)據(jù)包進行監(jiān)聽。圖5、圖6分別為本軟件和Wireshark捕獲到SIP數(shù)據(jù)包的界面。圖7、圖8分別為本軟件和Wireshark繪制的呼叫流程圖。

      由圖5、圖6可知,Wireshark和本軟件捕獲到的SIP數(shù)據(jù)包內(nèi)容一致,證明了本軟件的正確性,Wireshark抓包軟件對數(shù)據(jù)包的分析更細致,但本軟件對數(shù)據(jù)包整體內(nèi)容的顯示更加簡潔明了,更適合于教學。同時,如在本軟件的“輸入主叫用戶名”和“輸入被叫用戶名”編輯框中輸入非本機客戶端的用戶名,可以監(jiān)聽到其他客戶端之間的通話流程。

      由圖7、圖8可知,Wireshark和本軟件繪制的呼叫流程圖相同,但Wireshark的流程圖中包括了很多附加信息,比如,端口號和請求/狀態(tài)標志,而本軟件對呼叫流程圖進行了優(yōu)化,使流程圖更加清晰簡潔。其詳細信息通過點擊各流程狀態(tài)來展示。

      綜上所述,本軟件僅針對SIP協(xié)議進行了監(jiān)聽,并且將該功能集成到整個實驗系統(tǒng)中,其功能和效果與Wireshark一致,且更適合于教學的需求。

      5 小結

      本系統(tǒng)實現(xiàn)了在交換網(wǎng)絡中捕獲和分析軟交換實驗系統(tǒng)SIP數(shù)據(jù)包的功能,達到實驗教學的要求,使學生更容易理解軟交換和SIP協(xié)議的知識。

      [1]IETFRFC3261,SIP:Session Initiation Protocol[S].2002.

      [2]王艷艷,房子河,郅晨,等.基于數(shù)字網(wǎng)絡視頻監(jiān)控的SIP信令系統(tǒng)設計[J].電視技術,2008,32(5):77-87.

      [3]盛志偉,劉仕筠,李群.以太網(wǎng)數(shù)據(jù)包捕獲與轉發(fā)技術[J].微計算機信息,2006(34):279-282.

      [4]許愛軍,謝娟,張華.基于WinPcap的網(wǎng)絡數(shù)據(jù)解析及其實現(xiàn)[J].科學技術與工程,2009(10):2797-2800.

      [5]王亞非.SIP通信網(wǎng)絡監(jiān)聽系統(tǒng)的設計與實現(xiàn)[D].北京:北京郵電大學,2008.

      [6]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.

      猜你喜歡
      監(jiān)聽流程圖數(shù)據(jù)包
      千元監(jiān)聽風格Hi-Fi箱新選擇 Summer audio A-401
      SmartSniff
      網(wǎng)絡監(jiān)聽的防范措施
      電子制作(2017年20期)2017-04-26 06:58:02
      專利申請審批流程圖
      河南科技(2016年8期)2016-09-03 08:08:22
      專利申請審批流程圖
      河南科技(2016年6期)2016-08-13 08:18:29
      應召反潛時無人機監(jiān)聽航路的規(guī)劃
      基于Libpcap的網(wǎng)絡數(shù)據(jù)包捕獲器的設計與實現(xiàn)
      寧??h村級權力清單36條
      局域網(wǎng)監(jiān)聽軟件的設計
      河南科技(2014年5期)2014-02-27 14:08:21
      視覺注意的數(shù)據(jù)包優(yōu)先級排序策略研究
      商都县| 广饶县| 开封市| 垫江县| 杭州市| 新泰市| 渭南市| 独山县| 阳朔县| 阳泉市| 祥云县| 洪雅县| 介休市| 什邡市| 华蓥市| 合水县| 榆中县| 中西区| 泰安市| 扎囊县| 大新县| 霍州市| 兰西县| 开封县| 漠河县| 当涂县| 湟中县| 沁阳市| 内黄县| 丹寨县| 商都县| 会昌县| 临沧市| 葫芦岛市| 怀柔区| 双牌县| 宕昌县| 宜章县| 通州市| 苍南县| 贵德县|