分享

别瞎说NAT,NAT到底是啥?具体怎么回事?

 whhbjh 2022-05-21 发布于北京

作者:iN在

还是来自一个粉丝的留言:

粉丝是这样说的:

如果用光猫拨号,光猫到路由器用了nat3或者4,那你全家的设备最高都只能是nat3或者4了

呃……这个“NAT3或者4”是啥意思?咱们先来溯源一下,其实很多白白嫩嫩的用户对网络还真的不是特别知道,于是借助于很多同样也不知究竟对数码博主的文章或视频就把网络问题搞成玄学问题了。

NAT type 1、2、3其实是Sony PlayStation上面的写法。

在PS联网测试的时候会有NAT 类型的显示,一般会有四种不同的提示,分别是 类型 1、类型2、类型3和失败。至于NAT 4,iN也的确是没说过。至于“失败”一般的情况下是路由器的防火墙设置阻挡了playstation超过1024以上的端口号导致的playstation无法去验证真实的NAT类型,这个是测试失败,和NAT类型丝毫没有关系。

为啥sony会提出NAT TYPE1、2、3呢,主要是为了迁就小白用户硬生生的造出来这个说法,又有一群数码博主同时是游戏机的爱好者,就广泛的传播这个概念了,以至于让大家觉得NAT type后面跟着的数字号越大网络就会越差。传来传去就传出来了NAT 4,过阵子说不定还有人传NAT 250呢!

由于对NAT的不了解,以至于有的up主还提出来利用playstation的局域网端口插入到光猫的端口上直接PPPOE博号来获得NAT TYPE 1的方法。

你倒是可以打游戏了,全家这时候全断网了……有点类似于汽车车胎漏气,就拆掉车胎支起来跟木棍直接上路的感觉啊。

可以这样的用户是根本不了解NAT的,NAT的确有很多种不同的类型,但并非是NAT 1、2、3(另外绝对没有4)。

先说NAT是什么,Network Address Translation(网络地址转换),咱们家里的路由器仅仅是用了网络地址转换(NAT)的一小部分功能。简单地说就是利用内网地址转化外网地址。简单的说就是把网关一侧的IP地址转换为网关另一侧的IP地址。

例如上面的范例,192.168.0的网段经过NAT网关之后被转化为10.10.0网段的IP地址,这种做法一般家里用的不多,主要用在网络隔离的项目中。

或者,上面这种和家里很像了吧?其实这是多台服务器通过NAT映射为一台服务器的做法,主要用在做负载均衡上。在外界访问10.10.0.101这个IP地址的时候,有可能访问到内部192.168.0网段的任何一台主机,这是典型的服务器负载均衡模式。

再或者这就很像家里的网络访问方式了,拥有可以访问到互联网上的合法IP地址的网关要对内部的网络地址进行转换,最终让内部的192.168.0网段的机器可以访问互联网。这个方式其实叫做“网络连接共享”,其实早期这个功能并不是路由器的固有功能,而是集成在各种操作系统中的。

后来由于这项功能本身耗费的处理资源很小,就逐渐地被家用路由器来接管了,说到这里,大家还记得自己的第一款家用路由器吗?

最早的一款家用路由器是台湾合勤的Prestige 641,这是一个在DSL时代就提供自动拨号上网功能并带有网络共享功能的设备,虽然还是像ADSL猫一样只有一个对外的RJ45接口,但是它奠定了家用路由器的雏形。

但也正因为如此,家用路由器上网的NAT转换功能其实也都继承于这个设备。这么多年以来厂商在路由器的NAT功能上几乎没有丝毫改进。

究其原因就是合勤开窗了一个利用给予Linux系统配合一个算力很差的CPU为家庭用户提供可以接受价位的互联网共享方案。没错现在我们的家用路由器就只是互联网连接共享的路子。并不是真正意义上的路由器,叫做宽带共享器更为合适一些。

也正因为硬件性能并不高,所以现在家用路由器在大部分网络功能上都做了剪裁。说回咱们关心的上网问题这些路由器也并没有提供完整的NAT功能。

通常家庭拨号上网只是上游设备分配过来一个动态的IP地址。这个IP地址内包括三个主要项目:

IP地址

子网掩码

网关

一个单独的IP地址如果要完成家中所有的设备上网的需求就需要在数据包上做文章了。

当设备发出去数据的的时候,在数据包内做了标签或在路由器内测中生成记录,以NAT网关路由器的IP地址继续传送到网络上的服务器中,服务器在返回数据的时候将数据包传送到NAT网关路由器上。NAT网关路由器再依据记录或标签将数据包返回请求数据传送的设备上

这时候你会发现IP数据包的大小收到限制、NAT路由器的内部存储也受到了限制,这时候完全的打标和记录方式只能应付少量的设备进行高效的网络传输。很快人们就注意到虽然只有一个IP地址,但是一个TCP/IP网络上的主机还有65535个端口。就考虑到利用不同端口来绑定到内部网络的特定IP设备上。例如内网上IP1访问80端口,到NAT上将内网的80端口绑定到了1081这个端口上,当内网IP2再需要80端口的时候,这个IP的80端口就被映射到了1082端口上。通过这种方法一个NAT路由器的承载力就成百倍的上升。

这两种NAT转换的方法在家用都没有任何问题,都属于不会有任何问题的传输方式。但是别忘了,TCP/IP网络上还有一种数据包的形式叫做UDP。这是一种不建立连接的数据报文的方式。很多的数据仅仅依靠目标地址和端口号来传送。在公网上传输的时候只能达到NAT路由器上,由于是突如其来的数据包,NAT路由器也很难确定这个数据包要怎样向下传递。

这时候一个技术很重要的技术出出现了UPnp。真正对大家上网有用的技术是UPnp的一个子集,叫做“互联网网关设备协议(Internet Gateway Device,IGD)”,UPnp在这个功能子集上就是把你家里的设备所需要的UDP端口在NAT路由器上做一个次自动的映射。

回到开篇的Playstation的 NAT几的问题:

如果PS直接接入互联网不经过路由器就是TYPE 1,而且这个过程中根本不存在NAT。

在NAT路由器上如果开启了UPnp功能,playstation端口成功的正确映射就是TYPE 2。

如果NAT路由器上没有打开UPnp功能,且playstation端口没有正确映射,就是TYPE 3。

这个问题和你几层路由器,是不是光猫拨号都没有任何关系。

再看这个情景:

这是很多运营商并没有为用户提供公网IP的状况,但现在现在设备升级,有一些运营商的NAT路由器也支持了UPnp申报申报的功能,依旧是TYPE 2的形式。

当然了,在这一串NAT路由里面如果有一台没有开启UPnp的路由存在,你的网络也会被Playstation报告TYPE 3。

其实,说到这里,大家常说的NAT全锥(Full cone NAT)、受限锥(Restricted cone NAT)、端口受限锥形(Port-Restricted cone NAT)和对称NAT(Symmetric NAT)等类型其实是和Playstation上显示出来的TYPE几没有任何关系的。这些都是专业术语被错用到家里了。

至于iN的NAT是怎么设置的?看一下截图:

很简单的只有这么一条,这是一个更先进的NAT全锥方式。

对地址和端口都可以进行转换,其实类似于Playstation识别的时候会直接识别为Type 1,但是要注意的是这也仅仅是不同的NAT方式中iN认为比较适合自己家的形式的一种方式而已。

具体的NAT实现方式太多了。

媒体来源:什么值得买

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多