因為SIP網(wǎng)絡(luò )技術(shù)存在了很多年,一些終端設備可能僅支持RFC2543,另外一些比較新的終端設備可能同時(shí)支持了RFC2543和RFC3264,為了完成成功的呼叫等待,雙方終端通常需要兩種協(xié)議都能支持才能實(shí)現。下面的示例是一個(gè)關(guān)于SIP 呼叫等待中SDP的交互流程(這里假設已正常通話(huà),無(wú)NAT問(wèn)題),通過(guò)SDP的交互雙方實(shí)現呼叫等待和重啟呼叫的流程。

在以上的處理流程中,事實(shí)上,呼叫方執行呼叫等待時(shí)在SDP中修改了c行的地址, 地址為0.0.0.0,這個(gè)流程是根據RFC2543來(lái)實(shí)現的。通過(guò)修改c行地址為0.0.0.0 表示不再接收媒體流。但是,這個(gè)處理方式在RFC3264中是一種不再推薦的處理方式,因為這樣處理的話(huà),它不能支持RTCP對媒體流的控制。另外,如果使用IPv6的話(huà),可能會(huì )破壞和源媒體的連接。RFC3264支持了拓展方式,它支持了四種不同的a行的屬性設置。如果呼叫方需要重啟已處于呼叫等待狀態(tài)的呼叫,摁Hold 按鍵,發(fā)送SDP的a=sendrecv重新開(kāi)啟雙向媒體流,開(kāi)始正常通話(huà)處理。
參考資料:
- www.dinstar.cn
- https://www.rfc-editor.org/rfc/rfc3264.html
- www.asterisk.org.cn