日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sip协议的超时机制

發(fā)布時間:2023/12/31 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sip协议的超时机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

0、前言:

在講解sip協(xié)議的超時機制之前,先簡單地介紹一下sip協(xié)議中的message、dialog、session 和 transaction

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

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

? ? ? ?當(dāng)UA發(fā)送初始INVITE請求后,只有接收到失敗響應(yīng)才有可能建立DIALOG。通過Callid、From域中的tag參數(shù)和To域中的tag參數(shù)來唯一標(biāo)識DIALOG。?From域中的參數(shù)由主叫添加,To域中的參數(shù)由被叫添加。

(3)Transaction(事務(wù))??
? ? ? ?事務(wù)發(fā)生于客戶端和服務(wù)器端之間,包含從客戶端發(fā)出請求給服務(wù)器,到服務(wù)器響應(yīng)給客戶端的最終消息(non-1xx message)之間的所有消息.。如果請求是一個"Invite"消息,并且最終的響應(yīng)是一個non-2xx消息,那么該事務(wù)包含一個"Ack"響應(yīng)消息。如果服務(wù)器的響應(yīng)是一個2xx消息,那么,隨后的ACK是一個單獨的事務(wù)。

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

下面的示意圖清晰的顯示了Transaction和Dialog之間的關(guān)系:

?

1、sip協(xié)議超時機制

? ? ? ?SIP協(xié)議中無論是Client端還是Server端,在定時器和消息重發(fā)的處理上,可分為與INVITE相關(guān)的Transaction?和與INVITE不相關(guān)的Transaction。RFC3261中定義了兩個基準(zhǔn)定時器 T1=500ms 和 T2=4s。

無論是可靠傳送還是不可靠傳送,當(dāng)實體發(fā)送消息(包括請求或響應(yīng)消息)后,都會啟動一個64?倍的T1定時器(計時器B、H、F),當(dāng)此定時器終結(jié)時,如果沒有收到相應(yīng)的響應(yīng)或確認消息,實體將會清掉相關(guān)的Transaction。

(1)INVITE客戶端事務(wù)

當(dāng)SIP實體(包括UA和Proxy)發(fā)送INVITE消息后,無論是可靠傳送還是不可靠傳送,實體都會啟動定時器B(Timer B=64*T1,如果T1=500ms,則此定時器為32S)。

在不可靠傳送的情況下,實體同時會啟動定時器A(初始值為T1),如果T1時間間隔后沒有收到任何響應(yīng)消息,實體將會重發(fā)INVITE消息,之后的間隔分別為2T1、4T1、8T1、16T1、32T1,在此期間,如果收到響應(yīng)消息,實體將會終止重發(fā)行為。

當(dāng)定時器B(Timer B=64T1)終結(jié)時,如果實體仍然沒有收到響應(yīng)消息,實體將終止該呼叫請求,客戶端不產(chǎn)生ACK。

當(dāng)客戶端收到300~699的應(yīng)答時,客戶端需要產(chǎn)生ACK請求。(ACK請求必須和原始請求發(fā)送到相同的地址、端口和transport),并啟動定時器D(缺省值是在非可靠通訊上至少是32秒,在可靠通訊上是0秒)

(2)INVITE服務(wù)端事務(wù)

當(dāng)被叫用戶應(yīng)答時,被叫側(cè)UA(UAS)將會向?qū)Χ税l(fā)送200消息,表示對INVITE消息的確認,主叫側(cè)UA(UAC收到200消息)后,將會發(fā)送ACK消息,表示收到200消息。因此,對Server側(cè)來講,當(dāng)發(fā)送200消息后,為了等待ACK消息,將會啟動定時器H(Timer H=64T1)。

在不可靠傳送的情況下,Server還會啟動T1定時器(計時器G),如果T1終結(jié),沒有收到ACK消息,UAS將會重發(fā)200?消息。以后的間隔分別為2T1,4T1,8T1,當(dāng)時間達到T2(T2=8T1)后,后續(xù)重發(fā)的間隔將一直為T2。

當(dāng)定時器H(Timer H=64T1)終了時,如果實體仍然沒有收到ACK確認消息,實體將會終止該呼叫請求。

其它的最終響應(yīng)消息,消息的重傳和定時器保護也與200消息的相同。

(3)非INVITE客戶端事務(wù)

當(dāng)實體發(fā)送INFO或BYE等消息后,實體將會啟動定時器F(Timer F=64T1)。如果定時器F終了時,沒有收到最終響應(yīng)消息,實體將會清掉Transaction。

在不可靠傳送的情況下,實體同時啟動定時器E(初始值T1)。如果在此期間沒有收到1XX臨時響應(yīng)消息,實體將會以MIN(2(4,8..)*T1,T2)的間隔重發(fā),直到間隔達到T2(4秒)。如果沒有收到任何響應(yīng)消息,實體重發(fā)的行為將與INVITE消息相關(guān)的最終響應(yīng)行為(Server)相同。

ACK只有在響應(yīng)非200 OK時才和INVITE一樣,否則與INVITE不為同一事務(wù),只屬于同一個對話。

(4)非INVITE服務(wù)端事務(wù)

當(dāng)收到一個不是INVITE或者ACK請求的時候,服務(wù)端的狀態(tài)初始化為"Trying"狀態(tài),在此狀態(tài)下,任何重發(fā)的請求都會被忽略。當(dāng)服務(wù)端發(fā)送一個1XX的臨時應(yīng)答后,進入"Proceeding"狀態(tài);在"Proceeding"狀態(tài)下收到一個重發(fā)的請求,服務(wù)端將發(fā)送一個最近的1XX臨時應(yīng)答;如果在"Proceeding"狀態(tài)下,服務(wù)端發(fā)送一個終結(jié)應(yīng)答(應(yīng)答碼是200—699),那么服務(wù)端就進入“Completed”狀態(tài)。

當(dāng)服務(wù)端進入"Completed"狀態(tài),對于不可靠傳輸來說,必須設(shè)定一個定時器J=64*T1秒;對于可靠傳輸來說,設(shè)定為0秒(即:不設(shè)定定時器)。在“Completed”狀態(tài)下,收到一個重發(fā)的請求時,服務(wù)端需要將上一次的終結(jié)應(yīng)答重新發(fā)送。

服務(wù)端事務(wù)保持“Completed”狀態(tài)知道定時器J觸發(fā),當(dāng)定時器J觸發(fā)后,服務(wù)端事務(wù)必須進入“Terminated”狀態(tài)。

?

2、SIP協(xié)議中的各類定時器解析

定時器??缺省值含義
T1500 ms一個估計的循環(huán)時間(RTT)
T24 秒非 INVITE 請求和 INVITE 響應(yīng)的最長重傳時間間隔
T45 秒網(wǎng)絡(luò)在客戶端和服務(wù)端事務(wù)中傳輸消息可能的時間
定時器 A最初為 T1INVITE 請求重傳時間間隔(僅適用于不可靠傳輸,如:UDP)
定時器 B64*T1INVITE 事務(wù)超時定時器

?

定時器?D

大于等于 32 秒(對于 UDP)

?

響應(yīng)重傳的等待時間

0 秒(對于 TCP 和 SCTP)
定時器 E最初為 T1非 INVITE 請求重傳時間間隔(僅適用于不可靠傳輸,如:UDP)
定時器 F64*T1非 INVITE 事務(wù)超時定時器
定時器 G最初為 T1INVITE 響應(yīng)重傳時間間隔
定時器 H64*T1ACK 接收的等待時間

?

定時器 I

T4(對于 UDP)

?

ACK 重傳的等待時間

0 秒(對于 TCP 和 SCTP)

?

定時器 J

64*T1(對于 UDP)

?

重傳非 INVITE 請求的等待時間

0 秒(對于 TCP 和 SCTP)

?

定時器 K

T4(對于 UDP)

?

響應(yīng)重傳的等待時間

0 秒(對于 TCP 和 SCTP)

參考:

https://www.jianshu.com/p/84d7289a4d3b
https://blog.csdn.net/daitu3201/article/details/80831429

總結(jié)

以上是生活随笔為你收集整理的sip协议的超时机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。