我做的RFC 3550 (RTP)a Java implementation,我已經遇到了一個小問題:RTP RFC(3550)解釋的問題
在chapter 11,第2款,它指出:
(.. )參與者不得假定傳入的RTP或RTCP數據包的源端口可用作傳出RTP或RTCP數據包的目標端口。當雙向發送RTP數據包時,每個參與者的RTCP SR數據包必須發送到另一個參與者指定用於接收RTCP的端口。 (...)
RTP沒有任何機制來通知這些地址和端口(這取決於SDP或其他設置協議),這會使我將本段理解爲「如果你是接收來自未知來源的數據,只是丟棄它「。
但在section 6.3.3它基本上說,當一個RTP或non-BYE RTCP數據包收到一個未知的SSRC時,一個新的參與者應該被添加到表中。
所以總結起來:
- 接收到未知的SSRC時,應添加一個新的參與者;
- 您不能將數據包的源IP /端口用作該參與者的數據包的目的地;
- SDP沒有定義每個RTP參與者使用的SSRC;
- 您可以手動添加RTP參與者(以其他方式發現),但您不知道SSRC會是什麼。
因此,百萬美元的問題是:人們應該如何處理意想不到的SSRC?
最大的問題是如何確定這個新參與者的IP /端口組合 - 驗證後 - 因爲第11節第2段指出源IP /端口「不得」被使用,並且「(.. )包必須發送到另一個參與者爲接收指定的端口(...)「。如果它是一個新的,意外的參與者(意思是,通過SDP未公佈,可能有人攻入)如何指定接收IP /端口組合? – biasedbit 2010-09-14 14:43:43