衡阳派盒市场营销有限公司

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>無線通信>無線局域網(wǎng)>

SIP應(yīng)用層網(wǎng)關(guān)的實(shí)現(xiàn) - SIP應(yīng)用層網(wǎng)關(guān)技術(shù)

2011年04月20日 11:37 www.zgszdi.cn 作者:電子發(fā)燒友 用戶評(píng)論(0
SIP應(yīng)用層網(wǎng)關(guān)的實(shí)現(xiàn)

  本節(jié)前面部分詳細(xì)的介紹了SIP應(yīng)用層網(wǎng)關(guān)實(shí)現(xiàn)的理論基礎(chǔ),本節(jié)介紹ALG的軟件實(shí)現(xiàn)方式,軟件開發(fā)平臺(tái)是Windows2000,開發(fā)工具是Visua1C++ 6.0,采用的是OSIP協(xié)議棧,開發(fā)的語言主要是C。

  結(jié)構(gòu)及工作流程

  這里ALG被分成兩個(gè)部分:ALG主體部分和SIP URI信息管理系統(tǒng)部分,這兩部分被設(shè)計(jì)成是兩個(gè)相互獨(dú)立的程序。ALG主體部分的功能是處理各種流向上的SIP消息、管理呼叫環(huán)境以及跨網(wǎng)絡(luò)呼叫時(shí),在通信雙方之間進(jìn)行RTP數(shù)據(jù)包的轉(zhuǎn)發(fā);SIP URI信息管理系統(tǒng)部分的功能是負(fù)責(zé)私網(wǎng)內(nèi)部SIP URI及其綁定信息的管理和維護(hù),該系統(tǒng)及其維護(hù)的數(shù)據(jù)庫放置在私網(wǎng)內(nèi)部的其它主機(jī)上運(yùn)行。兩部分之間通過UDP/TCP進(jìn)行通信,這樣可以減小來自外網(wǎng)上攻擊的風(fēng)險(xiǎn),從而提高數(shù)據(jù)信息的安全性。 由于ALG主體無法直接對(duì)SIPURI的數(shù)據(jù)信息進(jìn)行訪問,因此必須在這兩部分之間提供訪問的接口,“信息數(shù)據(jù)庫接口”模塊就是為 ALG訪問SIP URI信息管理系統(tǒng)的接口。

  SIP應(yīng)用層網(wǎng)關(guān)的主要工作由一個(gè)SIP消息的監(jiān)聽線程、一個(gè)與SIP URI信息管理系統(tǒng)進(jìn)行通信的線程、一個(gè)SIP消息處理線程(包括對(duì)話的管理和維護(hù))和數(shù)量不定的RTP數(shù)據(jù)包轉(zhuǎn)發(fā)線程完成。RTP數(shù)據(jù)包轉(zhuǎn)發(fā)線程能夠根據(jù)需要而動(dòng)態(tài)的生成和釋放,因此數(shù)量不定。

  SIP應(yīng)用層網(wǎng)關(guān)的基本工作流程如下:

  應(yīng)用程序初始化完畢以后,啟動(dòng)SIP消息監(jiān)聽線程、URI信息數(shù)據(jù)庫訪問線程和SIP消息處理線程。SIP消息監(jiān)聽線程對(duì)ALG的所有SIP端口(包括私網(wǎng)和公網(wǎng))進(jìn)行監(jiān)聽,如果收到SIP消息,它把消息連同其源IP地址和端口以及消息本身的長度封裝成一個(gè)簡單的數(shù)據(jù)結(jié)構(gòu)放入一個(gè)先入先出的隊(duì)列(FIFO)當(dāng)中,然后繼續(xù)監(jiān)聽,它不對(duì)消息進(jìn)行進(jìn)一步的處理。

  一旦FIFO中有了SIP消息,SIP消息處理線程就被喚醒,并投入運(yùn)行,它從FIFO中取走消息,然后開始對(duì)這個(gè)消息進(jìn)行處理:首先它對(duì)消息進(jìn)行解析以及例行的語法檢查,然后根據(jù)SIP消息的源地址和目的地址將其分成四類:

  (1)內(nèi)部消息,其源地址和目的地址都在私網(wǎng)內(nèi)部。

  (2)對(duì)外消息,其源地址是私網(wǎng)地址,目的地址是公網(wǎng)地址。

  (3)對(duì)內(nèi)消息,其源地址是公網(wǎng)地址,目的地址是ALG的公網(wǎng)地址。

  (4)外部消息,其源地址和目的地址都是公網(wǎng)地址。

  SIP消息被分成以上四類后,ALG對(duì)它們進(jìn)行不同的處理。第(1)類消息稱為“內(nèi)部消息”,第(2)類和第(3)類消息統(tǒng)稱為“跨網(wǎng)絡(luò)消息”;第(4)類消息稱為“外部消息”,它會(huì)被無條件丟棄,ALG不對(duì)其作進(jìn)一步的處理。SIP消息處理線程在對(duì)“跨網(wǎng)絡(luò)消息”消息進(jìn)行處理的同時(shí),對(duì)呼叫的上下文環(huán)境進(jìn)行管理和維護(hù),并在必要的時(shí)候,啟動(dòng)新的RTP數(shù)據(jù)包轉(zhuǎn)發(fā)線程,使其完成對(duì)跨網(wǎng)絡(luò)通信的RTP數(shù)據(jù)包的轉(zhuǎn)發(fā)工作。

  基于SOCKET消息接收與應(yīng)答功能模塊

  由于UDP包的接收是異步的,ALG無法預(yù)測(cè)何時(shí)會(huì)有SIP消息到來,因此在SIP應(yīng)用層網(wǎng)關(guān)的設(shè)計(jì)中,用單獨(dú)的線程對(duì)SIP端口進(jìn)行監(jiān)聽。由于SIP應(yīng)用層網(wǎng)關(guān)處在兩個(gè)網(wǎng)絡(luò)的邊界上,并在兩網(wǎng)之間轉(zhuǎn)發(fā)數(shù)據(jù),因此ALG的SIP端口也相應(yīng)的分為私網(wǎng)和公網(wǎng)兩部分,在任何一邊的網(wǎng)絡(luò)上,都可以打開一個(gè)或者多個(gè)與套節(jié)字(SOCKET)相聯(lián)系的SIP端口。并且每隔一定時(shí)間試圖從所有監(jiān)聽的SIP端口相關(guān)聯(lián)的SOCKET上讀取數(shù)據(jù),如果讀到了數(shù)據(jù),就對(duì)數(shù)據(jù)做簡單的封裝,然后把它放入應(yīng)用層網(wǎng)關(guān)的SIP消息FIFO當(dāng)中。

  信息數(shù)據(jù)庫接口模塊

  出于安全性的考慮,SIP URI信息管理系統(tǒng)從SIP應(yīng)用層網(wǎng)關(guān)中分離出去,這個(gè)系統(tǒng)的功能并不復(fù)雜,一方面它接受來自ALG的訪問;另一方面,它必須對(duì)自身的信息數(shù)據(jù)庫進(jìn)行維護(hù)。ALG本身必須通過信息數(shù)據(jù)庫接口模塊對(duì)其進(jìn)行訪問。

  ALG需要從SIP URI信息管理系統(tǒng)得到的信息有兩類:一類是用戶信息,包括用戶名和密碼;另一類是SIP URI綁定信息,這一類信息的交互是雙向的,不同的REGISTER請(qǐng)求會(huì)要求ALG添加、修改、刪除或者僅僅是獲取SIP URI的綁定信息。本文用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)來表示這兩類信息,這樣只需要一次訪問就能夠獲取所需全部信息,可以縮短ALG處理SIP消息所需的時(shí)間。

  信息管理模塊

  SIP應(yīng)用層網(wǎng)關(guān)需要很多信息才能完成工作,有些信息是動(dòng)態(tài)的,例如SIP URI的綁定信息,不同用戶不同時(shí)間的綁定信息是不同的,因此只有在需要的時(shí)候應(yīng)用層網(wǎng)關(guān)才從數(shù)據(jù)庫中進(jìn)行動(dòng)態(tài)的訪問;而另外一些信息則是相對(duì)穩(wěn)定的,如ALG本身的域名、IP地址等等。這些信息很多,但并不復(fù)雜,大多是字符串、數(shù)值或者布爾型的變量,信息管理模塊的功能就是維護(hù)和管理它們。

  “媒體會(huì)話”模塊

  當(dāng)SIP應(yīng)用層網(wǎng)關(guān)為跨網(wǎng)絡(luò)呼叫的終端之間建立起媒體會(huì)話(視頻、音頻)的連接后,雙方之間主要的交互將是RTP數(shù)據(jù)流(媒體數(shù)據(jù)被打包成RTP數(shù)據(jù)包)的交互,“媒體會(huì)話”模塊的功能主要就是在通信雙方之間進(jìn)行RTP數(shù)據(jù)包的轉(zhuǎn)發(fā)工作,每一個(gè)RTP數(shù)據(jù)包轉(zhuǎn)發(fā)器能夠?yàn)槎嗦稲TP連接提供數(shù)據(jù)包轉(zhuǎn)發(fā)服務(wù)。

  當(dāng)ALG需要為一路RTP連接提供數(shù)據(jù)包轉(zhuǎn)發(fā)服務(wù)時(shí),它試圖從轉(zhuǎn)發(fā)器環(huán)境中得到一個(gè)空閑的RTP數(shù)據(jù)包轉(zhuǎn)發(fā)器,如果環(huán)境中的轉(zhuǎn)發(fā)器都已經(jīng)被占用,環(huán)境會(huì)試圖創(chuàng)建一個(gè)新的RTP數(shù)據(jù)包轉(zhuǎn)發(fā)器,并把它加入到環(huán)境當(dāng)中,并將它返回給ALG使用。另一方面,當(dāng)一個(gè)轉(zhuǎn)發(fā)器不再為任何RTP連接提供轉(zhuǎn)發(fā)服務(wù)時(shí),環(huán)境會(huì)把它刪除,并釋放相應(yīng)的資源。

  “消息處理及對(duì)話維護(hù)”模塊

  這是SIP應(yīng)用層網(wǎng)關(guān)的核心模塊,它的功能是對(duì)收到的SIP消息進(jìn)行解析和處理,完成對(duì)SIP消息的代理,對(duì)跨網(wǎng)絡(luò)呼叫的上下文環(huán)境進(jìn)行維護(hù)以及在必要時(shí)啟動(dòng)對(duì)話的RTP代理。這些功能之間是相互關(guān)聯(lián)的,統(tǒng)一由SIP消息處理及對(duì)話的維護(hù)線程完成。圖2是SIP消息處理線程的工作流程圖。

  本文小節(jié)

  SIP協(xié)議憑借其簡單、易于擴(kuò)展、便于實(shí)現(xiàn)等諸多優(yōu)點(diǎn)越來越得到業(yè)界的青睞,越來越多的基于SIP協(xié)議的網(wǎng)絡(luò)如VOIP、視頻會(huì)議、智能家居系統(tǒng)被開發(fā)實(shí)現(xiàn),本文實(shí)現(xiàn)的SIP應(yīng)用層網(wǎng)關(guān)正是SIP網(wǎng)絡(luò)對(duì)NAT/Firewall的穿越的關(guān)鍵技術(shù),但這一方案仍存在著不足之處,由于SIP應(yīng)用層網(wǎng)關(guān)必須對(duì)跨網(wǎng)絡(luò)的所有SIP消息進(jìn)行解析,導(dǎo)致這些消息須以明碼的形式傳輸,降低了SIP應(yīng)用的安全性,進(jìn)一步研究表明:這要求我們對(duì)SIP協(xié)議進(jìn)行適當(dāng)擴(kuò)展來實(shí)現(xiàn)信息的加密。

非常好我支持^.^

(2) 100%

不好我反對(duì)

(0) 0%

( 發(fā)表人:Spring )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      百家乐高科技| 网络百家乐官网软件真假| 百家乐官网和| 百家乐中的概率| 百家乐小音箱| 试用的百家乐软件| 大发888大法8668| 游戏机百家乐官网作弊| 巨星百家乐官网的玩法技巧和规则 | bet365体育投注心得| 鹿泉市| 新花园百家乐官网的玩法技巧和规则| 澳门百家乐限红规则| 广州太阳城巧克力社区| 百胜百家乐官网软件| 百家乐分析软体| 大发888娱乐代理| 百家乐官网游戏世界视频| 百家乐的玩法视频| 名仕国际棋牌下载| 网上百家乐官网是假还是真的| 百家乐平台送彩金| 边坝县| 金冠百家乐娱乐城| 明珠娱乐开户| 做生意招牌什么颜色旺财| 大发888真人真钱网址| k7百家乐官网最小投注| 网络百家乐官网怎么作弊| 百家乐扑克桌布| 威信县| 搓牌百家乐技巧| 百家乐官网必胜下注法| 赌神网百家乐官网的玩法技巧和规则 | 百家乐官网机械图片| 百家乐几点不用补牌| 大世界百家乐官网娱乐场| 大发888网址是多少| 百家乐官网赚钱项目| 至尊百家乐停播| 百家乐官网投注平台导航网|