2008年3月9日 星期日

SIP Intro --- 第一部

第一部 SIP的介紹

我想在SIP第一部不要講太過於細節的東西,像是說SIP裡面的各個欄位的定義。這個在RFC3261裡占了一半一上的頁數,真的很繁瑣。因此,我想先建立一個概念之後,再往下探索,才比較容易了解,所以在第一部內容我會以簡潔的方式來表達。


SIP為Session Initiation Protocol的簡稱,主要定義在RFC3261裡面。首先,概略說明一下SIP是做什麼的。他是一個網路通訊協定,屬於應用層上控制的協定,主要用來maintain session,從session的creation、modification、maintenance到結束一個session,都是藉由SIP這個主架構才控制,另外再配合其他protocols來組成更完整的服務。(如SDP、RTP、RTSP等)

而一個session又是什麼?

簡單的來說,他可以是兩個end users間的voice call session,也可以是兩個或兩個以上的end users的video conference call session。而SIP就是在處理兩個end users怎麼建立通話或是視訊、怎麼建立3-way conference、怎麼轉接通話、結束通話等等的operations。是的,我們提到了phone call,SIP就是應用在網路電話上面,網路上有很多Soft phone就是用這種SIP協定來達成網路電話的功能。

實際上,我們也可以自己架設SIP server,然後透過這個SIP server來跟其他人通訊(這個部分以後有機會在介紹)。

到目前為止,大概能對於SIP的用途有個概念後,再繼續下去...

既然SIP在負責維護我們的通訊,那SIP到底做了些什麼呢?以下簡單扼要的說明他的operations。(以RFC3665中的例子做說明)

當Alice想要跟Bob做通訊,Alice會發一個邀請函(INVITE)給Bob,詢問Bob是否接受。此時Bob就會決擇是否要接受,在抉擇的同時,會發一個訊息(RINGING)給Alice,告訴Alice,他在考慮中。假設Bob決定接受他的通訊邀請,就會回復一個接受的訊息(200 OK)給Alice。此時,Alice就會回復Bob說"好,我收到你的回覆"這樣的訊息(ACK)給Bob。

此為止,一個call setup就完成了,也就是說SIP已經做好了session creation的流程。在接下去就是media session,也就是audio(或audio and video)的通訊,同樣的在media session中,SIP也是負責做maintain的工作。像是通話中想把對方電話hold住或是轉接對方電話到第三方等等。

最後當有一方要掛斷時,SIP也要做最後的maintain,讓雙方都能正常結束sesion,最後的步驟稱為Call teardown,因為是在網路上的通訊,假如沒有做call teardown,就有可能有一方不知道對方已經掛斷的情況或是其他例外情形。

以上就是ㄧ通call的流程,也是SIP要做的事情,很簡單,不過再來就要從這個基礎下往下探討..."為什麼RFC3261可以寫到2百多頁"...呵呵...Just kidding! 再來要深入一點,從phone call的case才著手了解...


以下是往後預計的內容...

Phone call case (考慮順便帶入Message structure的觀念)
Registration
Refer (or Specific event notification)

...

大概是這樣... (第一次做整理...很多不足的地方請見諒...)

1 則留言:

匿名 提到...

您好
剛剛看完了您對SIP的解析
讓我學到很多
非常感謝您!!
整理的非常好!!!!!!

搜尋此網誌