WebRTC信道可靠性
我想检查我对WebRTC数据通道的理解是否正确,特别是通过将WebRTC信道可靠性,webrtc,rtcdatachannel,rtcpeerconnection,Webrtc,Rtcdatachannel,Rtcpeerconnection,我想检查我对WebRTC数据通道的理解是否正确,特别是通过将有序的&maxRetransmits或maxPacketLifeTime属性更改为RTCDataChannelInit字典可以实现的不同类型的通道。我的以下假设是否正确: 创建一个可靠的&有序的通道,如TCP,但基于消息而不是流: 创建一个可靠但无序的通道(是否也应指定maxRetransmits或maxPacketLifeTime以实现可靠性?) 创建一个不可靠的和无序的通道,如UDP 创建一个不可靠的但已排序的通道,即如果较早的消息
有序的&maxRetransmits
或maxPacketLifeTime
属性更改为RTCDataChannelInit
字典可以实现的不同类型的通道。我的以下假设是否正确:
创建一个可靠的&有序的通道,如TCP,但基于消息而不是流:
创建一个可靠但无序的通道(是否也应指定maxRetransmits
或maxPacketLifeTime
以实现可靠性?)
创建一个不可靠的和无序的通道,如UDP
创建一个不可靠的但已排序的通道,即如果较早的消息在较后的消息之后到达,则会丢弃较早的消息
前三个假设是正确的,第四个假设是不正确的
根据webrtc pc规范,maxPacketLifeTime或MaxRetransmit只能在不可靠模式下使用
第四种情况创建可靠且有序的通道
更多信息-您所有的假设都是正确的
对于第一种和第二种情况,不设置maxRetransmits
和maxpacketlife
会根据产生可靠的通道,如下所示(粗体和斜体):
RTCDataChannel
可以配置为在不同的可靠性模式下运行。可靠的通道确保数据通过重传在另一个对等方传递。不可靠信道被配置为限制重传次数(maxretransmit
)或设置允许传输(包括重传)的时间(maxretransmit
)。这些属性不能同时使用,尝试这样做将导致错误不设置任何这些属性都会产生可靠的通道。
第三种情况是设置ordered:false
和maxRetransmits:0
,根据创建一个不可靠的和无序的通道,如UDP,如下所示(粗体和斜体):
o必须使用[RFC3758]中定义的部分可靠性扩展
支持。除了定时可靠性PR-SCTP策略之外
[RFC3758]中定义,在中定义的有限重传策略
必须支持[I-D.ietf-tsvwg-sctp-PRPolicys]限制
再传输到零的次数与无序传递相结合
提供类似UDP的服务,在该服务中发送每个用户消息
仅一次,并按收到的订单交付
第四种情况是设置ordered:true
和maxRetransmits:0
,它创建了一个不可靠但有序的(“sequenced”)通道。这种类型的频道是根据以下段落(粗体和斜体):
除了像UDP一样提供无序、不可靠的数据传输外,PR-SCTP还可以提供有序、不可靠的数据传输服务
关于第四种情况,我不知道如何在“不可靠”数据通道上实现“有序”。但我想这里的猜测是对的。如果较早的消息在较后的消息之后到达,则接收方可能会丢弃较早的消息
根据的最后一段(粗体和斜体):
请注意,在收到转发TSN并更新累积
确认点,如果跳过的TSN确实到达(即。,
由于网络重新排序),则接收器将遵循正常
RFC 2960[2]中定义的用于处理重复数据的规则。这
这意味着接收者将丢弃区块,并将其报告为
在下一个出站SACK块中复制
被引用,反过来,被引用
RTCPeerConnection.createDataChannel("label", {
ordered: true
});
RTCPeerConnection.createDataChannel("label", {
ordered: false
});
RTCPeerConnection.createDataChannel("label", {
ordered: false,
maxRetransmits: 0
});
RTCPeerConnection.createDataChannel("label", {
ordered: true,
maxRetransmits: 0
});