第一天看,感觉时间有些分配不过来,给自己10天时间,看能摸索到什么程度。
day 1 理论熟悉,大致框架,名词了解
day 2 H5实际跑通,查看握手细节
day 3 native侧跑通,进一步细节day 2看的握手细节,总结出流程
day 4 整体框架,行业解决方案了解,服务器转推,合流等(先并发下载源码)
day 5 内部各个重要模块,比如NetEQ,UDP容错方式熟悉
day 6 拿已经有的.a写一个demo,N方视频,了解视频渲染与音频渲染合流方式,VP9/H264容错方式
day 7 在ios平台编译webrtc源码,估计会比较漫长
day 8 核心c++结构梳理,中间层对移动端,PC端的适配
day 9 整体回顾
day 10 整体回顾
一、理清几个词的概念
网络结构:
Full Cone NAT
完全锥形NAT,所有从同一个内网IP和端口号发送过来的请求都会被映射成同一个外网IP和端口号,并且任何一个外网主机都可以通过这个映射的外网IP和端口号向这台内网主机发送包。
Restricted Cone NAT
限制锥形NAT,它也是所有从同一个内网IP和端口号发送过来的请求都会被映射成同一个外网IP和端口号。与完全锥形不同的是,外网主机只能够向先前已经向它发送过数据包的内网主机发送包。
Port Restricted Cone NAT
端口限制锥形NAT,与限制锥形NAT很相似,只不过它包括端口号。也就是说,一台IP地址X和端口P的外网主机想给内网主机发送包,必须是这台内网主机先前已经给这个IP地址X和端口P发送过数据包。
Symmetric NAT
对称NAT,所有从同一个内网IP和端口号发送到一个特定的目的IP和端口号的请求,都会被映射到同一个IP和端口号。如果同一台主机使用相同的源地址和端口号发送包,但是发往不同的目的地,NAT将会使用不同的映射。此外,只有收到数据的外网主机才可以反过来向内网主机发送包。
ICE: Interactive Connectivity Establishment,它利用STUN和TURN服务器来帮助端点建立连接,使之在最适合的情况下工作,以弥补单独使用其中任何一种所带来的固有缺陷。
在rfc5245定义里面,实现ICE一共有六个步骤:收集候选地址、连通性测试、候选排序、冻结候选、检查安全性、ICE结束。
SDP: Session Description Protocol,它只是一种信息格式的描述标准,本身不属于传输协议,但是可以被其他传输协议用来交换必要的信息。比如网络描述,流描述,安全描述,服务质量。
STUN: Session Traversal Utilities for NAT,NAT会话穿越应用程序,是一种网络协议,允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT路由器之后的主机之间创建UDP通信。该协议由RFC 5389定义。客户端会向STUN服务器发送请求,之后,服务器就会向STUN客户端报告NAT路由器的公网IP地址以及NAT为允许传入流量传回内网而开通的端口。
TURN:Traversal Using Relays around NAT,是STUN/RFC5389的一个拓展,主要添加了Relay功能,在某些特定的环境下,NAT穿透可能会失败,这样就需要一种弥补方案,turn就是一种通过中继服务转发媒体数据。
二、理清大概握手流程
先借用这张表吧,还没完全理解,太困了
