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