什么是SIP協議?SIP協議淺析
1. SIP定義
什么是SIP?SIP是一種voip網絡通信協議,SIP是一種應用層協議,全稱叫會話初始協議,是英文Session initialization Protocol縮寫,也是互聯網上現代交互式通信(語音通話,視頻通話等)的基礎。(首先我們要知道要了解網絡電話協議有哪些,請參考:https://www.keneuc.cn/hangye/6057.html。)SIP是類似于HTTP的基于文本的協議。它可以減少應用特別是高級應用的開發時間。由于基于IP協議的SIP利用了IP網絡,固定網運營商也會逐漸認識到SIP技術對于他們的深遠意義
注意:SIP (系統級封裝(System In a Package)與本文無關,了解這個請移步:系統級封裝_百度百科 sip還有一種解釋:SIP(系統完整性保護) 本文主要介紹SIP通信協議。
SIP(SessionInitiationProtocol,會話發起協議)是由IETF推出的一種用于建立、修改和終止多媒體會話的應用層控制協議。這些多媒體會話包括Internet多媒體會議、遠程教育、Internet電話等。SIP側重于將SIP網絡電話作為互聯網上的一個應用,所以SIP繼承了互聯網協議簡單、開放、靈活的特點,既保證了對用戶和會話的可管理性,又使網絡核心負擔大大減輕,實現可伸縮性。同時,與其他互聯網應用(如FTP、E-mail等)相比較,SIP還增加了信令和QoS控制的要求。
作為一個IETF提出的標準,SIP協議在很大程度上借鑒了其他各種廣泛存在的Internet 協議,如HTTP (超文本傳輸協議)、SMTP (簡單郵件傳輸協議)等,和這些協議一樣,SIP 也采用基于文本的編碼方式,這也是SIP協議同視頻通信領域其他現有標準相比最大的特點 之一。SIP協議的提出和發展,是伴隨著Internet的發展而發展的,到目前為止它走過了以下幾 個階段。Mark Handley 和 Eve Schooler 開發了會話邀請協議(Session Invitation Protocol) SIPvl, 于1996年2月22日遞交IETFo SIPvl協議僅僅處理會話的建立,一旦用戶加入會話,則信 令就終止,而且會議也無中間控制。 在 IETF 第 35 次會議上,Schulzrinne 提出了 SCIP (Simple Conference Invitation Protocol, 簡單會議發起協議),經過討論,將SIPvl和SCIP進行合并,最終的協議保留了 SIP作為名 字,但意義已經改為 Session Initiation Protocol。 隨后 Mark Hanley > Schulzrinne 和 Schooler 于 1996 年將 SIPv2 遞交給 IETF 第 37 次會議, 這是一個基于HTTP新的SIP。 1999年3月,IETF的多方、多媒體會晤控制(mmusic)工作組提出了 RFC2543建議, 供各廠商和機構討論。 1999年9月,SIP工作組從mmusic中分離并獨立岀來,成立了 SIP工作組,最初由Joerg Ott、Jonathan Rosenberg和Dean Willis擔任主席,并于2000年7月發表了 SIP的草案。 2002年6月,IETF的SIP工作組又發表了 RFC3261建議,以取代RFC2543-由于網絡環境以及相關多媒體技術的不足,在SIP協議首次提出的時候,僅僅針對各種文 本應用,隨著技術的發展,并通過和IETF中IP電話工作組(iptel)、IP網中電話選路(trip) 工作組等兄弟工作組配合工作,在SIP協議中大大加強了對多媒體通信的支持。 近年來,在建設下一代網絡的過程中發生了一個很明顯的變化:很多設備廠商都開始將 其下一代網絡的協議標準向SIP方向傾斜。SIP成為追逐的標準,最大的優勢就是開發簡單, 同時SIP具有繼承性,對于擁有傳統網絡的運營商來說,SIP在網絡發展過程中,無疑是一個 承上啟下最好的切入點。 在3GPP中使用SIP標準來支持語音和數據是SIP協議得以發展的一個重要原因,SIP可 以對語音進行很好的優化,并且由于它的可編程性,使移動業務面臨靈活性和多樣性的變化 時,有了很好的保證。 另外,基于SIP的終端豐富多彩有利于從網絡接入到最終用戶的完整產業鏈的完成。SIP 能夠對手機、PDA等移動設備提供良好的支持,對于在線即時交流、語音和視頻數據傳輸等 多媒體應用也能夠很好地完成。
SIP是一種基于文本的協議,它的語法和消息非常類似于HTTP協議,不同之處在于SIP不僅可以用TCP,也可以用UDP封裝。SIP采用統一資源定位(URL,UniformResourceLocators)來指示會話的發起方(From八當前請求的目的地(RequestURL)和最終的接收方(To)。
SIP的消息分為兩大類:
- 一類為客戶發往服務器的請求消息;
- 另一類為服務器返回的響應消息。
SIP在消息體中采用SDP(SessionDescriptionProtocol,會話描述協議)來描述多媒體會話的媒體信息。SIP最大的特點是僅需利用已有的消息頭字段,對其進行簡單必要的擴充,就能很方便地支持各項新業務和智能業務,具有很強的靈活性和可擴充性。SIP協議天然具有對移動性的支持。SIP的動態注冊機制,使用戶端的移動變得十分方便。
SIP協議為實現固定和移動業務的無縫融合創造了條件。3GPPR5版本已經選定SIP作為3G移動通信多媒體域的信令協議來實現基于IP的移動語音和多媒體通信。SIP的這些優越特征使其在NGN中占據很重要的主導地位。下圖顯示了一個典型的SIP呼叫建立的信令過程,具體過程如下。
2. 建立呼叫的SIP信令過程
1、呼叫方對某個用戶SIP:userA@company.com發起INVITE請求,該請求中提供了足夠的信息,以便被叫方能參加該會話,包括媒體流的類型和格式以及地址和端口等信息,以SDP格式來表示,INVITE請求被送到本地的SIP代理服務器A;2、本地的SIP代理服務器A通過DNS查詢,得到company.com域中處理SIP請求的重定向服務器的IP地址,并將接收到的請求轉發到該SIP重定向服務器;3、SIP重定向服務通過查詢,了解到用戶userA@company.com當前并不在本地,而是以userB@univeristy.edu登記(company.com的服務器可以通過靜態配置數據庫入口來獲得這些消息,或者用戶通過使用SIPREGISTER消息動態通知重定向服務器),然后該服務器將請求重定向到university.edu;4、本地的SIP代理服務器A通過DNS查詢,得到university.edu域中處理SIP請求的代理服務器B的IP地址,并將接收到的INVITE請求轉發到該SIP代理服務器B;5、university.edu域中的SIP代理服務器B查詢本地的位置服務數據庫;6、本地數據庫返回有關userB@univeristy.edu的消息,指示該用戶在本地是以userC@cs.university.edu注冊的;7、university.edu域的SIP代理服務器B將該INVITE請求轉發到cs.university.edu域中的SIP代理服務器C;8、cs.university.edu域中的SIP代理服務器C知道用戶userC@cs.university.edu當前所登記的機器的IP地址,并將該INVITE請求轉發到該地址;9、被叫方userC@cs.university.edu接受該呼叫,并發回一個響應。該響應沿著10、11、12到達呼叫方,然后呼叫方返回一個確認(圖中未標出),至此呼叫已經建立,可以開始在它們之間直接傳輸媒體流了。我公司多年的SIP通信行業經驗,為行業提供方案與產品
3. SIP功能
SIP被描述為用來生成、修改和終結一個或多個參與者之間的會話。這些會話包括Internet多媒體會議,Internet(或任何IP網絡)電話呼叫和多媒體發布。
會話中的成員能夠通過多播或單播聯系的網絡來通信。SIP支持會話描述,它允許參與者在一組兼容媒體類型上達成一致。它同時通過代理和重定向請求到用戶當前位置來支持用戶移動性。SIP不與任何特定的會議控制協議捆綁。本質上,SIP提供以下功能:
名字翻譯和用戶定位:
無論被呼叫方在哪里都確保呼叫達到被叫方、執行任何描述信息到定位信息的映射,確保呼叫(會話)的本質細節被支持。
特征協商:
它允許與呼叫有關的組(這可以是多方呼叫)在支持的特征上達成一致(注意:不是所有各方都能夠支持相同級別的特征)。例如,視頻可以或不可以被支持。總之,存在很多需要協商的范圍。
呼叫參與者管理:
呼叫中參與者能夠引入其他用戶,加入呼叫或取消到其他用戶的連接。此外,用戶可以被轉移或置為呼叫保持。
呼叫特征改變:
用戶應該能夠改變呼叫過程中的呼叫特征。例如,一個呼叫可以被設置為“voice-only”,但是在呼叫過程中,用戶可以開啟視頻功能。也就是說一個加入呼叫的第三方為了加入該呼叫可以開啟不同的特征。
SIP網絡單元
4. SIP系統基本組成
SIP協議雖然主要為IP網絡設計的,但它并不關心承載網絡,也可以在ATM、幀中繼等承載網中工作,它是應用層協議,可以運行于TCP,UDP,SCTP等各種傳輸層協議之上。SIP用戶是通過類似于e-mail地址的URL標識,例如:sip:myname@mycompany.com,通過這種方式可以用一個統一名字標識不同的終端和通信方式,為網絡服務和用戶使用提供充分的靈活性。按邏輯功能區分,SIP系統由4種元素組成:用戶代理、代理服務器、重定向服務器以及注冊服務器。
1.用戶代理
用戶代理(UserAgent)分為兩個部分:
- 客戶端(UserAgentClient),負責發起呼叫;
- 用戶代理服務器(UserAgentServer),負責接受呼叫并做出響應。
二者組成用戶代理存在于用戶終端中。用戶代理按照是否保存狀態可分為有狀態代理、有部分狀態用戶代理和無狀態用戶代理。
2.代理服務器
代理服務器(ProxyServer),負責接收用戶代理發來的請求,根據網絡策略將請求發給相應的服務器,并根據收到的應答對用戶做出響應。它可以根據需要對收到的消息改寫后再發出。
3.重定向服務器
重定向服務器(RedirectServer),用于在需要時將用戶新的位置返回給呼叫方。呼叫方可根據得到的新位置重新呼叫。
4.注冊服務器
注冊服務器(Registrar),用于接收和處理用戶端的注冊請求,完成用戶地址的注冊。 以上幾種服務器可共存于一個設備,也可以分布在不同的物理實體中。SIP服務器完全是純軟件實現,可以根據需要運行于各種工作站或專用設備中。UAC,UAS,ProxyServer,RedirectServer是在一個具體呼叫事件中扮演的不同角色,而這樣的角色不是固定不變的。一個用戶終端在會話建立時扮演UAS,而在主動發起拆除連接時,則扮演UAC。一個服務器在正常呼叫時作為ProxyServer,而如果其所管理的用戶移動到了別處,或者網絡對被呼叫地址有特別策略,則它將扮演RedirectServer,告知呼叫發起者該用戶新的位置。
除了以上部件,網絡還需要提供位置目錄服務,以便在呼叫接續過程中定位被叫方(服務器或用戶端)的具體位置。這部分協議不是SIP協議的范疇,可選用LDAP(輕量目錄訪問協議)等。
理論上,SIP呼叫可以只有雙方的用戶代理參與,而不需要網絡服務器。設置服務器,主要是服務提供者運營的需要。運營商通過服務器可以實現用戶認證、管理和計費等功能,并根據策略對用戶呼叫進行有效的控制。同時可以引入一系列應用服務器,提供豐富的智能業務。 SIP的組網很靈活,可根據情況定制。在網絡服務器的分工方面:位于網絡核心的服務器,處理大量請求,負責重定向等工作,是無狀態的,它個別地處理每個消息,而不必跟蹤紀錄一個會話的全過程;網絡邊緣的服務器,處理局部有限數量的用戶呼叫,是有狀態的,負責對每個會話進行管理和計費,需要跟蹤一個會話的全過程。這樣的協調工作,既保證了對用戶和會話的可管理性,又使網絡核心負擔大大減輕,實現可伸縮性,基本可以接入無限量用戶。SIP網絡具有很強的重路由選擇能力,具有很好的彈性和健壯性。 對話啟動協議提供了一種既可在終端設備或代理服務器之間,也可向網關設備傳輸呼叫控制信息的方法,像許多現有的Internet協議一樣,SIP中也包含了常用的HTTP協議。 SIP被認為是一種輕量級協議,因為該協議使用的是能被終端設備輕易生成并分析的簡單文本命令。SIP只使用6個指令管理呼叫控制信息,SIP協議的簡單易行是極低成本應用系統選擇該協議的重要原因。
SIP并未對媒體傳輸機制加以定義,因此該協議能用在媒體傳輸作為專用設備的應用系統,這可以提高效率并降低成本。SIP也允許通過任意數據報協議傳輸呼叫控制信息,使其在非TCP/IP環境(如Novell或其他專有協議)中也能有效使用。
SIP的部分優點包括:
該協議具有可擴展特性,可以輕松定義并迅速實現新功能。可以簡單易行地嵌入廉價終端用戶設備。該協議可確保互操作能力,并使不同的設備進行通信。便于那些非電話領域的開發人員理解該協議。
SIP的缺點包括:
SIP問世不久,因此大多數應用尚處于原型階段。該協議單獨應用的范圍較窄。但與其他協議協同使用時,具有較強的靈活性。SIP只是完整解決方案的一小部分,還需要許多其他的軟件來構建完整的SIP網絡電話產品。
低成本終端產品無疑是SIP最自然的應用了,像無線電話、以太網電話及其他帶有有限計算和內存資源的設備都能使用該協議。由于SIP是一種優越的呼叫控制協議,因此是當前取代MGCP呼叫控制協議的首選。
上述每個協議強調了開發SIP網絡電話系統所需技術的不同方面,當前開發的許多系統中至少包含其中一種協議,而且這些協議通常要求互操作性。所有這些協議在構建復雜SIP網絡電話系統的過程中不斷發展。各制造商都在嘗試研制具備互操作性的系統,所以互操作能力將繼續成為未來的一大挑戰。由IETF和ITU衍生而來的新標準協議MGC(H.248/Megaco)有望成為MGCP在傳輸市場最強有力的競爭對手。
5. SIP協議組網方式
SIP協議組網方案設計視具體的應用場景和需求而定。以下是一個基礎的音頻通信的SIP組網示例:
- 核心網絡設備:核心網設備通常包括SIP服務器(如:SIP代理服務器,SIP注冊服務器等),以及其他網絡設備如防火墻、路由器等。
- 終端設備:終端設備可能是IP電話、智能手機、電腦等支持SIP協議的設備,它們通過用戶代理(User Agents)運行SIP協議。
假設我們需要為兩個辦公室(A與B)設計一個SIP組網方案,他們希望使用IP電話進行音頻通信。步驟如下:
第一步:在每個辦公室中設備使用SIP協議的IP電話作為終端設備。
第二步:在網絡核心位置部署SIP服務器,可以是專業的硬件設備,也可以是運行在PC或者云服務器上的軟件服務。例如,Asterisk、FreeSWITCH或Kamailio等開源軟件。
第三步:設置防火墻規則,允許SIP協議(通常使用5060或者5061端口)和音頻數據流(RTP協議,通常使用10000-20000端口)的通行。
第四步:所有 IP 電話注冊到 SIP 服務器上,當 A 辦公室的 IP 電話想要呼叫 B 辦公室的 IP 電話時,它將請求發送到 SIP 服務器,SIP 服務器根據 B 辦公室的 IP 電話地址進行路由,然后將請求轉發到 B 辦公室的 IP 電話。
第五步:B辦公室的IP電話響應請求,并通過SIP服務器將響應返回給A辦公室。
第六步:當A辦公室的IP電話收到響應后,兩臺電話將直接建立起音頻數據流,開始通話。
以上就是一個SIP協議組網的基礎方案。具體實施時,可能需要根據網絡條件、功能需求、安全需求等因素進行調整,可能需要引入更復雜的網絡設計元素,如VPN、NAT穿透、SIP防火墻等。
6. SIP擴展閱讀
1、H.323和SIP協議的比較
2、SIP特點
3、SIP實現機制
4、SIP協議工作原理
5、SIP消息格式總體描述
6、SIP語法
7、IMS中的SIP協議