<p id="l1pda"></p>
<track id="l1pda"></track>
      1. 您當前的位置是:  首頁 > 新聞 > 國內 >
         首頁 > 新聞 > 國內 >

        SIP協議與應用場景技術分享筆記-卷1-rfc3261-4

        2019-01-02 09:19:15   作者:james.zhu   來源:CTI論壇   評論:0  點擊:


          SIP 定義
          以下定義對SIP協議非常重要。
          Address-of-Record: 一個 address-of-record (AOR) 是一個SIP或者SIPS URI地址,它指到了一個域,同時它支持定位服務。定位服務可以映射這個URL到其他的URL,其他的URL可能綁定了用戶的有效性和可用性。典型的示例是定位服務通過注冊來實現。AOR 經常被認為是一個用戶的“公開地址”。
          Back-to-Back User Agent:背靠背用戶代理(B2BUA)是一個邏輯實體,它作為一個UAS來接收一個請求,處理這個請求。為了決定如何應答這個請求,它的工作方式又類似于一個user agent client (UAC)來生成請求。不像代理服務器,它會保持dialog狀態,并且必須介入到整個它所創建的dialogs中發送的所有請求。因為,它自己本身就是一個UAC和UAS的結合體,本身并不需要特別明確的定義來定義它的行為。
          Call:呼叫是一個非正式的名稱,它指的是介于終端之間的通信,通常情況下創建呼叫的目的是為了多媒體的溝通。
          Call Leg:dialog另外的名稱[31];已不在此規定中使用。
          Call Stateful: 一個代理是有狀態呼叫,它具有這樣的特征。如果它保持dialog整個狀態,這個狀態一直持續從初始化INVITE開始到BYE請求結束。一個call stateful 代理總是一個事務狀態,但是事務狀態不一定是一個有狀態呼叫代理。
          Client:終端用戶是任何一個網絡的要素,它發送SIP請求和接收SIP響應。用戶端可能,或不可能直接和真人用戶進行互動。用戶代理終端和代理是終端。
          Conference:一個對媒體會話,它包含了多個參與方。
          Core:Core 指定了某些功能,這些功能專門針對某些SIP實體的參與方類型。例如,具體指定了是一個狀態或者非狀態代理,用戶代理或者注冊。除了某些非狀態代理以外,所有的core功能都是事務用戶。
          Dialog:dialog是一種端對端的SIP關系,它介于兩個UA之間,這兩個UA在一定時間內維持著某種綁定關系。一個dialog的創建是通過SIP消息,例如對INVITE請求的2xx 響應。一個Dialog是通過一個call identifier, local tag,和一個remote tag來定義的。Dialog以前稱之為一個call leg,call leg在RFC2543定義。
          Downstream:在事務內的一個消息前轉的,它涉及到了一個請求流程,這個請求流程是從用戶代理客戶端到用戶代理服務器端的處理方向。
          Final Response: 是一個響應消息,它結束SIP事務,相反的,一個provisional response(臨時響應)則不會結束事務。所有All 2xx,3xx,4xx,5xx 和 6xx responses 都是最終響應消息。
          Header: 頭是SIP消息的組件,它傳遞消息的信息。它由一系列的頭域值構成。
          Header Field:頭是SIP消息的組件。一個頭域可以表現為一個或多個頭域值。每一行頭域值包含頭域值名稱和一個或者多個頭域值。如果有多個頭域值的話,可以通過逗號分開。一些頭域值僅有單行頭域,它總是以單行頭域出現。
          Header Field Value: 一個頭域是一個單個數值;它由零個或多個頭域值構成。
          Home Domain:主機域對SIP用戶提供服務。典型的解釋是,這是一個域名,它出現在注冊AOR的URL中。
          Informational Response:類似于一個臨時響應。
          Initiator, Calling Party, Caller: 一方發起一個會話(和dialog),它帶著一個INVITE請求。一個呼叫方始終保持一個角色,這個角色從它開始發送這個初始的INVITE開始計算,這個INVITE創建了一個dialog,一直到結束這個dialog。
          Invitation:一個INVITE請求。
          Invitee, Invited User, Called Party, Callee: 一方接收一個INVITE請求,這個請求的目的是為了創建一個新的會話。被呼叫方始終保持這個角色,這個角色從它開始接收這個INVITE開始計算,一直到dialog結束,這個dialog是由那個INVITE創建。
          Location Service:定位服務用來支持一個 SIP 重定位或代理服務器來獲得關于被呼叫方可能存在的地址信息。它包含一個綁定的address-of-record列表數值,這些從從零個到多個contact 地址。這個綁定關系可以通過多種方式來創建或者刪除;此協議細節中定義了一個REGISTER method來更新綁定關系。
          Loop:一個已到達代理的請求,經過前轉以后,后來又返回到同樣的代理。當這個請求第二次到達代理時,這個請求的Request-URI確認是第一次的請求,并且其他影響代理操作的頭域值不會改變,因此代理會在這個請求中做出和第一次同樣的處理決定;丨h的請求是一種錯誤,流程會檢測回環請求,通過協議本身來處理這種回環請求。
          Loose Routing:如果代理遵守本規范來處理路由頭域,代理會被告知是一個松散路由。這些流程從一系列的代理中分開了目的地請求(出現在Request-URL中),代理所遵守的機制被稱之為松散路由。
          Message: 消息是在SIP要素之間發送的數據,它是協議的一部分。SIP消息可以是請求或者響應。
          Method: method是一個基本功能,一個請求在服務器端被激活。Method在請求自己的消息中傳輸。常見的methods是INVITE和BYE。
          Outbound Proxy: 它是一個代理,負責接收從客戶端發出的請求,即使它可能不是一個通過Request-URI解析度服務器。 通常情況下,一個UA 可以通過outbound  proxy手動配置,或通過自動配置協議進行學習。
          Parallel Search:在并行查詢中,一個代理會對可能存在的用戶位置發送幾個請求,這些可能存在的用戶位置用來接收請求。而且,并行查詢也不是發送一個請求,然后等待收到這個請求的最后響應,然后發送接下來的請求。它不會等到前面的請求響應收到以后再發送下一個請求。
          Provisional Response: 它是臨時響應,臨時響應表示服務器端的處理進程,但是臨時響應不會結束SIP事務。1xx是臨時響應,其他的響應是最終響應。
          Proxy, Proxy Server:代理是一個中間實體,它的工作方式既是一個服務器端,又是一個客戶端,作為客戶端的作用是支持其他客戶端發起請求。代理服務器基本功能是扮演路由的角色,它的工作就是確保請求被發送到比較接近目標用戶的其他實體。代理也可以執行一些強制的策略(例如,確保用戶被允許呼叫)。代理可以解析請求消息的部分消息內容,如果必要的話,在一個請求消息被前轉之前,代理可以重寫請求消息的部分參數內容。
          Recursion:遞歸處理。當用戶在響應中的Contact 頭域中產生一個或多個URLS的新請求時,用戶會在3xx響應中產生遞歸。
        • Redirect Server:重定向服務器是一個用戶代理服務器,它會對接收的請求產生3xx 響應,重新定向用戶,讓用戶聯系其他可選的URL列表中的URI地址。
        • Registrar: 注冊服務是一個注冊服務器,它用來接受REGISTER請求,負責把注冊服務器接受的信息保存到定位服務所支持的domain,這個domain是注冊服務器負責。
        • Regular Transaction:正常事務是任何帶method的事務,帶INVITE, ACK,或者CANCEL的method的除外。
        • Request::請求是一個由用戶端發送到服務器的SIP消息,請求的目的是觸發一個特別的操作。
        • Response:響應是一個由服務器端發送到用戶端的SIP消息,其目的是說明請求發送后服務器端回復的狀態。
        • Ringback:回鈴是一種信令音(回鈴音),它是由呼叫方應用程序生成,用來表示被呼叫方已經被提示(被呼叫方正在振鈴狀態)。
        • Route Set:路由集是一組有序SIP或者SIPS URI的集和,它用來表示當發送一個特別的請求時所經過的代理列表。路由集通過路由頭,例如Record-Route或者經過配置后獲得。
        • Server:服務器是網絡中的一個要素,它用來接收請求,然后對其進行服務支持,并且對其請求返回響應消息。服務器的實例包括代理,用戶終端服務器,重定位服務器和注冊服務器。
        • Sequential Search:在順序查詢中,代理服務器按照順序嘗試查詢每個contact地址,并且,只有當上一個查詢返回最終響應后才進行下一個查詢的新的處理。  2xx或者6xx 的最終響應總是結束順序查詢處理。
        • Session: 在SDP規范中:"一個媒體會話是一系列媒體發送方和媒體接收方,以及從發送方到接收方之間的媒體數據流。一個媒體會議就是一個媒體會話的舉例。" (RFC 2327[1]) (對SDP定義的會話來說,一個會話由一個或多個RTP 會話構成)。就像定義中的那樣,對于同一會話來說,一個被呼叫方可以被不同的呼叫方多次邀請。如果使用了SDP,會話通過SDP 用戶名稱,會話ID,網絡類型,地址類型和在地址單元中的原始值域構成。
        • SIP Transaction: 一個SIP 事務會發生在客戶端和服務器端之間,它由第一個由客戶端發出的請求開始到服務器端最終響應的所有消息構成(非1xx消息)。如果請求是INVITE,并且最終響應是一個非-2xx消息的話,這個事務也會對這個響應包括一個ACK。這個對于200 OK(INVITE的響應)的ACK來說,它是一個獨立的事務處理。
          關于SIP事務的定義,除了rfc3261中定義以外,筆者為了幫助讀者能夠比較完整地了解事務的真正概念,除了在老師文檔中有過介紹以外,特別添加了圖例來進一步說明什么是SIP的事務,另外,讀者一定要注意官方定義中的加粗部分內容的解釋。
        • SIP Transaction:A SIP transaction occurs between a client and a server and comprises all messages from the first request sent from the client to the server up to a final (non-1xx) response sent from the server
          to the client. If the request is INVITE and the final response is a non-2xx, the transaction also includes an ACK to the response. The ACK for a 2xx response to an INVITE request is a separate transaction
          另外,事務有分為客戶端事務和服務器端事務處理方式。在不同的環境中扮演不同的角色。
          配合rfc3261對事務的定義,我們通過以下圖例詳細說明一下事務的定義。通過rfc的定義,我們看出,以下呼叫流程包括了三個事務處理的流程。這里大家應該注意到是,如果請求是INVITE情況下的問題。第一個是INNITE到200 OK的流程,它是一個非200 OK的情況。因此,第二個是ACK,它是一個獨立分離的事務處理。第三個事務是一個非INVITE請求,客戶端發送到是BYE,然后回復200 OK。因此,從簡單的流程中可以看出,這個dialog 包括了三個事務處理。
          當然,每個事務都有各自的ID和其他屬性來區別于其他的事務。每個事務的ID包括以下幾個方面的屬性:
        • 通過Via-header 添加到branch ID
        • Cseg header
        • rfc 3261定義的branch ID 起始前綴“z9hG4bK”
          以下是一個INVITE中的定義示例:
          參考資料:
          https://www.rfc-editor.org/rfc/pdfrfc/rfc3262.txt.pdf
          http://www.aboutsip.com/aboutsip-intro_transactions_and_dialogs.pdf

         
          關注微信公眾號:asterisk-cn,獲得有價值的Asterisk行業分享
          Asterisk freepbx 中文官方論壇:http://bbs.freepbx.cn/forum.php
          Asterisk freepbx技術文檔: www.freepbx.org.cn
          融合通信商業解決方案,協同解決方案首選產品:www.hiastar.com
          Asterisk/FreePBX中國合作伙伴,官方qq技術分享群(3000千人):589995817

        【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

        專題

        CTI論壇會員企業

        欧美性爱欧美
        <p id="l1pda"></p>
        <track id="l1pda"></track>