基SIP系統(tǒng)模型的構(gòu)建與其信令過程的驗證_第1頁
基SIP系統(tǒng)模型的構(gòu)建與其信令過程的驗證_第2頁
基SIP系統(tǒng)模型的構(gòu)建與其信令過程的驗證_第3頁
基SIP系統(tǒng)模型的構(gòu)建與其信令過程的驗證_第4頁
基SIP系統(tǒng)模型的構(gòu)建與其信令過程的驗證_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、基SIP系統(tǒng)模型的構(gòu)建與其信令過程的驗證作 者 姓 名:李賀明指 導 教 師:趙麗紅 副教授單 位 名 稱:信息科學與工程學院專 業(yè) 名 稱:通信工程東 北 大 學2006年6月Constructing the SIP system model and making the confirmation of signalling processby Li He MingSupervisor: Professor Zhao Li HongNortheastern UniversityJune 200641東北大學畢業(yè)設計(論文)摘要畢業(yè)設計(論文)任務書畢業(yè)設計(論文)題目:SIP系統(tǒng)模型的構(gòu)建與

2、其信令過程的驗證基本內(nèi)容:在論文中將進行以下內(nèi)容1 詳細了解SIP 協(xié)議內(nèi)容2 理解osip和exosip協(xié)議棧的編譯方法3 對VC+6.0程序開發(fā)環(huán)境加以了解4 分析系統(tǒng)框架和功能模塊5 設計SIP用戶注冊程序6 對SIP系統(tǒng)進行測試在設計的過程中,把重點要放在對協(xié)議的理解上面來,要對SIP協(xié)議的應用進行掌握。通過VC+進行SIP注冊的程序設計,來完成SIP系統(tǒng)的軟件設計,并將對系統(tǒng)進行測試。畢業(yè)設計(論文)專題部分:題目:基本內(nèi)容:學生接受畢業(yè)設計(論文)題目日期第周指導教師簽字:年月日SIP系統(tǒng)模型的構(gòu)建與其信令過程的驗證隨著Internet的不斷發(fā)展,它的許多應用都需要建立和管理一個會

3、話,會話在這里的含義是在參與者之間數(shù)據(jù)的交換。其應用實現(xiàn)往往是很復雜的:參與者可能是在代理間移動,他們可能有多個名字,他們中間的通訊可能是基于不同的媒介(比如文本,多媒體,視頻,音頻等),有時候是多種媒介一起交互等。人們創(chuàng)造了無數(shù)種通訊協(xié)議應用于實時的多媒體會話數(shù)據(jù)比如聲音、影像和文本。為了更方便的建立一個會話,本文選擇了會話初始協(xié)議(SIP,Session Invitation Protocol)來建立通信系統(tǒng)。建立一個完善的SIP系統(tǒng)是一項非常復雜的工作,本文在做了大量的調(diào)研工作基礎上,選擇了一個正確的程序開發(fā)工具和SIP協(xié)議棧,組建一組SIP服務器和客戶端,完成SIP系統(tǒng)中的用戶通過IP

4、網(wǎng)絡向服務器進行注冊的任務。本文通過設計一組SIP服務器和客戶端,對它們之間的通信信令進行了采集和分析,通過與實際結(jié)果的對照來證明信令傳輸過程是正確的。本文首先介紹了SIP協(xié)議和開發(fā)工具的應用方法,在概述了SIP特點之后,提出了本系統(tǒng)的總體設計,然后介紹了系統(tǒng)的具體實現(xiàn)過程,最后分析了驗證結(jié)果。本分析系統(tǒng)是在Visual C+6.0平臺下設計實現(xiàn)的。通過抓包工具對整個通信過程進行檢測和分析,從而明確SIP系統(tǒng)通信的原理和信令傳輸方法。通過對服務器和和客戶端的設置來熟悉基本的IP網(wǎng)絡特點,以此來觀察和分析IP特性在SIP系統(tǒng)中的應用。關(guān)鍵詞:會話初始化協(xié)議,用戶代理,代理服務器,SIP信令,協(xié)議

5、棧東北大學畢業(yè)設計(論文)ABSTRACTConstructing the SIP system model and making the confirmation of signalling processAlong with the Internet unceasing development, its many applications all need to establish and to manage a conversation, converses in here meaning is the data exchange between participants. Consid

6、ered the actual situation of the participants, these applications realizations are usually very complex: participants possibly move between the proxies, they possibly have many names, their middle communication possibly is based on the different medium (for instance text, multimedia, video frequency

7、, audio frequency and so on), some times are the many kinds of media hand over together and so on. The people created the innumerable kind of communications protocol to apply to the real-time multimedia conversation data for instance sound, the image and the text.For a more convenient establishment

8、conversation, I chose the Session Invitation Protocol (SIP, Session Invitation Protocol) to establish my own communications system. Establishes a perfect SIP system is an extremely complex work, but my duty is completes in the SIP system the user to carry on the registration through the IP network t

9、o the server the duty. In order to complete this task, I must set up a group of SIP server and the customer end, again is chooses a correct procedure development kit and the SIP agreement stack, I has done the massive investigation and study work for this.This article through designing a group of SI

10、P server and the client, the correspondence letter command carries on gathering and the analysis to them between, through with the real result comparison proved the letter command transmits the process is correct. This article first introduced the SIP theory knowledge and the development kit applica

11、tion method, after has outlined the SIP characteristic, proposed this system design, then introduced the system concrete realization process, finally has analyzed the confirmation result.This analysis system is designed and realized under the Visual C+6.0 platform. Through grasps a package of tool t

12、o carry on the examination and the analysis to the entire course of communications, thus is clear about the SIP system communication the principle and the letter command transmits the method. Through to the server and with the customer end establishment familiar basic IP network characteristic, obse

13、rves and analyzes the IP characteristic by this in the SIP system application.Key words:Session Invitation Protocol, User Agent Register Server, SIP Signalling, protocol stack東北大學畢業(yè)設計(論文)目錄目錄任務書I中文摘要IIAbstractIII第1章 緒論11.1設計背景11.2設計目的21.3 論文概要2第2章 SIP理論基礎和開發(fā)工具32.1 SIP理論基礎32.1.1 SIP介紹32.1.2 SIP基本組成42

14、.1.3 SIP消息格式62.1.4 SIP運作模式102.1.5 SIP未來發(fā)展問題112.2程序開發(fā)工具122.2.1 Visual C+ 6.0具體特點122.2.2 MFC類庫132.2.3 Osip2和EXosip協(xié)議棧的分析14第3章 SIP系統(tǒng)的定義和框架分析183.1 系統(tǒng)的定義183.2 可行性分析193.2.1 SIP 服務器實現(xiàn)方案193.2.2 SIP客戶端實現(xiàn)方案213.3 系統(tǒng)框架設計和分析223.3.1系統(tǒng)總體結(jié)構(gòu)設計223.3.2程序設計流程233.3.3主界面設計243.3.4協(xié)議棧的編譯253.3.5 SIP包分析26第4章 局域網(wǎng)SIP用戶注冊的實現(xiàn)284

15、.1 程序設計介紹284.1.1重要文件介紹284.1.2 關(guān)鍵程序分析284.2實現(xiàn)系統(tǒng)功能配置304.2.1開發(fā)工具配置304.2.2程序抓包流程30第5章 系統(tǒng)功能的實現(xiàn)和結(jié)果分析335.1工程配置框圖335.1.1工程配置原理335.1.2 工程配置方法345.2程序執(zhí)行界面36結(jié) 論40參考文獻41致 謝42東北大學畢業(yè)設計(論文)第1章 緒論第1章 緒論1.1設計背景隨著傳統(tǒng)電信網(wǎng)絡和計算機網(wǎng)絡的逐漸融合,出現(xiàn)了采用分組交換技術(shù)替代傳統(tǒng)電路交換技術(shù)傳送話音業(yè)務的IP電話,IP電話的出現(xiàn)不可避免地給傳統(tǒng)電信市場帶來了強大沖擊,大多長途電信運營商都開始關(guān)注IP電話的發(fā)展。IP電話有著誘

16、人的市場前景,美國一家市場調(diào)研公司Killen Associates預測到2003年IP電話業(yè)務年收入將達10億美元,很多傳統(tǒng)電信公司、ISP和新一代電信公司都開始提供或試驗IP電話業(yè)務。中國信息產(chǎn)業(yè)部已于1999年4月正式批準了中國電信、聯(lián)通、吉通三家公司進行IP電話業(yè)務運行試驗。目前國際上的IP電話標準主要有ITU-T H.323協(xié)議和IETF1(Internet Engineering Task Force)MGCP協(xié)議和SIP(Session Invitation Protocol)協(xié)議。本設計專注SIP協(xié)議。會話初始協(xié)議的開發(fā)目的是用來幫助提供跨越因特網(wǎng)的高級電話業(yè)務。因特網(wǎng)電話(I

17、P電話)正在向一種正式的商業(yè)電話模式演進,會話初始協(xié)議就是用來確保這種演進實現(xiàn)而需要的下一代網(wǎng)絡(NGN,Next Generation Network)系列協(xié)議中重要的一員。目前業(yè)界對SIP 的支持越來越廣泛。全球大的運營商都轉(zhuǎn)向支持SIP 方式, 在北美和歐洲, 多數(shù)新的方案都選用SIP , 國內(nèi)的服務商考慮組建新網(wǎng)絡的時候, 也開始采用SIP 。SIP 可以提供PC 作為一個軟客戶,以這樣的方式入網(wǎng),可以通過IP 電話,終端識別器的方式,也可以通過網(wǎng)關(guān)的方式。還可以提供多媒體服務IP 電話、呼叫中心等個性化服務。會話初始協(xié)議是因特網(wǎng)工程特別工作組(IETF)標準進程的一部分,它是在簡單郵

18、件傳送協(xié)議(SMTP)和超文本傳送協(xié)議(HTTP)基礎之上建立起來的。它用來建立、改變和終止基于IP網(wǎng)絡的用戶間的呼叫。為了提供電話業(yè)務它還需要結(jié)合不同的標準和協(xié)議:特別是需要確保傳輸(RTP)與當前電話網(wǎng)絡的信令互連,能夠確保語音質(zhì)量(RSVP),能夠提供目錄(LDAP),能夠鑒權(quán)用戶(RADIUS)等等。會話初始協(xié)議被描述為用來生成、修改和終結(jié)一個或多個參與者之間的會話。這些會話包括因特網(wǎng)多媒體會議、因特網(wǎng)(或任何IP網(wǎng)絡)電話呼叫和多媒體發(fā)布。會話中的成員能夠通過多播或單播聯(lián)系的網(wǎng)絡來通信。會話初始協(xié)議支持會話描述,它允許參與者在一組兼容媒體類型上達成一致。它同時通過代理和重定向請求到用

19、戶當前位置來支持用戶移動性。會話初始協(xié)議不與任何特定的會議控制協(xié)議捆綁。SIP軟電話是基于因特網(wǎng)開發(fā)的電話軟件,可以通過呼叫對方IP地址達到語音通信的目的,目前的研究還不算完善。由于SIP是基于純文本的信令協(xié)議,可以管理不同接入網(wǎng)絡上的會晤。會晤可以是終端設備之間任何類型的通信,如視頻會晤、即時信息處理或協(xié)作會晤等。該協(xié)議不會定義或限制可使用的業(yè)務,傳輸、服務質(zhì)量、計費、安全性等問題都由基本核心網(wǎng)絡和其它協(xié)議處。所以會話初始協(xié)議目前倍受青睞,走在了研究領域的前沿。1.2設計目的本設計主要研究用計算機語言簡單編程設計SIP服務器和注冊流程,以及通過兩臺聯(lián)網(wǎng)的計算機對其信令傳輸過程進行驗證。所用的

20、計算機編程語言為Visual C+6.0。該設計是基于SIP信令流程的,與SIP信令有所不同,僅僅實現(xiàn)了SIP通信信令,忽略了語音通信。通過設計SIP軟電話了解了SIP電話的設計理念,以及用計算機編程語言實現(xiàn)計算機之間的通信。通過信令流程驗證過程了解了計算機之間通過SIP協(xié)議進行通信的過程。1.3 論文概要SIP已經(jīng)發(fā)展好幾年了,但仍然沒有普及應用,一方面由于SIP設備開發(fā)利潤的限制,另一方面大家對SIP不是很具體的了解。本文主要針對SIP開發(fā)者,介紹了SIP的理論知識和Visual C+6.0程序開發(fā)工具的具體應用,以及相關(guān)軟件的配置和應用等,并編寫了相關(guān)程序。論文分為六章內(nèi)容:第一章簡要介

21、紹課題研究的目的和重要意義;第二章講述與本文有關(guān)的初級知識,理論基礎以及程序開發(fā)工具;第三章介紹了設計的系統(tǒng)定義和自己對系統(tǒng)的分析;第四章主要講述了自己在實現(xiàn)局域內(nèi)SIP注冊所做的工作;最后一章介紹的是整個系統(tǒng)實現(xiàn)的過程和系統(tǒng)驗證工作。東北大學畢業(yè)設計(論文)第2章 SIP理論基礎和開發(fā)工具第2章 SIP理論基礎和開發(fā)工具2.1 SIP理論基礎SIP(會話初始協(xié)議)的開發(fā)目的是用來幫助提供跨越因特網(wǎng)的高級電話業(yè)務。因特網(wǎng)電話(IP電話)正在向一種正式的商業(yè)電話模式演進,SIP就是用來確保這種演進實現(xiàn)而需要的NGN(下一代網(wǎng)絡)系列協(xié)議中重要的一員。SIP是IETF1標準進程的一部分,它是在SM

22、TP(簡單郵件傳送協(xié)議)和HTTP(超文本傳送協(xié)議)基礎之上建立起來的。它用來建立、改變和終止基于IP網(wǎng)絡的用戶間的呼叫。為了提供電話業(yè)務它還需要結(jié)合不同的標準和協(xié)議,特別是需要確保傳輸(RTP),與當前電話網(wǎng)絡的信令互連,能夠確保語音質(zhì)量(RSVP)、提供目錄(LDAP)、鑒權(quán)用戶(RADIUS)等等。SIP被描述為用來生成、修改和終結(jié)一個或多個參與者之間的會話。這些會話包括因特網(wǎng)多媒體會議、因特網(wǎng)(或任何IP網(wǎng)絡)電話呼叫和多媒體發(fā)布。會話中的成員能夠通過多播或單播聯(lián)系的網(wǎng)絡來通信。SIP支持會話描述,它允許參與者在一組兼容媒體類型上達成一致。它同時通過代理和重定向請求到用戶當前位置來支持

23、用戶移動性。SIP不與任何特定的會議控制協(xié)議捆綁。2.1.1 SIP介紹會話初始化協(xié)議(SIP)的第一個版本即SIPv1是使用會話描述協(xié)議(SDP)描述會話,同時使用UDP進行傳輸,是基于文本的。1996年2月22日,SIPv1和簡單會話邀請協(xié)議(SCIP,Simple Conference Invitation Protocol)兩個協(xié)議合并為SIPv2,即現(xiàn)在所說的SIP。SIP提供以下功能: (1)名字翻譯和用戶定位無論被呼叫方在哪里都確保呼叫達到被叫方。執(zhí)行任何描述信息到定位信息的映射。確保呼叫(會話)的本質(zhì)細節(jié)被支持。 (2)特征協(xié)商它允許與呼叫有關(guān)的組(可以是多方呼叫)在支持的特征

24、上達成一致(注意:不是所有方都能夠支持相同級別的特征)。例如視頻可以或不可以被支持。總之,存在很多需要協(xié)商的范圍。 (3)呼叫參與者管理呼叫中參與者能夠引入其它用戶加入呼叫或取消到其它用戶的連接。此外,用戶可以被轉(zhuǎn)移或置為呼叫保持。(4)呼叫特征改變用戶應該能夠改變呼叫過程中的呼叫特征。例如,一呼叫可以被設置為“voice-only”,但是在呼叫過程中,用戶可以開啟視頻功能。也就是說一個加入呼叫的第三方為了加入該呼叫可以開啟不同的特征。2.1.2 SIP基本組成SIP協(xié)議雖然是主要為IP網(wǎng)絡設計的,但它并不關(guān)心承載網(wǎng)絡,可以在ATM、幀中繼等承載網(wǎng)中工作,可以運行于TCP、UDP、SMTP等各

25、種傳輸層協(xié)議之上。SIP用戶通過類似于e-mail地址的URL標識,例如sip:myname,通過這種方式可以用一個統(tǒng)一名字標識不同的終端和通信方式。SIP主要由于4種元素組成:用戶代理、代理服務器、重定向服務器以及注冊服務器。(1)用戶代理(User Agent)用戶代理是用于用戶與用戶之間交互的SIP實體,它通常有一個與用戶連接的接口??煞謨蓚€部分:用戶客戶端(UAC),負責發(fā)起呼叫;用戶服務端(UAS),負責接受呼叫并做出響應。兩者并不是絕對的。例如,Bob想要在他的計算機上通過Internet打電話給Jack,他運行了一個包含SIP用戶代理的應用程序,Bob通過接口和UA交互。一旦Bo

26、b按了呼叫Jack的接口按鈕,UA就觸發(fā)相應的SIP消息建立呼叫請求。Bob的UA此時扮演的就是UAC。Jack的計算機上也有一個SIP用戶代理,當這個代理收到Bob用戶代理發(fā)來的請求時,可能給出兩個按鈕給Jack選擇:接受請求和拒絕請求。當Jack作出接受請求時按下接受請求按鈕,Jack的用戶代理根據(jù)作出的選擇給Bob的用戶代理回送消息。Jack的UA此時扮演的就是UAS。用戶和SIP之間的所有交互都是通過UA作為中介來完成的。(2)代理服務器(Proxy Server)代理服務器負責接收用戶代理發(fā)來的請求,根據(jù)網(wǎng)絡策略將請求發(fā)給相應的服務器,并根據(jù)收到的應答對用戶代理做出響應??煞譃楸A艉?/p>

27、叫狀態(tài)代理、保留狀態(tài)代理和不保留狀態(tài)代理。如表2.1所示。表2.1 代理服務器分類保留呼叫狀態(tài)代理保留為后述事務發(fā)送的SIP消息的詳細路徑,這些代理存儲從會話建立時刻起到會話結(jié)束為止所有狀態(tài)信息。保留狀態(tài)代理存儲與一個給定事務相關(guān)的狀態(tài)信息直到事務結(jié)束,它不需要位于那些為后述事務發(fā)送的SIP的路徑中不保留狀態(tài)代理收到一個請求時,就發(fā)向下一跳,立即刪除與之相關(guān)的所有狀態(tài)信息;收到應答時,根據(jù)Via標題頭分析路徑發(fā)往下一跳,它并不為之維持狀態(tài). 上例中Bob只發(fā)出一個呼叫請求,但是可能會有很多Proxy為他建立呼叫請求,設Jack是Hust電信系ITEC的一名研究生,Hust有一個代理服務器,電信

28、系也有一個代理服務器,當Bob的請求:Jack,到達Hust時,Hust的代理服務器將代表Bob的UA自動向Jack發(fā)出請求,當請求到達電信系服務器時,電信的代理服務器將自動向ITEC發(fā)出Jack請求。(3)重定向服務器(Redirect Server)重定向服務器用于在需要時將用戶新的位置返回給呼叫方。呼叫方可根據(jù)得到新位置重新呼叫。如上例設Hust有一個重定向服務器,它知道Jack工作時在Jack6,休息時在Jack19它就將這兩個地址返回給Bob的UA,UA根據(jù)返回的地址同時向這兩個地址發(fā)送請求。重定向服務器也可以返回知道Jack更多地址的的服

29、務器。(4)注冊服務器(Register)注冊服務器用于接收和處理用戶端的注冊請求,完成用戶地址的注冊。SIP提供了一個搜索機制,如果一個用戶期望建立和其它用戶會話,SIP必須查找能夠找到對方用戶正在使用的當前主機。如Jack想要別人能夠找到他就必須向服務注冊可以找到他的一個或幾個地址。2.1.3 SIP消息格式SIP消息采用的是文本格式編碼,雖然在傳輸時占用的帶寬比二進制更寬,但是采用文本更容易讓人閱讀,所以便于調(diào)試,而且采用文本協(xié)議更靈活更易于以后新功能的擴展。(1)SIP消息SIP消息有兩種:請求消息和響應消息一個SIP消息由一個起始行、一個或幾個字段組成的消息頭、一個空行以及可選的消息

30、體組成。起始行分為請求行和狀態(tài)行兩種,分別對應請求消息和響應消息的起始行。(2)常用標題頭標題頭提供了有關(guān)于請求或應答的信息和關(guān)于這些消息所包含的消息體的信息。呼叫標識(Call-ID)代表了一種在兩個或多個用戶之間共享SIP信令的關(guān)系,它標識了一個特定的邀請和這個邀請相關(guān)的所有后續(xù)事務。一個多媒體會議可產(chǎn)生多個Call-ID不同的呼叫。下面簡要說明一下From、To、Contact和Cseq這四個標題頭含義。.From:表示了請求的來源地。這個可能和對話的來源不同,被叫方到呼叫方的請求會在From頭域中使用被叫方的地址。.To:定義了邏輯上的請求的接受者。它通常還包含目的方的公用地址,在整個

31、會話過程中,To頭域不能被更改。.聯(lián)系(Contact):提供了一個URI,這個URI的含義取決玩是在請求還是在應答中。根據(jù)Contact標題頭可以直接找到用戶的URL,它們在路由第一個INVITE請求后就不再需要存放在信令中,這個特性非常重要。如Bob知道了Jack在19工作,他在ACK中就不需要再經(jīng)過了。.命令序列標題頭(Cseq):包含一個數(shù)字序列號和請求的方法。數(shù)字部分用于在同一會話中對不同的請求進行排序。如Bob發(fā)送一個INVITE消息給Jack:Cseq: 1 INVIITE如果他想重新發(fā)一個,可以寫成如下:Cseq: 2 INVITE。在ACK和CANCEL

32、請求中應該有與對應的INVITE同樣的Cseq。.Max-Forwards: 必須在任何一個SIP請求中使用,來限制中間轉(zhuǎn)發(fā)請求到下一個節(jié)點的proxy or gateway的個數(shù)。每當服務器轉(zhuǎn)發(fā)一次這個數(shù)字就減一。路由(Route):用于強制一個請求經(jīng)過一個proxy路由列表。Via:用來描述請求當前經(jīng)歷的路徑的,并且標志了應答所應當經(jīng)過的路徑。(3)對SDP的要求 詳細介紹見表2.2所示。表2.2 SDP描述內(nèi)容1.協(xié)議版本v = 02.會話源o = 3 連接數(shù)據(jù)c = 4.時間描述t = 5.媒體級描述m = 6.屬性a = :(4)請求應答包括請求和應答兩個部分,下面先介紹一下請求方法

33、。SIP核心規(guī)范了6種請求方法,分別是:INVITE、 ACK 、BYE、 CANCEL、 REGISTER 、OPTIONS。.請求(INVITE)用于邀請用戶或服務參加一個會話。在INVITE請求的消息體中可對被叫方被邀請參加的會話加以描述,如主叫方能支持的媒體類型、發(fā)出的媒體及與其相應的一些參數(shù);對INVITE請求的成功響應必須有在響應的消息體中說明被叫方愿意接收哪種媒體或者說明被叫方發(fā)出的媒體。假如Bob的用戶代理用SDP描述會話如下:v = 0o = Bob 12345678 84571644 IN IPv4 23s = I miss you I want to

34、 talk to youc = IN IPv4 23t = 0 0 m = audio 12345 RTP/AVP 0 Jack的用戶代理收到Bob 的INVITE邀請加入會話.根據(jù)會話描述,UA知道這是由Bob發(fā)起的,他想要在IP是23 ,UDP端口12345接受Jack聲音的實時傳輸協(xié)議(RTP)的數(shù)據(jù)包,并且知道它可以接收PCM編碼聲音。UA通知Jack并發(fā)出“180振鈴”給Bob的UA。當Jack決定接聽時,UA發(fā)送個最終應答“200OK” 給Bob。.確認(ACK)ACK請求用于客戶機向服務器證實它已經(jīng)收到了對INVITE請求的最終響應。當

35、客戶機沒有收到臨時應答和最終應答時就不斷重發(fā)INVITE請求(或者放棄INVITE請求),因為他不能確定Jack是否收到請求或者消息在途中丟失了。只有請求客戶端才有權(quán)利發(fā)送ACK。.再見(BYE)用戶代理客戶機用BYE請求向服務器表明它想釋放呼叫??梢杂芍鹘蟹桨l(fā)出也可以由被叫方發(fā)出。呼叫的一方在釋放呼叫前必須發(fā)出BYE請求,收到BYE請求的這方必須停止發(fā)送媒體流給發(fā)出BYE請求的一方。.取消(CANCEL)用于取消一個Call-ID,To,From,和Cseq字段相同的下在進行的請求,但是取消不了已經(jīng)完成的請求。如果電話很長時間沒有人接聽,Bob決定取消請求,他就會發(fā)一個Cancel請求。Ja

36、ck 的UA收到請求后停止振鈴,會話沒有建立成功,發(fā)送一個ACK請求給Bob的UA。同樣也要三次握手:請求-取消事務-ACK。.注冊(REGISTER)用于客戶機向SIP服務器注冊列在To字段中的地址信息。用戶發(fā)送一個REGISTER請求給服務器通知他們當前所在地。如Jack可以向Hust服務器的注冊員指示所有進入到Hust的請求都可以在Sip:jack,或者重定為jack。這樣所有找Jack的請方便到一些可能的地方找到他。.選項(OPTIONS)用于向服務器查詢其能力。如果服務器認為它能與用戶聯(lián)系,則可用一個能力集響應OPTIONS請求;對于代理和重定向服務器只要轉(zhuǎn)發(fā)此請求,不用顯示其能力。

37、應答當服務器收到請求時就會作出一個應答6,每個應答都有一個代表事務狀態(tài)的編碼。狀態(tài)碼大小是100699,其中1XX是臨時應答,其他的都是最終應答。詳細介紹見表2.3。表2.3 應答編碼及對應狀態(tài)1XX(Informational)請求已經(jīng)收到、繼續(xù)處理請求2XX(Uccess)行動已經(jīng)成功地收到,理解和接受3XX(Redirection)為完成呼叫請求,還須采取進一步的動作4XX(Client Error)請求有語法錯誤或不能被服務器執(zhí)行,客戶機需修改請求5XX(Server Error)服務器出錯,不能執(zhí)行合法請求6XX(Global Failure)任務服務器都不能執(zhí)行請求(5)事務. I

38、NVITE事務INVITE請求包含了一個三方的握手:客戶端事務發(fā)送一個INVITE,服務端事務返回一個應答,客戶端事務發(fā)送一個ACK。采用逐跳的機制,保證每一個信令被成功向下一跳傳送。當然不保存狀態(tài)機不能完成此任務。在傳輸中可以采用的不是同一個協(xié)議,服務器與服務器之間可能有點是UDP有的是TCP。在用戶端和Proxy中都要設立定時器,以備重發(fā)。發(fā)送一個INVITE請求發(fā)送一個請求必須保證TU是用INVITE請求來初始化一個新的客戶端事務??蛻舳耸聞毡仨毎颜埱蟀l(fā)送到通訊層來進行發(fā)送。SIP采用一種機制保證每一個INVITE請求成功的發(fā)往下一跳,路徑上Proxy有義務把INVITE向下一個Prox

39、y或終端UA發(fā)送。在可靠的傳輸協(xié)議上Proxy不需要做其它的事了;如果在不可靠的協(xié)議中,Proxy在收不到應答時將每隔T重發(fā)請求,重發(fā)的時間間隔加倍。在無狀態(tài)的Proxy中不能完成此任務。當Proxy收到請求時,總會產(chǎn)生一個“100trying”應答,防止請求端不斷重發(fā)請求。而請求的用戶代理可能產(chǎn)生任何的臨時響應,如“ 180ringing”。 應答INVITE請求SIP不能保證臨時應答都能夠到達呼叫者的UA,即使丟失了也不重傳。但對于最終應答,不論是成功還是非成功應答,SIP都是采用逐跳傳送,在不可靠的傳輸UDP上傳輸時,要不斷重傳請求,直到收到ACK。當然在可靠的傳輸協(xié)議中也需要ACK應答

40、,因為SIP是三次握手協(xié)議。.非INVITE請求非INVITE事務并不使用ACK。他們只是簡單的請求應答的交互。對于非可靠的傳輸來說,請求是間隔T1倍增地傳輸。如果只收到了一個臨時應答,到達到T2時如果沒有收到最終應答,重傳繼續(xù)。這與INVITE事務不同,這樣做的目的是確保收到一個最終應答。2.1.4 SIP運作模式SIP 的呼叫建立如圖2.18所示,開始的時候caller 會送出SIPINVITE的訊息給callee,callee收到之后,會馬上響應一個100 Ringing的訊息通知caller,說明目前callee 已經(jīng)收到INVITE 訊息且正在處理中,如果callee 愿意與call

41、er 通話,便會送出200 OK的response,最后caller 再送出ACK,此時便可以開始進行會議。當其中一方想結(jié)束通訊時,便會送出BYE 的訊息來通知對方,對方響應200 OK 便可以結(jié)束目前進行會議。 Client (Caller/UA) Server(Callee/UAS)INVITE100:Trying180:Ringing200:OKACKBye200:OKRTP圖2.1 SIP 呼叫流程2.1.5 SIP未來發(fā)展問題目前來看,SIP協(xié)議并沒有在電信領域大規(guī)模應用的先例,很多問題影響了SIP的未來發(fā)展方向。通過學習SIP協(xié)議和H323協(xié)議,我發(fā)現(xiàn)SIP還有很多問題急需解決,主

42、要包括以下幾點:(1)SIP終端的智能性過強,可能會給網(wǎng)絡帶來很多的安全問題。(2)用戶終端可以繞開運營商的管理直接向被叫用戶發(fā)起呼叫。(3)SIP網(wǎng)絡結(jié)構(gòu)采用平面化形式,運營商不便進行管理和收費。(4)與H323想比,SIP不具備點到點的會話控制能力,如控制一方成為主席或點名一方發(fā)言等。(5)SIP規(guī)范還不是很健全,很多信令規(guī)范存在安全隱患,一旦用戶不按規(guī)定進行操作,或惡意對會議進行破壞的話,系統(tǒng)不能采取相對有效的措施等。以上幾點是我自己總結(jié)出來的,有問題就要解決問題。整體來看,SIP的發(fā)展前景還是很好的,而且,SIP協(xié)議的規(guī)范和應用也在不斷的進行發(fā)展,以后SIP還可能應用到其他領域,讓我們

43、拭目以待吧。2.2程序開發(fā)工具Microsoft Visual C+是運行于Windows平臺上的交互式可視化繼承開發(fā)環(huán)境。它是Microsoft Visual Studio家族的成員之一。Visual C+之所以稱為集成開發(fā)環(huán)境,是因為它集程序的代碼編輯、編譯、連接和調(diào)試等功能于一體,給編程人員提供了一個完整而方便的開發(fā)環(huán)境,并提供許多有效的協(xié)助開發(fā)工具,如SourceSafe等。Visual C+的AppWizard可以為大部分類型的應用程序提供框架代碼,用戶無需書寫代碼,只需要簡單的單擊幾個按鈕就可以生成簡單的可以運行的程序框架。與其他的可視化開發(fā)環(huán)境比較,除了共同的優(yōu)點之外,Visua

44、l C+還具有許多優(yōu)勢。雖然使用Visual C+設計一些非常簡單的程序時,可能體現(xiàn)不出其優(yōu)勢,甚至還很麻煩,需要書寫很多的代碼,但當用戶需要完成更靈活的、特定的界面時,使用Visual C+則更加方便,它可以讓用戶“隨心所欲”。由于Visual C+基于C+語言,并且來自Windows操作系統(tǒng)本身的開發(fā)者Microsoft公司,因此,在眾多的可視化集成開發(fā)環(huán)境中,它是開發(fā)Windows應用程序的最佳選擇。Osip2是一個開放源代碼的sip協(xié)議棧,是開源代碼中不多使用C語言寫的協(xié)議棧之一,它具有短小簡潔的特點,專注于sip底層解析使得它的效率比較高。eXosip是Osip2的一個擴展協(xié)議集,它

45、部分封裝了Osip2協(xié)議棧,使得它更容易被使用。2.2.1 Visual C+ 6.0具體特點15Visual C+ 6.0是微軟公司在多年使用、不斷改進的基礎上推出的用于支持Win95以上的平臺應用程序(Applications)、服務(Service)和控件(Control)的開放環(huán)境。Visual C+ 6.0是一個典型的集成開發(fā)環(huán)境IDE(Integrated Develop Enviroment),它集編輯、編譯、鏈接和調(diào)試等功能于一體,是一系列開發(fā)工具的組合。具有以下特點:開放環(huán)境Visual Studio由一套繼承工具組成,用于開發(fā)WVIN 32(in95/98或Windows

46、NT)環(huán)境下運行的應用程序。提供功能強大的向?qū)Чぞ撸∕FC AppWizard、Class Wizard)。Developer Studio 的項目工作區(qū)的形式組織元件、項目及項目等配置。MFC類庫支持多線程應用程序開發(fā)。具有Windows Socket和Mapi支持,可以與網(wǎng)絡及Email連接。最快的繼承數(shù)據(jù)庫訪問,允許用戶適應強有力的數(shù)據(jù)庫應用程序。具有強有力的Internet支持,對OLE提供強有力支持。2.2.2 MFC類庫對于任何一種操作系統(tǒng),如果想在其上進行應用程序開發(fā),那么就必須了解它所提供的API(Application Program Interface,應用程序接口)。如果

47、說以前的標準Windows API函數(shù)庫是用于編寫Windows應用程序的C函數(shù)庫,那么MFC(Microsoft Foundation Class)則是用于編寫Windows應用程序的C+類庫。本文在程序設計時選擇了C+語言,用到了MFC類庫。MFC完整的封裝Windows API函數(shù),而且包括具有共性的應用程序操作,如打印、狀態(tài)條和工具欄等。MFC庫具有與C語言為基礎的Windows API開發(fā)的的Windows應用程序共存的能力。在同一程序中,用戶可以同時使用MFC中的類和Windows API函數(shù),為混合編程提供了方便。MFC提供了自動消息處理功能。MFC庫將自動處理每一條Window

48、s消息,并且每一條Windows消息都被直接映射到一個進行相應處理的成員函數(shù)。MFC提供了面向?qū)ο蟮腤indows應用程序接口,與傳統(tǒng)的Windows API相比較,它具有以下一些明顯的優(yōu)勢:.有效簡化了編寫Windows應用程序的難度。與C語言API具有相當?shù)膱?zhí)行速度,使經(jīng)常使用的代碼量最小化。有能夠直接調(diào)用任何一個API函數(shù)的能力。比C語言的Windows API更易使用。更容易使用一些強大的復雜功能的抽象概念,如ActiveX、打印、工具欄和狀態(tài)欄等。2.2.3 Osip2和EXosip協(xié)議棧的分析(1)SIP協(xié)議棧的介紹Osip2是一個開放源代碼的sip協(xié)議棧,是開源代碼中不多使用C語

49、言寫的協(xié)議棧之一,它具有短小簡潔的特點,專注于sip底層解析使得它的效率比較高。但缺點也很明顯,首先就是可用性差,沒有很好的api封裝,使得上層應用在調(diào)用協(xié)議棧時很破碎;其次,只做到了transaction層次的協(xié)議過程解析,缺少call、session、dialog等過程的解析,這也增加了使用的難度;再次,缺少線程并發(fā)處理的機制,使得它的處理能力有限。eXosip是Osip2的一個擴展協(xié)議集,它部分封裝了Osip2協(xié)議棧,使得它更容易被使用。eXosip增加了call、dialog、registration、subscription等過程的解析,使得實用性更強。但是eXosip局限于UA的實

50、現(xiàn),使得它用于registrar、sip server等應用時極其不容易。另外,它并沒有增加線程并發(fā)處理的機制。而且只實現(xiàn)了音頻支持,缺少對視頻和其它數(shù)據(jù)格式的支持。綜合來說,Osip2加上eXosip協(xié)議棧仍然是個實現(xiàn)Sip協(xié)議不錯的選擇。當然需要根據(jù)不同的需求來增加更多的內(nèi)容。(2)SIP協(xié)議棧的組成協(xié)議棧大致可以分為三部分:sip協(xié)議的語法分析、sip協(xié)議的過程分析和協(xié)議棧框架。下面以osip 為例加以闡述。.ip協(xié)議的語法分析主要是osipparser2部分,目前支持RFC3261和RFC3265定義的sip協(xié)議消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SU

51、BSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定義的PRACK。遵循RFC3264關(guān)于SDP的offer/answer模式。帶有SDP的語法分析。支持MD5加解密算法。支持Authorization、www_authenticate和proxy_authenticate。.ip協(xié)議的過程分析主要是osip2部分,基于RFC3261、RFC3264和RFC3265的sip協(xié)議描述過程,圍繞transaction這一層來實現(xiàn)sip的解析。Transaction是指一個發(fā)送方和接收方的交互過程,由請求和應答組成。請求分為Invite類型和Non-Invite

52、類型。應答分為響應型的應答和確認型的應答。響應型的應答是指這個應答僅代表對方收到請求。請求經(jīng)過處理后都必須返回確認型的應答。響應型的應答有1xx,確認型的應答包括2xx、3xx、4xx、5xx和6xx。一個transaction由一個請求和一個或多個響應型應答、一個確認型應答組成。Transaction根據(jù)請求的不同和發(fā)送/接收的不同可以分為四類:ict、nict、ist和nist。.Ict是指Invite client transaction,就是會話邀請的發(fā)起方。.Nict是指Non-Invite client transaction,是指非邀請會話的發(fā)起方。.Ist是指Invite se

53、rver tranaction,是指會話邀請的接收方。.Nist是指Non-Invite server transaction,是指非邀請會話的接收方。每種類型的transaction都有自己相應的狀態(tài)機,Osip2協(xié)議棧根據(jù)狀態(tài)機來處理所有的sip事件,所以這部分就是整個協(xié)議棧的核心。但是因為Osip2只做到transaction這一層,所以它可以忽略掉call、registration等應用的復雜性,顯得相當簡單,這就使得需要使用它的應用必須要自己處理應用的邏輯。必須注意的一點是,transaction的資源在Osip里是由協(xié)議棧負責釋放的,但是在Osip2里改成由使用的應用負責釋放。.議

54、??蚣芸蚣懿⒉皇侵复a的某一部分,而是指它的構(gòu)成形式。主要有三部分:底層套接字接收/發(fā)送,模塊間通信管道,上層調(diào)用api接口。Osip2并不實現(xiàn)底層套接字的接收/發(fā)送,由eXosip實現(xiàn),現(xiàn)在只支持UDP的鏈路連接。模塊間的通信管道包括:transaction的消息管道、jevent的消息管道。Transaction的消息管道是驅(qū)動其狀態(tài)機的部件,通過不斷的接收來自底層套接字的遠端信令,或者來自上層調(diào)用的指令,根據(jù)上述的狀態(tài)機制來驅(qū)動這個transaction的運轉(zhuǎn)。Jevent的消息管道是eXosip實現(xiàn)的,用于匯報底層事件,使得調(diào)用程序能處理感興趣的事件。上層調(diào)用的api接口大致有兩類:sip協(xié)議的調(diào)用接口和sdp協(xié)議的調(diào)用接口。EXosip封裝了大部分的sip協(xié)議調(diào)用接口,一般來說都不需要直接調(diào)用osip2的接口函數(shù)。接口函數(shù)很多,在這里就不詳述了,函數(shù)定義請參照源代碼部分的注釋。(3)Osip的應用在使用oSIP前必須先初始化oSIP,主要調(diào)用函數(shù)osip_global_init()和osip_init(),具體操作代碼如下:/osip_t *osip; / initialise internal element first if (0!=os

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論