WebRTC 传输的基本知识-NAT

220 阅读2分钟

webrtc要解决的就是两个浏览器之间如何实时音视频互动的问题,对于底层来说就是两个端点之间如何进行高效的网络传输.

为此webrtc引入了多个传输协议

NAT : Net Address Translator, 将内网地址映射成外网地址, 有了外网地址其他主机才能与之通讯.

STUN : Simple Traversal of UDP Through, NAT的一种协议, STUN服务器作为中介将内网机器的IP返回.

TURN : Traversal Using Relays around NAT, 云端服务器, 当P2P连接不成功时 ,负责流媒体数据的转发.

ICE : Interactive Connectivity Establishment, 在NAT和TURN中做最优选择, 当p2p某个网卡或端口不可用时, 选择其他一个可用或更高效的网卡和端口, 当p2p不可用的时候, 就会选择TURN服务,选择最优的节点.

NAT

产生原因

  • 由于IPv4的地址不够

  • 出于安全的原因

NAT种类

完全锥型NAT (Full Cone NAT) : 当内网的一台主机通过映射到外网之后, 外网主机只要知道这个映射出去的地址就可以对此发送数据.安全性较低

地址限制锥形NAT (Address Restricted Cone NAT) : 对外请求的哪个外部地址, 只有这个IP地址发送的消息 才会被接收.

端口限制锥形NAT (Port Restricted Cone NAT) : 在地址限制的基础上, 增加对端口的限制, 也就是只认可我请求过的 IP:port.

对称型NAT (Symmetric) : 内网地址访问外部数据时 对不同的主机映射的地址都不同.

NAT穿越原理

  • C1, C2向STUN发消息 获取到公网地址

  • 交换公网IP以及端口

  • C1 -> C2, C2 -> C1, 甚至是端口猜测, 如果是对称型NAT, 会使用这种策略, 因为端口变化是有一定规律的, 但是打通的概率很低

NAT穿越组合