事務的概念非常難以理解,網上有很多這方面的資料,讀者可以查閱。
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.
這里的示例僅對事務加以簡單說明(RINGING 是 1xx 響應,OK是 2xx 響應,所以是兩個事務),非rfc3261官方資料。
在事務層上面的是事務用戶(TU)。每個SIP實體,除了無狀態(tài)代理都是一個事務用戶。當一個TU希望發(fā)送一個請求時,它會創(chuàng)建一個用戶事務實例,然后把這個實例傳遞給這個請求,并且攜帶目的地IP地址,端口和傳輸請求。一個創(chuàng)建了用戶事務的TU也可以取消這個用戶事務。當用戶取消了一個事務時,它會請求服務器停止進一步的處理,變換到退出的狀態(tài),這個狀態(tài)是這個事務初始化前的退出狀態(tài),并且生成對這個事務生成錯誤響應消息。這個處理過程是通過一個CANCEL 請求來處理,它構成了屬于自己的事務,但是僅針對這個被取消的事務(Section 9)。
事務的處理包括了多種不同的狀態(tài),主要包括以下六種(非官方資料)狀態(tài):
- SIP 要素也就是用戶代理用戶測,服務器,無狀態(tài)代理,有狀態(tài)代理和注冊。SIP要素包含了一個核心模塊,這個核心模塊來對各自其要素進行區(qū)別處理。在核心要素模塊中,除了無狀態(tài)代理以外,其他的要素都是事務用戶。這里,UAC和UAS的核心處理流程越來于method。關于methods支持了多種規(guī)則和定義(Section 8)。對于UAS來說,這些規(guī)則控制請求的結構;對于UAS來說,這些規(guī)則控制請求的流程和生成響應消息。因為,注冊在SIP協(xié)議中扮演著一個非常重要的角色,一個處理注冊的UAS會設定一個特別的名稱注冊。在Section 10中描述了UAC和UAS核心的對REGISTER method的處理方式。Section 11描述了UAC和UAS核心對OPTIONS method的處理方式,它決定UA的支持能力。
- 某些其他的請求是在dialog中發(fā)送。一個dialog是一個介于用戶代理之間的peer-to-peer SIP關系,這種關系存在于一定時間內。這個dialog支持介于用戶代理之間的消息的順序傳遞和正確的請求路由。在這個細節(jié)規(guī)定中,INVITE method 是唯一的方法來創(chuàng)建dialog。當一個UAC在dialog中發(fā)送一個請求時,它會遵守一般的UAC規(guī)則,這些規(guī)則在Section 8會加以討論,它也會遵守 mid-dialog 請求時的規(guī)則。Section 12討論在dialog和表述它們的結構和維護流程。
- 在SIP協(xié)議中,最重要的method是INVITE method,它用來創(chuàng)建參與方之間的會話。一個會話是參與方的匯總和它們之間通信的的媒體流交互。Section 13討論了如何實現會話發(fā)起,這些導致了一個或者多個SIP dialog生成。Section 14討論了如何在一個dialog中通過INVITE用法來修改會話屬性。最后,在section 15中討論如何結束一個會話。
- 章節(jié)8,10,11,12,13,14,和15的流程完整討論了UAcore(Section 9描述了取消流程,這個取消流程支持都支持UA core 和 proxy core)。Section 16討論代理的要素,這些要素支持了介于兩個用戶代理之間的信息路由。
參考資料:
https://www.rfc-editor.org/rfc/pdfrfc/rfc3262.txt.pdf
關注微信公眾號:asterisk-cn,獲得有價值的Asterisk行業(yè)分享
Asterisk freepbx 中文官方論壇:http://bbs.freepbx.cn/forum.php
Asterisk freepbx技術文檔: www.freepbx.org.cn
融合通信商業(yè)解決方案,協(xié)同解決方案首選產品:www.hiastar.com
Asterisk/FreePBX中國合作伙伴,官方qq技術分享群(3000千人):589995817