为什么sdp中的m =行包含端口?候选人不是多余的吗?

时间:2016-07-04 14:35:10

标签: sdp

根据RFC 4566 https://tools.ietf.org/html/rfc4566#page-22,sdp中的m =行包含一个端口:

m=audio 49170 RTP/AVP 0

ICE候选人已经确定了港口吗?它们也包含端口:

a=candidate:1 1 UDP 2130706431 10.0.1.1 8998 typ host

正如RFC 5245 https://tools.ietf.org/html/rfc5245#page-9所述,

“ICE是一个    提供/答案模型的扩展,并通过包括一个    SDP中的多种IP地址和端口提供和解答,    然后通过点对点连接测试连接性    检查“。

这是否意味着m =行中指定的端口已过时?

使用libjingle创建新的sdp商品时,它会显示IP地址0.0.0.0以及端口9(即“丢弃”端口)。所以它显然没有看到m = line中的端口是相关的:

m=audio 9 UDP/TLS/RTP/SAVPF 111 103 9 102 0 8 106 105 13 127 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0

有人知道吗?

1 个答案:

答案 0 :(得分:2)

m =行中的IP和候选者是来自候选前时代的遗留物,其中使用固定IP和端口进行通信。

至少使用WebRTC,如第33页的https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-15中所述,

“端口值设置为默认ICE候选端口       这个m =部分,但考虑到还没有候选人       聚集后,必须使用“虚拟”端口值9(丢弃),如       在[I-D.ietf-ice-trickle]第5.1节中指出。“和

“m =线必须紧跟一条”c =“线,如规定的那样    在[RFC4566]第5.7节中。再一次,因为还没有候选人    聚集后,“c =”行必须包含“虚拟”值“IN IP4    0.0.0.0“,如[I-D.ietf-ice-trickle]第5.1节中所定义。”,

用指定的简单词语表示,m = line包含一个虚拟IP和端口,只要没有收集候选者并且不需要媒体流,此后默认候选者的IP和端口。