webRTC中,使用了P2P技术,实现了点对点之间的数据通信,可以不通过server角色的转发。其中重要的技术为在复杂网络环境中的网络穿透,俗称打洞。
借机了解下NAT以及打洞技术

一、NAT

1.1 IPv4的局限

IPv4为4字节地址,结构如下:

32比特的地址,包括特殊用途的地址,总数为232=42949672962^{32} = 4294967296,大约40亿,在2019年11月25日已分配完,虽然各大ISP手里应该还有部分囤积的地址,但是已目前的设备数量,IPv4地址早就不够用了。

The RIPE NCC has run out of IPv4 Addresses

为应对上述问题,NAT技术得到了广泛应用。在简述NAT之前,有些预备知识需要了解:

1.1.1 特殊用途的IPv4地址

IPv4的地址中有部分地址被预留作为特殊用途使用,其中有几个网段作用为"Reserved private network",分别为:

Reserved private IPv4 network ranges

预留的私有地址无法通过公网直接联通。由RFC1918提出。在此基础上,NAT利用其预留的私有地址,将IPv4续命至今。

当然根本的解决方案是IPv6,使用IPv6号称可以让地球上每粒沙子都可以有独立的地址。

1.1.2 网关

不同网络之间,需要通过网关进行转发(跨网段或者跨协议)。一般工作在第三层的switch、router、Firewall均可以认为具有网关的功能。

一般网关设备为拥有多张NIC(Network Interface Controller, 网络接口控制器)时,在安装上特定的转发功能后,即可作为网关。

1.1.3 OSI网络模型

OSI-7层网络模型不赘述,有篇文章推荐看下:

协议森林01 邮差与邮局 (网络协议概观)

下图为Wikpedia中的OSI模型截图

1.2 天降NAT

NAT,Network address translation,网络地址转换,

二、打洞-NAT穿越

三、P2P