WebRTC学习进阶之路系列总目录:https://blog.csdn.net/xiaomucgwlmx/article/details/103204274
在介绍这些基本知识之前我们要清楚WebRTC的目的以及根本要解决的问题是什么。WebRTC首要要解决的问题是两个浏览器之间如何进行音视频的实时互动,对于底层来说就是两个端点之间如何进行高效的网络传输。下边我们来一项一项的详细介绍这些内容。
一、NAT(Network Address Translator)
网络上的主机要有一个公网的地址才能进行通讯,现实中我们大部分主机都是在网关之后的,实际是有一个映射,在网关上有一个NAT功能,将内网的地址映射成外网的地址。
NAT的工作原理:
其实就是一个地址的映射,上图左半部分是几台内网机器,有自己的内网IP,他们之间可以通讯,但与互联网没法通讯 ,因此需要NAT进行转换。如11.0.25.23转换成122.35.10.11,每台内网主机实际要映射成不同的端口,IP不变。
NAT产生的原因
1,IPv4的地址不够
2,出于网络安全的原因
NAT种类
1,完全锥型NAT(Full Cone NAT)
当内网中的某一台主机经过NAT的映射后形成外网IP地址和端口号,外网的所有主机只要知道这个地址就都可以向这台主机发送数据,安全性低;
2,地址限制性锥型NAT(Address Restricted Cone NAT)
对出去请求的时候会对出去的IP地址做一些限制,当回来的时候只有出去的IP地址主机才能回消息,也就是我没有向你发送请求你向我发数据是不允许的;
3,端口限制锥形NAT(Port Restricted Cone NAT)
在IP地址限制的基础上又增加了端口的限制,给某台主机的某个应用发送,也就是只有有个应用或者说这个端口回来的数据才会接收;
4,对称型NAT(Symmetric NAT)
当经过NAT转换的时候,内网的主机出外网的时候形成的映射并不是一个,而是多个IP地址和端口,也就是说访问不同的主机他会形成自己的IP地址和端口,这就更加严格,你想知道我的IP地址都很困难。我请求A出去的是一个IP地址和端口,A告诉B有一个内网他的映射地址是这个,通过这个地址访问的时候实际是不能访问的,因为如果内网的主机与第三个主机进行连接的时候会新建一个IP地址和端口,基本不能穿越。
NAT穿越的原理
下边对每一种NAT类型的穿越原理进行介绍。
1,完全锥型NAT
左边是内网自己的IP地址和端口X,y,通过防火墙转换之后形成外网的IP地址和端口A,b,外边的三台主机要想与内网的主机进行通讯的时候,首先要由内网的主机向外请求,请求外网中的某一台主机,这样会在NAT上打一个洞,形成一个外网的IP地址和端口,然后其他的主机只要获得了这个IP地址和端口都可以通过防火墙与内网主机进行通讯。
2,地址限制锥形
会在防火墙上形成一个五元组:内网主机的IP地址和端口,外网映射后的公网IP地址和端口以及要请求的主机的IP地址和端口。同样的第一步要由内网向外网发送请求,在NAT上形成一个映射表,外网主机就可以和内网主机通讯。如图可以看到&#