SIP(Session Initiation Protocol)是由IETF(Internet Engineering Task Force)於1999年制定的一個協定。隨著網際網路的普及,利用網際網路來傳送語音及各種多媒體資料的技術也推陳出新。因此,利用網際網路上傳送語音的技術來代替傳統電信業務也成了一股不可輕視的趨勢。
SIP 是什麼 SIP 為 Session Initiation Protocol 的縮寫。它是一種“應用層”的通訊協定,用於“建立”“變更”“結束”多媒體通訊交談與對話,並不負責實際上的語音傳輸。由於它是以類似 HTTP 的純文字溝通,所以架構比較簡單,是目前較流行的 VoIP 通訊協定。
在SIP環境下的系統元件包括有User Agent、Proxy Server、Redirect Server、Registrar Server等。
圖2.1 SIP環境架構圖
User Agent: 在User Agent方面,它包含了user agent client(UAC)和user agent server(UAS)兩種模式。UAC主要的功能是用來產生一個request並且處理一個response,而UAS的功能則是接受一個request並且產生response。也就是說,User Agent可以伴演著兩個角色,不管呼叫者(Caller)或被呼叫者(Callee)只要是發送出request的時候,即為user agent client(UAC),而接收request的時候,即為user agent server(UAS),如下圖所示。最常見的SIP User Agent為Microsoft Windows Messenger 5.0(支援SIP通訊服務)。
圖2.2 UAC和UAS 如圖2.2所示,Caller發送INVITE時,伴演著user agent client(UAC),如同Stateful Forking Proxy傳送INVITE給Callee A與Callee B。而Callee A與Callee B接收INVITE時,則伴演著user agent server(UAS)。最後,當Callee B想要結束session時,發送BYE時,立即從user agent server(UAS)轉變為user agent client(UAC)。
Proxy Server: Proxy Server負責部份訊息的轉換或是特定的服務,以使User Agent所要求的服務能夠順利完成。也就是說,它是一個可以將SIP request路由(Route)到user agent server(UAS) 或是將SIP responses路由(Route)到user agent clinets(UAC)的元件。一般來說包含兩種基本型態:stateless and stateful。 Stateless Server: stateless server 是簡單的message傳送,優點是簡單、快速,但是它沒有message重新傳送的機制,且不能做較複雜的路由。 Stateful Server: stateful server是一個較複雜的路由,可以建立一個state,並且keep這個 state,直到傳送結束。現今大部份的Proxy Server大都採用Stateful Server。
圖2.3 Session Invitation 如圖2.3所示,使用者Joe將傳送INVITE給Bob,使用Bob的SIP URI,sip:bob@b.com,但是Company A的proxy.a.com無法解讀b.com這個domain,所以就向DNS Server查尋b.com,發現Company B的proxy.b.com,所以傳送INVITE給proxy.b.com,而proxy.b.com再傳送INVITE給Bob,完成Joe的INVITE,最後Bob只接傳送BYE給Joe結束session。
Redirect Server: Redirect Server,顧名思義則是做重新導向的工作,根據Location Server上的資料改變目的地。以Redirect Server來說,它和Proxy Server的最大差別在於Proxy Server接收一個request之後,會代為送出該request,而Redirect Server完全不會送出任何的request。它只是很單純的告知發出request的user agent下一步該往哪裡去。
圖2.4 SIP Redirection 如圖2.4所示,User Agent A送INVITE給Redirect Server,Redirect Server向Location Database發送request,並且把Location Database回傳的location list傳給User Agent A,讓User Agent A直接利用這份location list傳送INVITE給User Agent B。
Registrar Server Registrar Server可以讓User Agent做註冊的動作,達到管理的目的及提供特定的服務,並把註冊資訊存到Location Server,使呼叫端(Caller)可以知道要如何找到被呼叫端(Callee)。
圖2.5 Registrar Overview 如圖2.5所示,User Agent把自己的SIP URI,sip:jan@iptel.org向Registrar註冊,Registrar把jan的1.2.3.4:5060(ip:port)資訊儲存到Location Database裡,如果一切都順利的話,最後Registrar會傳送200 OK的訊息回去。
圖2.6 標準INVITE流程 如圖2.6所示,當一個 UA(User Agent) 起始時,它必須先向 Registrar Server 註冊它的IP與SIP number,這個 SIP number使用 URI(sip:jan@140.115.156.57)的形式方便記憶,如此一來打電話的人只需要知道對方的 URI 號碼即可,而不需要知道對方的 IP,因為 IP 可能會變動,但是 SIP number 則不會變。 當要進行對話時,呼叫端 UA(User Agent) 向 Proxy Server 發出 INVITE 的要求,Proxy Server 向 Registrar Server 查詢得知對方的 IP 後,便將此要求 forward 給對方(Callee),對方(Callee)收到後,便回應一個 OK 給 Proxy Server,而Proxy Server 再將這個 OK forward 給呼叫端(Caller),呼叫端(Caller)再回應一個 ACK 給對方(Callee),此時兩邊的連線就已經建立起來了,media stream 可以直接以 IP 作傳輸。
表2.1 SIP的七個Request Method描述
表2.2 SIP的六個Response Type Classes說明
表2.3 SIP Response Code Example
圖2.7 SIP INVITE 封包格式及解說 SIP 主要有三個優點: 創新 SIP 不同於 H.323,它使用了 text-base 的溝通方式,使開發更容易瞭解,並且可以在同一個連線中傳遞多樣化的資訊。另外它建立於應用層中,使得許多現有的應用軟體可以在不作太大修改的狀況下套用 SIP。
可延展性 SIP 只有在起始通訊連結時需要呼叫 Server 端,在連結建立以後,則是 peer-to-peer 的傳輸,如此一來大大的減低中央主機的負荷,達到降低成本的目的。另外 SIP 也是一個簡單與高效率的通訊協定,它總共只有 5 個呼叫和 8 個回應,在建立連結方面,SIP 更比 H.323 少掉了 50% 的訊息傳遞。
容易開發 SIP 使用標準 URI 做位置,採用 text-base 的訊息傳輸,建立與 application level,以及簡單的錯誤訊息,都顯示出其易於開發的特性,使得許多的廠商與學術單位投入研發,資料取得也相當容易。
SIP(Session Initiation Protocol)是一種在網際網路上新興的多媒體通訊協定,它可用以建立多方參與的多媒體通訊(Multiparty Multimedia Comunications)。SIP在Internet Telephony方面的應用最近已漸漸受到注意,因此SIP未來的發展潛力是不可限量的。主要應用在網際網路會議、網路電話、訊息通知與即時訊息等新興應用上。 值得一提的是SIP協定的出現,SIP的設計理念是真正基於廣域網路的架構而設計,它的協定架構更簡單,它如同HTTP一樣是一種Client-Server的架構,且可利用既有的網路傳輸資源,因此在封包的header上並不需要記錄很多的傳輸記錄。SIP 簡單極容易開發的特性,使得眾多廠商投入研發,包括微軟、CISCO 等,都有軟硬體產品問世,將來除了語音的通話外,更可以結合影像、圖形、資料的傳遞,相信在未來的協定市場中SIP將扮演舉足輕重的地位。 |