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

配合rfc3261對事務(wù)的定義,我們通過(guò)以下圖例詳細說(shuō)明一下事務(wù)的定義。通過(guò)rfc的定義,我們看出,以下呼叫流程包括了三個(gè)事務(wù)處理的流程。這里大家應該注意到是,如果請求是INVITE情況下的問(wèn)題。第一個(gè)是INNITE到200 OK的流程,它是一個(gè)非200 OK的情況。因此,第二個(gè)是ACK,它是一個(gè)獨立分離的事務(wù)處理。第三個(gè)事務(wù)是一個(gè)非INVITE請求,客戶(hù)端發(fā)送到是BYE,然后回復200 OK。因此,從簡(jiǎn)單的流程中可以看出,這個(gè)dialog 包括了三個(gè)事務(wù)處理。

當然,每個(gè)事務(wù)都有各自的ID和其他屬性來(lái)區別于其他的事務(wù)。每個(gè)事務(wù)的ID包括以下幾個(gè)方面的屬性:
- 通過(guò)Via-header 添加到branch ID
- Cseg header
- rfc 3261定義的branch ID 起始前綴“z9hG4bK”
以下是一個(gè)INVITE中的定義示例:
參考資料:
https://www.rfc-editor.org/rfc/pdfrfc/rfc3262.txt.pdf
http://www.aboutsip.com/aboutsip-intro_transactions_and_dialogs.pdf