初识NAT&P2P-未完待续
webRTC中,使用了P2P技术,实现了点对点之间的数据通信,可以不通过server角色的转发。其中重要的技术为在复杂网络环境中的网络穿透,俗称打洞。
借机了解下NAT以及打洞技术
一、NAT
1.1 IPv4的局限
IPv4为4字节地址,结构如下:

32比特的地址,包括特殊用途的地址,总数为,大约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层网络模型不赘述,有篇文章推荐看下:
下图为Wikpedia中的OSI模型截图
1.2 天降NAT
NAT,Network address translation,网络地址转换,