您現在的位置是:首頁 > 人文

別瞎說NAT,NAT到底是啥?具體怎麼回事?

由 什麼值得買 發表于 人文2022-05-30
簡介真正對大家上網有用的技術是UPnp的一個子集,叫做“網際網路閘道器裝置協議(Internet Gateway Device,IGD)”,UPnp在這個功能子集上就是把你家裡的裝置所需要的UDP埠在NAT路由器上做一個次自動的對映

什麼大什麼什麼

作者:iN在

還是來自一個粉絲的留言:

粉絲是這樣說的:

如果用光貓撥號,光貓到路由器用了nat3或者4,那你全家的裝置最高都只能是nat3或者4了

呃……這個“NAT3或者4”是啥意思?咱們先來溯源一下,其實很多白白嫩嫩的使用者對網路還真的不是特別知道,於是藉助於很多同樣也不知究竟對數碼博主的文章或影片就把網路問題搞成玄學問題了。

NAT type 1、2、3其實是Sony PlayStation上面的寫法。

別瞎說NAT,NAT到底是啥?具體怎麼回事?

在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,NAT到底是啥?具體怎麼回事?

可以這樣的使用者是根本不瞭解NAT的,NAT的確有很多種不同的型別,但並非是NAT 1、2、3(另外絕對沒有4)。

先說NAT是什麼,Network Address Translation(網路地址轉換),咱們家裡的路由器僅僅是用了網路地址轉換(NAT)的一小部分功能。簡單地說就是利用內網地址轉化外網地址。簡單的說就是把閘道器一側的IP地址轉換為閘道器另一側的IP地址。

別瞎說NAT,NAT到底是啥?具體怎麼回事?

例如上面的範例,192。168。0的網段經過NAT閘道器之後被轉化為10。10。0網段的IP地址,這種做法一般家裡用的不多,主要用在網路隔離的專案中。

別瞎說NAT,NAT到底是啥?具體怎麼回事?

或者,上面這種和家裡很像了吧?其實這是多臺伺服器透過NAT對映為一臺伺服器的做法,主要用在做負載均衡上。在外界訪問10。10。0。101這個IP地址的時候,有可能訪問到內部192。168。0網段的任何一臺主機,這是典型的伺服器負載均衡模式。

別瞎說NAT,NAT到底是啥?具體怎麼回事?

再或者這就很像家裡的網路訪問方式了,擁有可以訪問到網際網路上的合法IP地址的閘道器要對內部的網路地址進行轉換,最終讓內部的192。168。0網段的機器可以訪問網際網路。這個方式其實叫做“網路連線共享”,其實早期這個功能並不是路由器的固有功能,而是整合在各種作業系統中的。

別瞎說NAT,NAT到底是啥?具體怎麼回事?

後來由於這項功能本身耗費的處理資源很小,就逐漸地被家用路由器來接管了,說到這裡,大家還記得自己的第一款家用路由器嗎?

別瞎說NAT,NAT到底是啥?具體怎麼回事?

最早的一款家用路由器是臺灣合勤的Prestige 641,這是一個在DSL時代就提供自動撥號上網功能並帶有網路共享功能的裝置,雖然還是像ADSL貓一樣只有一個對外的RJ45介面,但是它奠定了家用路由器的雛形。

但也正因為如此,家用路由器上網的NAT轉換功能其實也都繼承於這個裝置。這麼多年以來廠商在路由器的NAT功能上幾乎沒有絲毫改進。

究其原因就是合勤開窗了一個利用給予Linux系統配合一個算力很差的CPU為家庭使用者提供可以接受價位的網際網路共享方案。沒錯現在我們的家用路由器就只是網際網路連線共享的路子。並不是真正意義上的路由器,叫做寬頻共享器更為合適一些。

也正因為硬體效能並不高,所以現在家用路由器在大部分網路功能上都做了剪裁。說回咱們關心的上網問題這些路由器也並沒有提供完整的NAT功能。

通常家庭撥號上網只是上游裝置分配過來一個動態的IP地址。這個IP地址內包括三個主要專案:

IP地址

子網掩碼

閘道器

一個單獨的IP地址如果要完成家中所有的裝置上網的需求就需要在資料包上做文章了。

別瞎說NAT,NAT到底是啥?具體怎麼回事?

當裝置發出去資料的的時候,在資料包內做了標籤或在路由器內測中生成記錄,以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幾的問題:

別瞎說NAT,NAT到底是啥?具體怎麼回事?

如果PS直接接入網際網路不經過路由器就是TYPE 1,而且這個過程中根本不存在NAT。

在NAT路由器上如果開啟了UPnp功能,playstation埠成功的正確對映就是TYPE 2。

如果NAT路由器上沒有開啟UPnp功能,且playstation埠沒有正確對映,就是TYPE 3。

這個問題和你幾層路由器,是不是光貓撥號都沒有任何關係。

再看這個情景:

別瞎說NAT,NAT到底是啥?具體怎麼回事?

這是很多運營商並沒有為使用者提供公網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,NAT到底是啥?具體怎麼回事?

很簡單的只有這麼一條,這是一個更先進的NAT全錐方式。

別瞎說NAT,NAT到底是啥?具體怎麼回事?

對地址和埠都可以進行轉換,其實類似於Playstation識別的時候會直接識別為Type 1,但是要注意的是這也僅僅是不同的NAT方式中iN認為比較適合自己家的形式的一種方式而已。

別瞎說NAT,NAT到底是啥?具體怎麼回事?

具體的NAT實現方式太多了。

推薦文章