iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
自我挑戰組

網路通訊隨意聊系列 第 7

NAT(一),讓你 IP 位置用不完的 NAT 是怎麼做到的?

  • 分享至 

  • xImage
  •  

你是否有想過,一個長度只有 32 位元的 IPv4 位置,計算下來約莫只能提供 42 億個位置,早已經少於世界人口總數,無法讓人人皆有了。

但是每個連上網際網路的裝置,都需要一個 IP 位置怎麼辦?

稀缺的 IP 位置

根據一些統計資料,在 2022 年 5 月時,想擁有一個 IPv4 位置大約要 50 美元,折合新台幣 1500 元左右。就連最大的雲端服務供應商 AWS,都宣布在 2024 年會開始對每個 IPv4 位置收取每月大約 100 元新台幣的租金。

雖然對於大部分的使用者來說,除非有建立伺服器相關服務的需求,似乎也沒有必要一個公開、固定的 IP 位置。那麼當我們下載網頁時,回傳的封包要怎麼被收到呢?

封包怎麼被轉送

在正式談及 NAT 之前,我們來看看一個簡單的小例子回顧封包傳輸的路徑。

假設你有一台電腦,有個 Public IP Address 1.2.3.4,當你到 google.com 瀏覽時,會和網頁伺服器尋求下載一份網頁文件。由於你的 IP 位置是公開的,回傳的網頁很容易就能被你收到了。

請求(Request)及回應(Response)
*請求(Request)及回應(Response)

我們知道在你的電腦和網頁伺服器中間,其實是經由許多 Router 在幫你轉送資料的,所以當伺服器回覆你所需的網頁時,更精確一點的路徑其實是長這個樣子的。

封包傳送路徑
*封包傳送路徑

然而,由於剛剛所提到 IPv4 位置枯竭的問題,不是每一台設備都有一個公開的 IP 位置的。常見的情況是,當你申請上網服務時,你的網路服務供應商(ISP)可能會分配一個公開 IP 位置,但有可能是動態的(意謂著可能隔一段時間、數據機重開時會被更換),也或許是虛擬的。

不論是什麼形式,你的所有設備如果都透過這台數據機上網的話,你最多就只有一組 Public IP 位置。如果此時有多台設備同時上網的話怎麼辦?這時 NAT 這項技術就派上用場了!

NAT

何謂 NAT?全名為 Network Address Translation,中文翻譯成「網路位置轉譯」,顧名思義就是將 IP 位置做個轉換的技術。

我們且看以下例子:

當一個 Public IP 位置被分配給我們,我們的路由器會維護一份 NAPT 的表格,對應內部及外部的 IP 位置加上連接埠,這也是為何會 NAT 加上一個 P 的緣故,這裡的 P 指的就是 Port(連接埠)。

NAPT
*NAPT

所以當我們內網中有個 IP 位置為 192.168.1.2 的電腦送了一個請求到 google.com 時,這台電腦會開啟一個 Port,如 5566,等待 google.com 的回傳資料。

此時路由器就會將此 192.168.1.2:5566 的組合轉換成一個 Public IP + Port 的組合 1.2.3.4:9200,然後讓 google.com 知道回傳資料要傳到這邊。最後收到資料時再根據同樣的這張表反查,知道目的地為 1.2.3.4:9200 其實就是我們這台電腦 192.168.1.2:5566。

這樣子就算內網有多台設備,也能根據不同的 Public IP 位置加上不同的 Port 反查回是哪台設備的什麼請求。

不過,解決了 IP 位置有限問題的 NAT,其實也衍伸出不一樣的問題,我們下一講接著聊。

參考資料

  1. Wiki - IPv4 位置枯竭

  2. CircleID - Recent IPv4 Pricing Trends – May 2022

  3. Wiki - NAT


上一篇
防火牆,守護你的第一道防線
下一篇
NAT(二),穿越 NAT 的牆,淺談 ngrok 及 Port Forwarding
系列文
網路通訊隨意聊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言