NAT類型及工作原理
在計算機網絡中殿遂,網絡地址轉換(Network Address Translation,縮寫為NAT)篡九,也叫做網絡掩蔽或者IP掩蔽(IP masquerading)谐岁,是一種在IP數據包通過路由器或防火墻時重寫來源IP地址或目的IP地址的技術。這種技術被普遍使用在有多臺主機但只通過一個公有IP地址訪問因特網的私有網絡中。根據規(guī)范伊佃,路由器是不能這樣工作的窜司,但它的確是一個方便且得到了廣泛應用的技術。當然航揉,NAT也讓主機之間的通信變得復雜塞祈,導致了通信效率的降低。
1帅涂、NAT的類型
1.1议薪、基本網絡地址轉換(Basic NAT)
1.2、網絡地址端口轉換(NAPT)
- NAT1: Full Cone NAT漠秋,完全圓錐型NAT笙蒙,這是最寬松的網絡環(huán)境,你想做什么庆锦,基本沒啥限制IP和端口都不受限捅位。
- NAT2: Address-Restricted Cone NAT,受限圓錐型NAT搂抒,相比NAT1艇搀,NAT2 增加了地址限制,也就是IP受限求晶,而端口不受限焰雕。
- NAT3: Port-Restricted Cone NAT,端口受限圓錐型NAT芳杏,相比NAT2矩屁,NAT3 又增加了端口限制,也就是說IP爵赵、端口都受限吝秕。
- NAT4: Symmetric NAT,對稱型NAT空幻,對稱型NAT具有端口受限錐型的受限特性烁峭,內部地址每一次請求一個特定的外部地址,都可能會綁定到一個新的端口號秕铛。也就是請求不同的外部地址映射的端口號是可能不同的约郁。這種類型基本上就告別 P2P 了。
2但两、NAT工作原理
2.1鬓梅、基本網絡地址轉換(Basic NAT)
它實現(xiàn)比較簡單,僅支持地址轉換镜遣,不支持端口映射己肮。靜態(tài)NAT要求對每一個當前連接都要對應一個公網IP地址士袄,因此要維護一個公網的地址池。寬帶(broadband)路由器通常使用這種方式來允許一臺指定的設備去管理所有的外部鏈接谎僻,甚至當路由器本身只有一個可用外部IP時也如此娄柳,這臺路由器有時也被標記為DMZ主機。由于改變了IP源地址艘绍,在重新封裝數據包時候必須重新計算校驗和赤拒,網絡層以上的只要涉及到IP地址的頭部校驗和都要重新計算。
Basic NAT要維護一個無端口號NAT表诱鞠,結構如下:
內網IP | 外網IP |
---|---|
192.168.1.155 | 219.152.168.222 |
192.168.1.159 | 219.152.168.223 |
192.168.1.151 | 219.152.168.224 |
2.2挎挖、網絡地址端口轉換(NAPT)
這種方式支持端口的映射,并允許多臺主機共享一個公網IP地址航夺。NAPT分為四種類型蕉朵,具體工作流程如下:
image.png
2.2.1、完全圓錐型NAT(Full cone NAT)
- 初始狀態(tài)時阳掐,Client與Server1始衅、Client與Server2都沒有通訊過。
- 當Client通過NAT向Server1發(fā)送一個packet后缭保,NAT會生成如下一行映射汛闸。
Client主機地址:端口 | NAT公網地址:端口 |
---|---|
192.168.1.5:5000 | 210.21.12.140:8000 |
- 在全錐型網絡下,后續(xù)當Server1要發(fā)送數據到Client時艺骂,Server1首先將數據送到NAT(210.21.12.140:8000)诸老,NAT接收到該報文,會將該報文轉發(fā)給Client(192.168.1.5:5000)钳恕。
- 在全錐型網絡下别伏,Server2要發(fā)送數據給Client,Server2也是需要先將數據發(fā)送到NAT(210.21.12.140:8000)忧额,NAT接收到該報文畸肆,會將該報文轉發(fā)給Client(192.168.1.5:5000)。因為NAT上已經有了192.168.1.5:5000到210.21.12.140:8000的映射宙址。
2.2.2、受限圓錐型NAT(Address-Restricted cone NAT)
- 初始狀態(tài)時调卑,Client與Server1抡砂、Client與Server2都沒有通訊過。
- 當Client通過NAT向Server1發(fā)送一個packet后恬涧,NAT中會生成如下一行映射(注意注益,這里增加了一項IP地址的限制)。
Client主機地址:端口 | NAT公網地址:端口 | Server主機地址 |
---|---|---|
192.168.1.5::5000 | 210.21.12.140:8000 | 210.15.27.166 |
- 在受限圓錐型NAT下溯捆,Server1要發(fā)送數據到Client時丑搔,Server1首先將數據送到NAT(210.21.12.140:8000)厦瓢,NAT接收到該報文,會將該報文轉發(fā)給Client(192.168.1.5:5000)啤月。
- 并且Server1主機的任何端口號數據煮仇,都可以將數據送到NAT(210.21.12.140:8000),NAT都會將該報文轉給Client(192.168.1.5:5000)谎仲。
- 但是Server2主機無法與Client主機進行通訊浙垫。因為Client從來沒有和Server2通信過,NAT將拒絕Server2試圖與Client連接的動作郑诺。
2.2.3夹姥、端口受限圓錐型NAT(Port-Restricted cone NAT)
- 初始狀態(tài)時,Client與Server1辙诞、Client與Server2都沒有通訊過辙售。
- 當Client通過NAT向Server1發(fā)送一個packet后,NAT中會生成如下一行映射(注意飞涂,這里增加了IP+port限制)旦部。
Client主機地址:端口 | NAT公網地址:端口 | Server主機地址:端口 |
---|---|---|
192.168.1.5::5000 | 210.21.12.140:8000 | 210.15.27.166:80 |
- 在端口受限圓錐型NAT下,Server2無法與Client通信封拧,因為Client從來沒有和Server2通信過志鹃。
- 并且Server1也只能用它的210.15.27.166:80與Client的192.168.1.5:5000通信,因為Client也從來沒有和Server1的其他端口通信過泽西。
家用路由器大部分都屬于端口受限圓錐型NAT曹铃。
2.2.4、對稱NAT(Symmetric NAT)
- 初始狀態(tài)時捧杉,Client與Server1陕见、Client與Server2都沒有通訊過。
- 當Client通過NAT向Server1發(fā)送一個packet后味抖,NAT中會生成如下一行映射
Client主機地址:端口 | NAT公網地址:端口 | Server主機地址:端口 |
---|---|---|
192.168.1.5::5000 | 210.21.12.140:8000 | 210.15.27.166:80 |
- 接下來Client要使用相同的端口和Server2通信评甜,將會在NAT中生成如下映射表。
Client主機地址:端口 | NAT公網地址:端口 | Server主機地址:端口 |
---|---|---|
192.168.1.5::5000 | 210.21.12.140:8000 | 210.15.27.166:80 |
192.168.1.5::5000 | 210.21.12.140:8001 | 210.15.27.140:80 |
- Server1只能用它的210.15.27.166:80通過NAT的 210.21.12.140:8000與Client的192.168.1.5:5000通信仔涩。
- Server2也只能用它的210.15.27.140:80通過NAT的210.21.12.140:8001與Client的192.168.1.5:5000通信忍坷,
- Server1或者Server2的其他端口則均不能和Client的192.168.1.5:5000通信。