SIP 中的Dialog,session,transaction和call

原文地址:http://xingyunbaijunwei.blog.163.com/blog/static/765380672012659814202/


1. 基本概念


Messages(消息) 消息是在服務器和客戶端之間交換的獨立文本, 有兩種類型的消息,分別是請求(Requests)和響應(Responses).


Transaction(事務) 事務發生於客戶端和服務器端之間,包含從客戶端發出請求給服務器,到服務器響應給客戶端的最終消息(non-1xx message)之間的所有消息. 如果請求是一個"Invite"消息,並且最終的響應是一個non-2xx消息,那麼該事務包含一個"Ack"響應消息.如果服務器的響應是一個2xx消息,那麼,隨後的ACK是一個單獨的事務.


Dialog(對話) 對話是兩個UAs(user agent) 之間持續一段時間的端到端(peer-to-peer)的SIP 關係. 一個對話由一個Call-ID, 一個local tag 和 一個remote tag來標識.對話過去也叫做"call leg".dialog的建立是收到UAS的響應(To tag)時開始建立的。收到180響應時建立dialog叫做早期對話(early dialog),收到2XX的應答開始纔是真正的dialog建立。


Session(會話) 
session 是媒體交換之後才建立的。具體而言就是通過offer/answer方式交換sdp的媒體。 session的建立可以使INVITE-200 也可以是200-ACK。這要看媒體的交換髮生的時間。 具體來說,INVITE 中的消息體用sdp語言來描述自己可處理的媒體類型,200OK中帶回UAS端可處理的媒體類型。這個時候媒體交換就算是完成了。也就是session建立起來了。


Call(呼叫) 一個呼叫是由一個會議中被同一個發起者邀請加入的所有成員組成的。一個 SIP 呼叫用全局唯一呼叫標識(CALL_ID)來識別。因此,如果一個用戶被不同的人邀請參加同一個多點會議,每個邀請都有一個唯一的呼叫。



2.關係詳解


201102251111206914.gif


說明:

呼叫(Call)caller呼叫callee的號碼來建立一系列的對話(Dialogs),這些對話組成了一個呼叫(Call).


會話(Session) 跟SDP內信息相關。在SDP中,多媒體會話指的是一組的媒體發送方和接收方及媒體流從發送方流向接受方。會話是由SDP裏的user name, session id, network type, address type, 和源處地址元素來確定的。只有當媒體協商成功後,會話才能被建立起來。如圖,當caller收到攜帶SDP的200 OK後開始建立會話。 


對話(Dialog) 指的是一對一的持續一段時間的連接關係,由Call-ID, From-tag和To-tag確定。當三個元素齊全的時候,即對話處於確定階段時,對話已經建立起來。 如圖,收到180 RINGING對話處於初始狀態,收到200 OK對話處於確定狀態。


事務(Transaction) 包括髮送的請求和相應的迴應,指的是UA之間的請求和應答關係。而VIA中的branch參數用於確定事務。 事務是由事件(方法)來引起的,一個方法(Method)的建立和到來都將建立新的事務。 如圖,INVITE、RINGING和200 OK是一個事務,BYE和200 OK是另外一個事務。

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