SIP的核心思想是邀請新成員加入一個已經存在的會話或創建一個新的會話,各成員之間可以通過組播(multicast)、單播(unicast)或兩者結合的方式進行交互。
1.SIP的基本功能及特點
SIP支持會話描述,它允許參與者在一組兼容媒體類型上達成一致,同時通過代理和重定向請求到用戶當前位置來支持用戶移動性。SIP不與任何特定的會議控制協議捆綁。SIP提供以下功能:
● 名字翻譯和用戶定位:無論被呼叫方在哪里都確保呼叫達到被叫方。執行任何描述信息到定位信息的映射。
● 特征協商:它允許與呼叫有關的組(這可以是多方呼叫)在支持的特征上達成一致。例如是否支持視頻等多種需要協商的特征。
● 呼叫參與者管理:呼叫中參與者能夠引入其它用戶,加入呼叫或取消到其它用戶的連接。
● 呼叫特征改變:用戶應該能夠改變呼叫過程中的呼叫特征。
SIP既可以用于建立各種會話,也可以用來傳送即時消息和文件。能夠靈活、方便地提供業務,具有多方面優點。
● 協議可擴展性:SIP協議具有強大的擴充機制。SIP協議的擴展性主要體現在其消息的擴展上,SIP消息的三個基本部分:消息類型、消息頭、消息體,都可以被不斷擴充。SIP消息基于文本方式,使得各種擴充工作都變得十分簡潔。
● 開放的業務生成環境:SIP網絡的業務提供主要由Proxy Server完成,生成一個業務就是設計一個業務邏輯從而對一個特定的消息流進行控制,或對消息請求做出相應的響應。
● 支持移動性:SIP的動態注冊機制,使用戶端移動變得十分方便。
2.SIP協議的分層結構
SIP是一個分層結構協議,它的行為根據一組平等獨立的處理階段來描述,每一階段之間只是松耦合。
SIP的最底層是語法和編碼。它的編碼使用增強Backus-Nayr形式語法(BNF)來規定。
第二層是傳輸層,定義了網絡上客戶機與服務器發送請求和接收響應的方式,所有的SIP元素包含傳輸層。
第三層是事務層。事務是SIP的基本元素。事務層具有客戶機組成部分(稱為客戶機事務)和服務器組成部分(稱為服務器事務),一個事務由客戶機事務發送給服務器事務的請求(使用傳輸層),以及服務器事務發送對應該請求的響應組成。
事務層之上的層為事務用戶(TU)。當一個TU希望發送請求時,生成一個客戶機事務實例并向它傳遞請求和IP地址、端口和用來發送請求的傳輸機制。
3.SIP協議的消息機制
SIP采用C/S結構,通過消息機制來建立會話。SIP消息包括請求消息和響應消息,二者具有相同的消息格式。
SIP消息是UAC和UAS之間通信的基本信息單元,采用的是基于UTF-8的文本編碼格式,語法信息以擴展Backus-Naur形式(EBNF)描述,消息格式遵循RFC2822。
SIP消息的通用格式是:
Generic-message = start-line
*message-header
CRLF
[message-body]
start-line: SIP消息起始行。
*message-header:多個頭域。
CRLF:空行,表示消息頭域的結束
message-body:消息體部分。
SIP消息有兩種:客戶機到服務器的請求(Request), 服務器到客戶機的響應(Response) .
4. SIP系統得功能實體及工作流程
SIP系統采用C\S模式,利用消息機制建立并管理會話。按邏輯功能,SIP系統可分為四大功能實體:SIP用戶代理、SIP代理服務器、SIP重定向服務器和SIP注冊服務器,它們共同構成了SIP系統的基本模型。
SIP用戶代理(SIP UA):又稱為SIP終端,是SIP系統中的最終用戶,在RFC3261中將它們定義為一個應用。根據它們在會話中扮演的角色的不同,又可分為用戶代理客戶機(UAC)和用戶代理服務器(UAS)兩種。其中前者用于發起呼叫請求,后者用于當接到SIP請求時聯系用戶,并代表用戶返回響應。
SIP代理服務器(SIP Proxy Server):是一個中間元素,它既是一個客戶機又是一個服務器,能夠代理前面的用戶向下一跳服務器發出呼叫請求。SIP代理服務器除了路由能力外,也可以集成防火墻、radius(AAA)等功能。
SIP重定向服務器(SIP Redirect Server):是一個規劃SIP呼叫路徑的服務器,在獲得了下一跳的地址后,立刻告訴前面的用戶,讓該用戶直接向下一跳地址發出請求而自己則退出對這個呼叫的控制。
SIP注冊服務器(SIP Register Server):用來完成對UAS的登錄,在SIP系統的網元中,所有UAS都要在某個登錄服務器中登錄,以便UAC通過服務器能找到它們。注冊服務并不做請求的身份認證的判定。在SIP中授權和認證可以通過建立在基于請求/應答的模式上的上下文相關的請求來實現,也可以使用更底層的方式來實現。
圖表中用戶Alice使用安裝了支持語音和視頻功能的客戶程序的PC,用戶Bob使用SIP電話。兩者都已經向本域內的SIP代理服務器注冊了他們的狀態和IP地址。用戶A發起呼叫;代理服務器收到A的請求后向注冊服務器查詢B的位置信息;向B發出代理呼叫;B通知代理服務器接受A的邀請并已作好接受數據的準備;代理服務器通知A后SIP會話建立完畢。當Bob要結束會話時,直接向Alice發送結束請求,在Alice確認這個請求以后會話結束。