rfc5245概要翻译-3

7 篇文章 0 订阅
7 篇文章 0 订阅

对此rfc的翻译正确性不做任何保证。按照它而导致的任何问题后果自负。转载请注明原地址。

4发送初始offer

为了能在offer/answer交互中发初始offer,一个agent必须1收集候选地址2排序3删除重复4选择默认候选5制定并发送SDP。

4.1完整实现所需要的

4.1.1收集候选

一个agent在即将通信前做这件事。它可以由用户接口触发或者在会话初始中明确要求。所有候选是个传输层地址。候选还包括类型和BASE。类型有四种:主机地址,服务器自反地址,对端自反地址,中继地址。服务器自反地址由STUN或TURN获取,中继地址由TURN获取。对端自反地址在ICE连接性检测的阶段获取。BASE是agent发送数据时必须用的候选地址(译注?)。

4.1.1.1主机候选地址

主机地址由在IP上绑定端口获得。

agent要为每个媒体流组件获得候选地址。每个IP上的主机候选地址总和组件相绑定(译注:看例子)。每个组件有个组件ID,例如如RTP媒体流,RTP组件ID1,RCTP组件ID2。如果agent用RCTP,它必须为RCTP收集候选地址。如果agent用RTP+RCTP,最终会有2*K个主机候选地址,其中K是agent的IP数量。每个主机候选地址的BASE是它自己。

4.1.1.2服务自反候选地址和中继候选地址

agent应该能获得服务器自反地址和中继地址。这个具体取决于网络。比如纯内网环境下的多栈主机(多IP),只要获取它的主机地址就足够了,ICE只是用来选择用什么主机地址。

TURN的使用代价高昂,只有双终端在对称型NAT后才用。所以有些时候就不用TURN了。所以建议当agent不需要收集服务器自反地址和中继地址时,可以关闭这功能,需要时再打开。

当收集服务器自反地址和中继地址时用TURN服务器,只收集服务器自反地址时用STUN服务器。

agnet通过配置或DNS来确定TURN/STUN服务器的位置。建议用DNS。rfc5389描述DNS找STUN服务器,rfc5766描述DNS找TURN服务器。

上面只讲了单STUN和单TURN。如果有多个STUN或TURNserver,从同一个Server来获取候选地址。(多Server)的结果是有多个从Server传来的主机地址。agent选择一个,从上面向Server发送Binding or  Allocate。绑定是没有验证的,备用服务器发回的响应也需忽略。agent必须为Binding请求实现rfc5389中的向后兼容模式。Allocate请求需要通过其他长期的验证方式验证。

Ta微秒后,agent能发起新的STUN/TURN事物。新事物可以是可恢复性故障的重试(如认证错误),或是为新的主机候选地址--Server对发起。agent发送频率不应该超过Ta,详细见16章如何设置Ta和STUN重传超时RTO

Agent会收到Binding or  Allocate响应。成功的Allocate响应使agent获得了服务器自反地址(包含在映射地址中),和中继地址(在XOR-RELAYED-ADDRESS属性中)。如果服务器由于缺乏资源而拒绝了Allocate请求,agent应该发Binding请求,来获得服务器自反地址。Binding响应会给agent提供唯一一个服务器自反地址(包含在映射地址中)。服务器自反地址的BASE是Binding or  Allocate发送的主机候选地址。中继地址的BASE是它自己。如果中继地址和主机候选地址相同,这个中继被忽略。

4.1.1.3计算"基础"

最后,agent给每个候选地址分配个"基础(Foundations)",它在一个会话中有效。两个候选地址在如下的情况下的“Foundations”必须一致:

1类型一致(主机、中继、服务器自反、对端自反)

2BASE的IP相同(端口可以不一样)

3获取自反和中继地址的STUN和TURN服务器IP必须一样。

4传输层协议相同(TCP/UDP)

如果上述条件有一条不满足,Foundations必须不同

4.1.1.4保持候选有效

中继、服务器自反地址在ICE流程结束前必须保持有效(见8.3)。从Binding Request中获得的服务器自反地址还需要通过向服务器发额外的Binding Request来保持有效。更新(Refresh)通过更新事物来完成(rfc5766),Refresh请求也会刷新服务器自反地址。

4.1.2候选优先级计算

(待续)


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值