因?yàn)镾IP網(wǎng)絡(luò)技術(shù)存在了很多年,一些終端設(shè)備可能僅支持RFC2543,另外一些比較新的終端設(shè)備可能同時(shí)支持了RFC2543和RFC3264,為了完成成功的呼叫等待,雙方終端通常需要兩種協(xié)議都能支持才能實(shí)現(xiàn)。下面的示例是一個(gè)關(guān)于SIP 呼叫等待中SDP的交互流程(這里假設(shè)已正常通話,無NAT問題),通過SDP的交互雙方實(shí)現(xiàn)呼叫等待和重啟呼叫的流程。
在以上的處理流程中,事實(shí)上,呼叫方執(zhí)行呼叫等待時(shí)在SDP中修改了c行的地址, 地址為0.0.0.0,這個(gè)流程是根據(jù)RFC2543來實(shí)現(xiàn)的。通過修改c行地址為0.0.0.0 表示不再接收媒體流。但是,這個(gè)處理方式在RFC3264中是一種不再推薦的處理方式,因?yàn)檫@樣處理的話,它不能支持RTCP對(duì)媒體流的控制。另外,如果使用IPv6的話,可能會(huì)破壞和源媒體的連接。RFC3264支持了拓展方式,它支持了四種不同的a行的屬性設(shè)置。如果呼叫方需要重啟已處于呼叫等待狀態(tài)的呼叫,摁Hold 按鍵,發(fā)送SDP的a=sendrecv重新開啟雙向媒體流,開始正常通話處理。
參考資料:
- www.dinstar.cn
- https://www.rfc-editor.org/rfc/rfc3264.html
- www.asterisk.org.cn