win7系統(tǒng)下載
當前位置: 首頁 > 網(wǎng)絡(luò)技術(shù)教程 > 詳細頁面

SIP簡介,第1局部:SIP初探

發(fā)布時間:2022-12-21 文章來源:深度系統(tǒng)下載 瀏覽:

網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機整體,實現(xiàn)資源的全面共享和有機協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認為是互聯(lián)網(wǎng)發(fā)展的第三階段。

摘要
會話發(fā)起協(xié)議(Session Initiation Protocol,SIP)是一種信令協(xié)議,它對于通信業(yè)有著重要的意義。本文從技術(shù)上對SIP進行了一般性的介紹,并說明了SIP如何為通信解決方案提供重要支持。

簡介
我曾經(jīng)構(gòu)想過一種軟件,它可以“浮于”應(yīng)用程序之上,提供輔助作用。這不是一個啞的“幫助”系統(tǒng),而是一個活動的技術(shù)支持代理,可以在Internet上進行討論。那時曾有人告訴我,“現(xiàn)有的工具、庫、協(xié)議或帶寬實現(xiàn)不了這樣的要求!”

時代已經(jīng)不同了!

許多人家中已經(jīng)擁有基于DSL、光纖和其他技術(shù)的寬帶網(wǎng)絡(luò)。存在大量高質(zhì)量的工具和庫,無論是商業(yè)的還是開源的。標準驅(qū)動應(yīng)用。現(xiàn)在是時候來實現(xiàn)上述創(chuàng)新思路了。

了解SIP
首先,我將向您介紹SIP,也就是會話發(fā)起協(xié)議。SIP是一種輕量級的可擴展請求/響應(yīng)協(xié)議,用于在兩個端點之間開始通信會話。這聽起來是不是很熟悉?SIP在概念上源自于HTTP和SMTP,但是它的目的卻不同?梢园裇IP消息與CB(民用波段)隱語10-code和Q-signal進行比較。

在這個例子中,真正的消息包含在專用的呼叫協(xié)商消息中。

SIP是IETF于1999年提出的,在2002年進行了修訂。RFC 3261對它進行了描述。本文中有關(guān)SIP的信息就選自RFC。對SIP存在很多擴展,這些擴展中的很多都能在SIP-related RFCs and drafts清單中找到。

SIP有哪些優(yōu)點呢?通常情況下,兩個端點使用它來協(xié)商一次“呼叫”。這里的協(xié)商包括介質(zhì)(文本、語音等)、傳輸(通常是RTP、Real Time Protocol)和編碼(codec)。一旦協(xié)商成功,兩個端點就會使用選中的方法相互交談——這就與SIP無關(guān)了!昂艚小蓖瓿芍,SIP用于指示斷開連接。因此,SIP最好用作一種信令機制。SIP及其擴展還提供一些相關(guān)功能,比如即時消息傳遞、注冊和到場。

SIP術(shù)語中的端點叫做用戶代理。它可以是“軟件電話”、即時消息收發(fā)器、IP電話,甚至是手機。服務(wù)器用戶代理提供集中式的服務(wù),比如登記員、代理或應(yīng)用服務(wù)器。

聽起來SIP非常簡單,而且它也確實簡單。這種簡單性對于協(xié)議的穩(wěn)定很重要,而且它也沒有降低協(xié)議的有用性,所以該協(xié)議得到了廣泛的應(yīng)用。

例如,考慮一下HTTP。協(xié)議本身的定義很少。但是使用它的方式多不勝數(shù)。SIP也是可以擴展的。存在大量針對SIP的擴展,它們涵蓋了很多應(yīng)用,F(xiàn)在,我們進一步來考察SIP,并分析它為什么會如此重要。

SIP的重要性
有人說,SIP對于通信,就像HTTP對于Web一樣。

SIP對通信業(yè)產(chǎn)生了巨大的影響。從事蜂窩技術(shù)的公司已經(jīng)決定為了未來的應(yīng)用,對SIP進行標準化。VoIP (Voice over IP)供應(yīng)商、Internet電話和即時消息傳遞應(yīng)用程序(例如,Microsoft MSN Messenger)都準備基于SIP進行標準化。

目前已經(jīng)存在一些信令協(xié)議和P2P技術(shù)。這就引發(fā)了一個問題:SIP相對于這些協(xié)議和技術(shù)有何優(yōu)勢?SIP具有以下的明顯優(yōu)點:

穩(wěn)定性。該協(xié)議已經(jīng)使用了多年,現(xiàn)在十分穩(wěn)定。
速度;赨DP的小型協(xié)議效率特別高。
靈活性。這個基于文本的協(xié)議十分容易擴展。
安全性。它提供像加密(SSL、S/MIME)和身份驗證這樣的功能。對SIP的擴展還提供其他安全性功能。
標準化。隨著整個通信行業(yè)都在向SIP靠攏,SIP已經(jīng)訊速成為一種標準。其他技術(shù)可能具有SIP所沒有的優(yōu)勢,但是它們沒有得到全球范圍內(nèi)的采用。
這意味著,如果您想讓您的應(yīng)用程序與其他工具、設(shè)備和服務(wù)器進行互操作,SIP是最佳選擇。供應(yīng)商對互操作性是很關(guān)注的,會定期開會對其產(chǎn)品進行測試。這些會議稱為SIPit for SIP Interoperability Tests(以前叫做Bakeoff,是Pillsbury提出更改的)。

剖析SIP呼叫
現(xiàn)在,讓我們更深入地了解這門技術(shù)。SIP通;赨DP進行傳輸,但是SIP工具必須同時支持TCP。一條SIP消息由兩部分組成:

信封(envelope),以頭字段的形式描述一個請求或請求的結(jié)果(響應(yīng))。
有效負載(payload),即內(nèi)容(可選),包含有關(guān)請求的數(shù)據(jù)。
信封是文本格式,但是內(nèi)容可以是文本,也可以是二進制格式。

例如,讓我們具體分析一次典型的SIP呼叫。在這個場景中,用戶A想呼叫用戶B。圖2說明了這次呼叫:

下面對所有的消息進行了解釋:

SIP消息的第一行包含消息的類型和所使用的SIP版本(2.0)。在請求中,這一行還包含一個叫做SIP URI的地址。這代表消息的目的地。
這個例子說明了如何使用請求消息INVITE、ACK和BYE,以及200 OK響應(yīng)消息。SIP中還存在許多其他消息。下面給出一些請求:

現(xiàn)在給出一些經(jīng)常使用的響應(yīng)消息:

消息使用類似的頭字段類型。下面給出其中的一些:

還有一些與消息路由選擇功能相關(guān)的頭字段,如:Via、Route和Record-Route。許多頭字段提供像Accept、User-Agent和Supported這樣的功能。其他頭字段則提供像Authorization、Privacy和WWW-Authenticate這樣的安全性功能。還有很多其他的頭字段存在。此外,這些字段中許多都有縮寫語法(比如,F(xiàn)rom = f,To = t,等等)。

SIP的其他功能
使用SIP及其擴展可以實現(xiàn)很多應(yīng)用:

VoIP
視頻會議
針對文本和數(shù)據(jù)的即時消息傳遞,比如MSN Instant Messenger
注冊(我在線!)
到場(我的伙伴在不在?)
Click-to-talk(點擊通話,即點擊這里便可與一個技術(shù)支持代理交談)
應(yīng)答機器/互動式語音應(yīng)答(Interactive Voice Response,IVR)系統(tǒng)(“請輸入您的密碼。請記錄您的姓名。英文請按1,西班牙語請按2…”)
網(wǎng)絡(luò)游戲,比如Quake和一些手機游戲(甚至基于語音和IM)
基于手機的應(yīng)用程序
移動電子商務(wù)
基本上,如果是兩個端點之間進行通信,SIP就能完成。
但是,關(guān)于活動的Web技術(shù)支持代理的想法又如何呢?現(xiàn)在我們能否使用SIP來實現(xiàn)它?我們能否使用Java來實現(xiàn)它?干脆點說,可以。

Java中的SIP
我經(jīng)常使用SIP。我可以負責任地說,Java為SIP提供了絕佳的支持。Java技術(shù)的一個分支把與開發(fā)SIP應(yīng)用程序相關(guān)的許多細節(jié)抽象出來,這對于SIP開發(fā)人員大有幫助。下面這些技術(shù)大部分位于JAIN (Java APIs for Integrated Networks)工作組中。

JAIN SIP API (JSR 32)
SIP Servlet API (JSR 116)
JAIN SIP Lite (JSR 125)
SIP API for J2ME (JSR 180)
JAIN SIMPLE Presence (JSR 164)
JAIN SIMPLE Instant Messaging (JSR 165)
其他相關(guān)技術(shù)有:
JAIN SDP (JSR 141)
Java Media Framework for RTP (J2SE可選包,并非JAIN的)
如果您希望開發(fā)一個客戶端應(yīng)用程序,就需要一個客戶端SIP引擎或者“堆!薄T谶@里可以找到一個優(yōu)秀的開源Java SIP堆棧。它還支持SDP。如果不想自己開發(fā)SIP電話,您可以使用這個。

結(jié)束語
本文簡要介紹了SIP、它的使用場景,以及一些SIP語法。我們還了解了各種與SIP相關(guān)的Java技術(shù)。盡管本文不夠詳盡,我還是希望它能夠激發(fā)您的興趣,并促使您開始使用它。SIP的時代已經(jīng)到來,現(xiàn)在使用它可以實現(xiàn)很多很酷的想法。
在本系列文章的第2部分中,我將說明如何使用SIP Servlet API編寫一個聊天室應(yīng)用程序。

【相關(guān)文章】

  • SIP簡介,第2部分:SIP SERVLET
  • 語音與IP通信:思科統(tǒng)一通信中的SIP協(xié)議支持
  • 借助SOA和SIP邁向下一代網(wǎng)絡(luò)
責任編輯: 雪花(TEL:(010)68476636-8008)

網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術(shù)都需要適時應(yīng)勢,對應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進步的催化劑。

本文章關(guān)鍵詞: SIP JAIN RFC 3261signaling Web