NAT类型讲解

大家玩游戏的时候明明网络状态非常好,就是特别的卡,检查路由器、光猫、网线、光纤、同轴,也没什么检查出什么问题,很奇怪对吧?但是这些问题跟网络质量没什么关系,而是NAT类型

什么是NAT类型?

NAT类型(Network Address Translation,即网络地址转换),作用是允许在多个内网设备中共享同一个公网IP地址,有效节省了IPv4资源。

为什么会有NAT类型?

因为IPv4只有约四十多亿(42949672962),而到了2025年,全世界总人口已经有七十多亿了,这点IPv4的资源根本不够用;为了解决IPv4资源的枯竭,于是就有了NAT类型技术。

NAT工作原理是什么?

NAT思维导图,图来源mao.fan

一般来说,我们想要访问某个网站,就比如对方的服务器是123.321.232.11,而我们的公网IP是47.234.111.32,然后我们内网设备比如是192.168.1.32,比如手机192.168.1.32向网站123.321.232.11发送数据,需要从手机192.168.1.32转发到路由器、再转发到光猫并转换成公网IP47.234.111.32、最终请求的数据包已经发送到了对方服务器123.321.232.11(提示:如果是PPPoE拨号上网,你的数据包会发送到运营商内网而且还有做一次NAT转换);看起来很乱?下面有流程图👇

手机->路由器->光猫->互联网->网站

NAT类型有四种类型,每一种类型的工作方式不太一样,分别是

  • 全锥形(Full Cone): 最宽松的NAT类型。只要外网设备知道你的公网IP,就可以向内网设备发送数据,对于游戏玩家来说是一个不错的选择。
    fc

  • IP限制锥形(Restricted Cone): 外网设备无法主动向内网设备发送数据,内网设备必须向外网设备发出请求,才能与外网设备互相通信。只有之前与通信过的外网主机才能通过继续通信。
    rc

  • 端口限制锥形(Port Restricted Cone): 和IP限制锥形类似,但是有端口限制,双方通信时必须达成协议要用什么端口;比如我们开放25565端口,对方也会用25560端口进行通信,但如果对方使用19132端口和我们通信,NAT类型会直接拒绝链接。
    prc

  • 对称形(Symmetric): 这是安全最严格但也是最麻烦的NAT类型之一,内网设备发送请求会映射到不同的IP,每次发送的请求都有可能每个不同IP。对于游戏玩家来说非常不友好。
    s

NAT类型有哪些影响?

NAT类型主要影响UDP协议的通信性能和稳定性。特别是在需要低延迟和高实时性的应用中,例如在线游戏、VoIP和视频通话。

游戏的影响:玩主机游戏的影响很大,如果你有PS、Xbox、NS 等主机,可以在网络状态里看到 NAT类型;对网络游戏会影响延迟和丢包率,以及匹配系统的效率和成功率。

语音视频的影响:你可能遇到过微信视频提示网络质量不好,但WiFi信号满格的状况,这种情况很有可能是NAT4类型,导致无法P2P连接成功导致的。

BT下载的影响:P2P下载等应用,最为开放的NAT类型,可以连接到更多的资源数,加快下载的速度。

开放性:NAT1>NAT2>NAT3>NAT4

安全性:NAT1<NAT2<NAT3<NAT4

如何更改NAT类型?

由于IPv4资源枯竭,大部分家庭没有公网IP,如果是PPPoE拨号上网你发送的数据包还要经过运营商的内网再次转换,这也意味着我们可能需要向运营商电话联络(大概不会给你改),最简单的办法就是找运营商要一个公网IP(广电公网IP一个月好几百块,还不如GTA抢银行去了),并且光猫连接方式改为桥接

如何检测自己的NAT类型?

  • NAT类型在线检测工具,查看我的NAT类型 – 猫点饭: 网页检测,挺准,但是需要订阅微信公众号(猫点饭快给我打钱)
  • 人生苦短,我用Python!
    1
    2
    3
    4
    5
    6
    pip install pystun3
    # 安装完毕后直接在终端敲pystun3回车就行了
    PS C:\Users\liuyi> pystun3
    NAT Type: Symmetric NAT
    External IP: 111.31.29.128
    External Port: 27388