許多介紹sip的文章沒有介紹如下幾點細節:html
重傳, Timer A, Bspa
Transaction的有限狀態機, 記錄當前Transactin的進展狀況.net
與INVITE消息相關的行爲(Client側行爲)當SIP實體(包括UA和Proxy)發送INVITE消息 後,不管是可靠傳送仍是不可靠傳送,實體都會啓動 Transaction保護,啓動定時器B(Timer B=64*T1,若是T1=500ms,則此定時器爲32S)。
在不可靠傳送的狀況下,實體同時會啓動T1定時器(500ms),若是T1終結了沒有收到任何響應消息,實體將會重發INVITE消息,之後的間隔分別爲2T1,4T1,8T1,16T1,32T1,在此期間,若是收到響應消息,實體將會終止重發行爲。
當定時器B(Timer B=64T1)終結時,若是實體仍然沒有收到響應消息,實體將終止該呼叫請求。
根據rfc3261的這個文檔解釋,若是你的時延超過32s後那麼任何一個事務都沒法完成而致使你沒法使用sip上的任何業務.視頻摘自: https://zhidao.baidu.com/question/492010821261136492.htmlhtm
當INVITE OK, 兩個UA終端之間開始音視頻流傳輸時, SIP消息INVITE的"message body"裏將攜帶SDP消息, 描述具體通訊內容. 在Sipdroid中SDP消息的實現是SessionDescription類.blog
會話描述的功能:事務
類SessionDescription將根據SDP協議格式化(處理)SIP消息體.ip
會話描述的基本內容:文檔
會話等級描述(描述能夠應用於整個會話和全部媒體流);get
0或者更多的媒體等級描述(描述僅只用於一種媒體流).
會話描述的詳細內容:
會話等級描述以"v="開始, 直到第一個媒體流等級小節;
媒體流描述以"m="開始, 直到下一個媒體流描述, 或者本節描述的結束;
總體來講, 會話等級值對全部媒體流都是默認的除非被新值覆蓋.
[1]. SIP中一個INVITE消息的發起過程: http://blog.csdn.net/argpunk/article/details/7722880