技术背景
由于公网ipv4地址极度有限,所以出现了内网,将公网与内网相隔离,这样内网可以使用局域网ip。不同的内网可以使用相同的局域网ip而不相互干扰。
NAT(network address translation)可以隔离外网(外网可以是公网也可以是另一个内网)与内网。
这样带来一个新的问题。同一个局域网下的两个设备相互连接没什么难度,那不同内网的两个设备该怎么连接呢?
内网穿透
内网穿透就是为了解决这个问题而诞生的技术手段,让两个内网设备可以找到对方的位置进行连接。
在计算机网络设计中是没有考虑这个需求的(换言之,这个技术是不规范的)。所以它的实现方法也多种多样。在这里某大佬说的话又不禁在脑海中回荡:当一个问题拥有很多种解决方法,这个问题就没有规范解法(最优解)。
实现方法
中介服务器
大多内网穿透技术实现是利用一个公网的服务器作为双方的中介。下面是示例图。
它的优点是路由器不需要公网IP,非常适合大内网的穿透。缺点是流量都要经过中介服务器。由此带来问题是,最大穿透速率受限于中介服务器提供的带宽。
DDNS + 端口转发
该技术的优点是通过直接访问到NAS服务器,没有经过二次转发的过程,效率高,最大的穿透速率就是家用宽带的上传宽带。这种方法本质上只进行了一层穿透,这一层穿透是在路由器中的,所以可以通过端口转发实现可控性。