《SIP揭祕》讀書筆記

icu發表於2005-09-28

對於VIP,我想這是通訊行業的一個趨勢,趨勢比技術更重要。

在VOIP中,SIP協議越來越火,那麼對這個的研究也就越來越多,每天看一點書,寫一點東西,總結一些知識,對我們的工作還是有幫助的。每天進步一點點,也要成為我的座右銘了。

電話,首先就是PSTN(public, Switched telephone network),最開始發明的電話就是兩個話機拿起來就可以通訊,後來出現,拿起話機以後,對接線員說,XXX要哪裡,那個接線員就接過去,這個時候,就進步了,有了中心交換的概念,繼續發展,交換要變成自動的,數字的,那麼就有兩個方面,一個是語音流,一個是信令流。

早期的電話的電池在話機那裡,信令的方向是前向的,這個問題主要就是控制平面得不到使用者操作的標示或者信令,那麼一個系統就不能正常運轉。必須要信令在網路可以前向也可以後向,控制平面能收到更多更準確的關於呼叫狀態的資訊。 電話經過頻分,時分,模擬,數字的發展到了現在的數字信令系統。信令分為接入信令和幹線信令。

數字終端通常用1號信令,例如BTS和GSM手機之間。中繼信令分為CAS,隨路信令,CCS,公共通道信令, CCS領先CAS.因為信令在初始階段很重要也很多,那麼使一個信令網路從語音網路獨立出來就比較有用。SS7就是流傳廣泛的CCS系統。同時使服務邏輯電話和交換邏輯電路分離,可以使服務建立和使用者操作獨立發展。 SS7提供了電路相關和非電路相關的兩種信令。7號信令是在網路中處理,而不是通過終端,internet的發展方向是點對點,考慮到可靠性,訪問和服務裝置完全分離是SIP的主要優點。

分組交換就不多說了,一切都在向IP轉。IETF,Internet工程任務組,主要提供RFC,有標準RFC,草案RFC等。 關於Internet,除了TCP,UDP,主要是新出來的SCTP,流控制傳輸協議。

對於實時服務,主要有流服務和交付服務兩類。另外,國際電信聯盟建議對語音的延遲最大是一個來回300ms.這就要涉及到多播,

                   密集模式的多播主要有協議:距離向量多播路由協議,DVMRP RFC1075, 獨立多播-密集模式協議,PIM-DM,DVMRP應用最廣。對於稀疏模式,主要是 獨立多播-稀疏模式(PIM-SM) ,rfc-2362和有核樹多播路由協議(CBTS)RFC2189。還有組管理協議,IGMP.

                對於流,主要是實時資料的傳輸,RTP協議。 RTP主要用UDP,其在分組頭中指定時間戳和順序號。RTCP,實時傳輸控制協議。RFC 1889, 其作用就是把時間戳和實時時鐘聯絡起來。因為語音中,延遲到比不到還差,那麼需要比盡力傳輸服務更好的服務應用,有兩個方法滿足要求,一個是綜合服務(Integrated),RFC 1633,一個是區分服務(diffServ) RFC2475。

                 綜合服務:其主要是路由器提供三種服務,保障服務-〉載入控制服務-〉盡力服務。其RSVP-資源預留服務協議。在路由器上安裝必要的狀態資訊,定時重新整理,通過接受者可以啟動一個特定的資源預留。

                  區分服務, 分組被標示所需的優先順序別,路由器從這些標示中獲取資訊,每個標示何處理分組的方法聯絡, 稱為PHB,(Per Hop Behavior).PHB包括加快轉發 RFC 2598和確認轉發 2597。

                     SAP (Session Announcement Protocol )::會話通告協議。RFC2974,主要的作用就是告訴接收者,要多播一些什麼內容。沒有定義描述的格式。

                   SDP:(Session Description Protocol):會話描述協議。 規定了格式,就是對會話的必要資訊如何編碼,不過不包括傳輸機制和協商引數。 SDP語法,採用文字,而不是ASN.1。一個SDP會話描述以會話級資訊 和 媒體級資訊開始,如果出現一個,另外一個接著後面出現。

                   會話級部分以 v=0 開始。 V代表型別,0為值,意思是協議版本為0。(SDP協議)。直到結束或者媒體級部門開始。

                 v 協議版本 o 會話的主人和會話標示,會話的建立者。

                 s 會話的名稱 i 會話的一般資訊 u 還有會話描述的URL,提供了統一資源定位器。

               e 獲得會話資訊的e-mail地址 c 連線資訊,描述能夠接收會話的地址 t 會話啟用的時間

               a 屬性行 m 媒體行 m=video 53000 RTP/AVP 32 m=audio 49170 RTP/AVP 0

                媒體級部分以m開始。直到下一個m或者描述終點。 m行的格式很重要,m=<媒體型別><埠號><傳輸型別><媒體格式>,對於音訊來說,媒體格式0代表單個通道採用PCM 和8KHZ取樣。 媒體屬性行提供一種擴充套件SDP的方法,例如 a=volume:8 a=rtpmap:32 MPV/90000 如果程式不能理解a行時,就跳過,繼續處理。

                下一代SDP (SDPng) 用來描述多媒體等,正在開發中。 RTSP, 實時流協議。

           SIP協議 SIPV1 1996年 會話邀請協議 SCIP: 簡單會議邀請協議融合兩者成為 SIPV2,會話初始化協議。 1999年—2001年 RFC2543描述了SIP的核心,基本操作。 RFC3261 是最新的RFC.

          SIP 註冊: 使用者向伺服器註冊他當前的位置,別人才能找到他。 SIP伺服器的兩種操縱模式:重定向和代理。 代理模式:傳遞會話描述符給被呼叫人。 重定向模式:告訴發起人,被呼叫人的當前URI。

         SIP實體: 使用者代理:(UA User Agent)

         媒體工具:處理音訊(視訊)的語音工具。

          重定向伺服器:不發起任何使用者 定位的活動,只是返回使用者有可能出現的位置列表。

         組地址:根據請求的URI,提供一個符合商務規則定義的一個URL.

          代理伺服器:SIP伺服器代為尋找目標地址。

           派生代理:代理伺服器為使用者嘗試多於一個地址的時候,叫做派生(Fork)邀請。

                       代理伺服器下的組地址:依次尋找組地址中某個可以接通的使用者。

          註冊伺服器:接受註冊的SIP伺服器。 位置伺服器:儲存使用者可能的位置資訊,使用者註冊時告訴伺服器位置。

        SIP特性: 1、 建立一個會話和描述一個會話分離。 2、 端對端協議。 3、 互操作性。 4、 可擴充套件性。 5、 SIP作為一個建立服務的平臺,可以元件重用,基於HTTP,使用URL,和SMTP一樣的路由概念,使用現有的框架提供新的服務。

       SIP協議操作:

            SIP應答: 範圍 應答分類 100-199 報告 180:trying 振鈴 200-299 成功 300-399 重定向 400-499 客戶端錯誤 487 事務取消 500-599 服務端錯誤 600-699 全域性錯誤

           SIP請求 1、邀請NVITE 1、主叫INVITE 2、被叫180振鈴,回覆資訊3、如果接受,回覆200OK 4、主叫回復ACK. 2、確認ACK ACK用來確認對一個INVITE請求的最終應答的接受。注意:200OK 不是ACK. 3、取消CANCEL 取消懸而未決的事物。 1、 主叫INVITE 2、 被叫180振鈴,回覆資訊 3、 主叫掛機,CANCEL 4、 被叫回復200OK 5、 被叫回復487 事務取消。 6、 主叫回復ACK. 4、BYE 結束 5、Register 註冊 1、 register 2、 200 ok 6、可選項Options 用於詢問伺服器效能情況,例如伺服器支援的方法,會話描述協議。 SIP服務型別伺服器型別 保留呼叫狀態代理 知道會話過程中發生的所有SIP事務。所有的SIP信令都是通過該伺服器來轉發。 保留狀態代理 又名事務狀態代理,只要建立起事務,該伺服器就退出,以後的信令不再管。 例如派生代理 不保留狀態代理 接收一個請求,然後發往下一跳,立即刪除所有狀態資訊。 SIP訊息格式 SIP請求格式 1、 請求行 Reauest-line 方法、請求URI、協議版本 2、 幾個標題頭 Serveral Headers 3、 一個空行 Empty lines 4、 一個訊息體 Message body SIP標題頭: 描述 Call-ID: 呼叫標識:區分不同的會話。 Contace: 聯絡,可通過它直接找到使用者的URL. CSeq 命令序列標題頭,有兩個欄位,一個整數字段和一個方法名,數字部分用於同一會話中不同請求進行排序。 ACK中的CSeq擁有與它所確認的Invite請求一樣的CSeq.意味著新的CSeq只能被使用者代理建立。Cancel中的CSeq擁有與它所取消的請求相同的CSeq. SIP應答訊息格式 1、 狀態行 status-line 協議版本、狀態碼、原因短語 2、 幾個標題頭 Serveral Headers 3、 一個空行 Empty lines 4、訊息體 Message body Recod-Route and Route 記錄路由和路由。這兩個標題頭被那些要在整個會話過程中位於信令路徑中的代理使用。 To 總是包含請求的接收者。它和Request-URI區分開來很重要,整個過程中,To標題頭含有同樣的內容,不能被代理伺服器改變,用於遠端客戶代理。 Request-URI含有信令路徑中的下一跳的地址,在路徑中被代理伺服器改變。 Via 儲存所有處理請求的代理地址。包含了請求所選用的路徑。用於檢測路由迴圈。也可用於將應答路由給產生請求的客戶端。SIP應答將和請求一樣穿過相同的代理集。 SIP訊息體 SIP訊息攜帶的通常是會話描述符,但是也可以攜帶多個訊息體,包含其它的不透明內容,例如圖片等。 核心SIP以MIME(RFC2045) 格式接收多部分訊息體。 SIP不保證臨時應答可靠傳輸,但是最終應答採用可靠的傳輸協議。 PRACK:(provisional Response ACK) 臨時應答ACK。這是一個擴充套件了的新的方法。主要解決的問題就是伺服器不升級,終端互相瞭解資訊就可以開展新的服務。 即時訊息:定義個MESSAGE的新方法。用於在它的訊息體中攜帶傳送者寫的訊息。 通過擴充套件DHCP,實現自動分配地址和SIP地址。或者通過SLP(ServiceLocation Protocal RFC2608)協議,找到一個有著一定特性的SIP伺服器。 preconditions Met (COMET):在draft-ietf-sip-manyfolks-resource 定義。COMET用來傳送表明所有前提條件都被滿足了並且會話建立可以進行了。 呼叫者的喜好,也就是描述不同的用途,設定自己的規則,通過定義3個新的標題頭和新的Contact標題: Accept-Contact; Reject-Contact;Request-Diposition; Contact標題頭的新引數用於描述使用者的終端。 事件的非同步通知:draft-ietf-sip-events 定義非同步事件通告的新方法,SubScribe 和Notify來實現。 SubScribe用來訂閱被叫的資訊,Notify是被叫來通知訂閱者相關的資訊。 第三方呼叫控制:使用者想要其它的人蔘與通訊,自己不參與,只是起到控制的作用。使用者給A傳送資訊,受到A的回覆,然後把A的回覆給B,B就把資訊傳遞給A,然後A和B開始通訊。 會話傳遞:draft-ietf-sip-cc-trasnsfer定義了新的方法:REFER。就是A-B開始通話,B把這次會話轉到C,讓A-C通訊。 傳送命令:定義一個新的方法DO。來攜帶命令,還有一個描述命令的格式DMP(Device Messageing Protocol)裝置訊息協議。 SIP安全:SIP安全和媒體安全不同。SIP安全主要是指:驗證,訊息完整性和機密性。 有兩個方案: 基本的和摘要的。 基本的:質疑攜帶在www-authenticate SIP標題頭中。 憑證攜帶在 Authorization 標題頭中。 摘要的:伺服器通過傳送一個現時值來質疑客戶端,客戶端計算出一個現時值,Request-URI,SIP方法,使用者,ID和口令校驗和,然後傳送給伺服器。 S/MIME(Secure/MultipurposeInternet Mail Extensions 安全/多用途Internet郵件擴充套件)驗證訊息完整性: 採用RSA進行簽名。 S/MIME 機密性, 提供兩種格式,僅加密盒僅簽名的格式,合起來提供驗證。 逐跳加密則是採用IPSec或者TLSl來完成。

相關文章