事務(Transaction)的理解

Transaction有交易的意思,Sip是個事務型的協議,因爲它需要各部件間互通消息來實現。

事務所處的位置如圖:

SIP事務的理解

              圖一 事務環境圖

1)事務處理主要用於處理消息的交互,它的實現使用了狀態機。向上它向事務使用者(TU)提交事務的觸發事件(計時器超時和傳輸層消息),向下把所要發送的Sip消息包傳送給傳輸層代爲轉發。

2)而在事務中一定有客戶端和服務器端,兩者沒有必然的界限。只要是發起請求的,在該事務中充當的當然是客戶端,接受請求的必然是服務器端。所以對於代理服務器來說,相對下面的請求來說它是服務器端,對於上面來說卻是代發請求的客戶端。

 

事務分類

事務根據類型還分Invite和Non-Invite型,即邀請和非邀請類型。Non-Invite類型事務主要處理的是除Invite和ACK類型外的所有Sip信息。而非Invite裏的ACK信息要處理的話就不屬於事務處理的範圍了,一般由程序自己把信息發送給傳輸層直接發送。Invite需要三次握手,所以需要的時間比較長;而Non-Ivite類型只需兩次握手,要求迴應時間短。

 

所以由RFC3261規定,Sip中主要有四種事務,對應有四種狀態機:

Invite Client Transaction(ICT):    

Non-Invite Client Transaction(NICT):  

Invite Server Transaction(IST):   

Non-Invite Server Transaction(NIST): 

 

其中有個特別的地方在於:對於2**迴應的ACK不屬於ICT的事務處理範圍

原因在於收到200(OK)的ACK上。

對於接收到這些ACK的用戶來說,如果非最後的客戶端,即UA接收到該消息的話將關掉該事務再轉發該消息,不再理會之後的事情。而收到200的UAC可能把ACK直接發往真正的UAS,此時不再通過代理服務器或重定向服務器。而前面提到的事務的概念指的是兩者之間的交互,可此時UAC要發往信息不再是之前存在的事務(交易者已變)。所以此時發送ACK已不是事務的範疇了,同樣ACK的重發和UAS的200重發都不再是事務的範疇,因爲發送200的UAS和接收到200的UAC的事務狀態已置爲結束。

 

    ****本文只是瞭解事務基本,對於細節還得看RFC纔行,特別是四種事務的狀態機圖。


From : http://blog.sina.com.cn/s/blog_4b839a1b010007ts.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章