⚡ 站長快讀:核心重點
- 文章屬性:科技冷知識 / 規格解析
- 核心結論:路由器在封包出門時把「私有 IP + 埠號」改寫成「公開 IP + 另一個埠號」並記進一張對照表,回程封包再照表換回去,所以十台裝置共用一個公開 IP 也不會互相搞混。
- 適用對象:所有對科技好奇的人
📌 快速答案
一句話答案:NAT 位址轉換原理就是路由器在封包出門時改寫來源 IP 與埠號、記進對照表,回程再照表還原,讓整個家共用一個公開 IP。
🔍 故事的起點:公開位址早就發完了
先講一個很多人沒意識到的事實:你家那一個公開 IP,已經是很奢侈的東西了。 2011 年 2 月 3 日,代表五大區域網路註冊管理機構的 NRO 正式宣布,IANA 手上可供分配的 IPv4 位址池「完全見底」——當天 IANA 把最後的位址區塊平分給五個 RIR,從此再也沒有新的 IPv4 可以往下發。而你家裡呢?手機、筆電、平板、電視、遊戲主機、掃地機器人、兩顆監視器⋯⋯十台起跳。
位址不夠發,但每台裝置都得有位址才能講話。解法分成兩半:對內,用一組「怎麼重複用都沒關係」的私有位址——IANA 保留的 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 三段,任何組織都可以自己拿去用、不必跟任何人登記(這也是為什麼全世界的家用路由器都長得像 192.168.1.1);對外,就靠今天的主角:在家用路由器上做位址轉換。
🧪 原理拆解
NAT 其實有兩種,你家用的是第二種
規範這件事的是 RFC 3022(2001 年 1 月發布,Informational 等級),它把傳統 NAT 分成兩型:
- Basic NAT:只換 IP 位址。內網有幾台要同時上網,外面就得準備幾個公開位址。
- NAPT(Network Address Port Translation):IP 位址連同 TCP/UDP 埠號一起換,把多台裝置的 (私有 IP, 私有埠) 通通對應到 (同一個公開 IP, 各自不同的埠)。
RFC 3022 在開頭就寫明 NAPT 是為誰設計的:許多 SOHO 與遠端工作者辦公室裡有多台裝置,但 ISP 只給路由器一個 IP,NAPT 讓這些裝置能用這一個位址同時連外。你家路由器上那個叫「NAT」的選項,實際上做的幾乎都是 NAPT。
路由器怎麼知道回應要給哪一台?
答案很樸素:它有一張表,出門時寫進去、回來時查回來。
用 RFC 3022 文件裡的原始範例最清楚。內網主機 10.0.0.10 要連外部主機 138.76.29.7 的 telnet(23 埠),路由器對外的位址是 138.76.28.4:
| 方向 | 來源 | 目的地 | 路由器做的事 |
|---|---|---|---|
| 出去 | 10.0.0.10:3017 | 138.76.29.7:23 | 來源改寫成 138.76.28.4:1024,寫進對照表 |
| 回來 | 138.76.29.7:23 | 138.76.28.4:1024 | 查表,目的地改回 10.0.0.10:3017 |

表格背後有四個重點:
- 對照的單位是「位址+埠號」的組合,不是單純的位址——這正是 NAPT 和 Basic NAT 的分界。
- 綁定在第一條對外連線建立時產生,同一組 (私有 IP, 私有埠) 之後的連線沿用同一筆對應;最後一條連線結束,這筆綁定才會解除。
- 外部主機完全不知情。對 138.76.29.7 來說,它一直在跟 138.76.28.4 講話,整個轉換對兩端都是透明的。
- 改了位址就得改檢查碼。IP、TCP、UDP 的檢查碼都得跟著重算(RFC 3022 也註明一個例外:UDP 表頭檢查碼原本就是 0 時不動它),文件還特地附了一段 C 程式碼,示範怎麼用加減法快速調整。
一個公開 IP 到底能撐幾台?
關鍵在埠號這個欄位有多大。從 RFC 768(UDP 規格)的表頭圖就能看出來,來源埠與目的埠各佔 16 位元——換句話說,一個 IP 位址在每一種傳輸協定上有 65,536 個埠可以編號。
RFC 6335 進一步把這 65,536 個號碼切成三段:0–1023 是系統埠(Well Known)、1024–49151 是使用者埠(Registered),49152–65535 則是動態埠(Dynamic / Private / Ephemeral),IANA 永不指派、留給本機自由運用。光是最後這段就有 16,384 個號碼可以拿來當對照表的索引。十台裝置、每台幾十條連線,離用完還差得很遠——這就是「一個公開 IP 為什麼夠用」最直白的算術。
順帶一提一個冷門細節:ping 用的 ICMP 沒有埠號。RFC 3022 的做法是改拿 ICMP 查詢訊息裡的 identifier 欄位當索引,一樣做成對照表。至於 TCP、UDP、ICMP 查詢以外的協定,傳統 NAPT 底下的內網主機根本不允許使用。
⚠️ 代價:這份方便不是免費的
NAT 是被位址荒逼出來的權宜之計,它換來的麻煩,今天每個人都還在付:
- 外面連不進來。傳統 NAT 的連線是單向的,只能從內網往外開;要讓外部連進來,得事先把某個服務埠靜態對應到指定主機——這就是路由器設定頁上的 port forwarding。遠端桌面連不上時要檢查的那一層,原因就在這裡。
- 分片封包會壞掉。只有第一個分片帶著 TCP/UDP 埠號,後續分片沒有。當兩台內網主機同時送出分片、又剛好撞到相同的分片識別碼時,接收端無法分辨誰是誰,RFC 3022 的原話是這兩條連線都會被毀掉。
- 端到端安全被打斷。路徑上只要有 NAT,IPsec 提供的端到端安全就不能假設成立;NAT 也常常得搭配應用層閘道(ALG)才能處理 FTP 這種會把位址寫進內容裡的協定。
- 連 ISP 都在做 NAT。IPv4 發完之後,電信商改用 CGN(電信級 NAT),讓一大群用戶共用少數公開位址。IETF 為此在 RFC 6598(2012 年 4 月)保留了 100.64.0.0/10 這個「共享位址空間」專門給 CGN 使用。
最後這點的代價,RFC 6598 自己列得很清楚:主機遊戲在兩個用戶共用同一個對外位址時可能連不起來、部分影音串流效能受影響、P2P 無法作種、地理定位會定到電信商機房,以及部分銀行與社群網站對「同一個公開 IP 的同時登入數」設限——你被莫名其妙擋掉的那次,很可能就是這個原因。
💡 總結:冷知識延伸
站長我最喜歡講這一段:NAT 撐起了整個現代網際網路,但 RFC 3022 的文件等級只是「Informational」,它從來就不是網際網路標準。 它是現實逼出來的補丁,而且大家心知肚明——RFC 6598 開頭的 IESG 註記甚至特地補一句:這類權宜手段只能解短期問題,IETF 仍然堅定地推動 IPv6。
另一個常見誤會是把 NAT 當防火牆。RFC 3022 確實提到它有隱私效果(外部看不到內網主機的真實位址),但緊接著的下一段就說:正是這個特性讓追查問題變得更困難——內網有主機在攻擊別人或狂發垃圾郵件時,對外看到的都是同一個位址。它是副作用,不是資安設計,別把防火牆的工作交給它。
還有個有趣的歷史:早年 Linux 把這個功能叫做「IP masquerade」(IP 偽裝),名字比 NAT 傳神多了。而你用手機開 Wi-Fi 熱點分享網路給筆電時,原理上可以理解成同一套機制的縮小版:一邊對內發位址,一邊共用對外那一個。
❓ 常見問題
Q:我怎麼知道自己是不是被電信商 CGNAT 了?
看路由器 WAN 介面拿到的位址。落在 100.64.0.0/10 就是 RFC 6598 的共享位址空間,代表你在電信商的 CGN 後面,對外位址是跟別人共用的;落在 10、172.16–172.31、192.168 開頭的三段,則是上層還有一層自家內網設備。兩種情況下,你都沒有真正屬於自己的公開 IP。
Q:NAT 會影響連線品質嗎?
單純的網頁、影音、遊戲連線幾乎無感,真正會出事的是「需要從外面主動連進來」的應用。RFC 6598 實測列出的受影響項目就是主機遊戲互連、影音串流、P2P 作種、地理定位與同時登入數限制,這幾類共通點都是要求外部能直接找到你。
Q:有了 IPv6 是不是就不用 NAT 了?
IPv6 的位址數量沒有「省著用」的必要,不需要靠 NAT 擠位址。RFC 6598 的 IESG 註記講得很白:CGN 這類做法是短期的操作性權宜,IETF 的方向仍然是把 IPv6 部署完成。
🔗 延伸閱讀
- 0.0.0.0 跟 127.0.0.1 有什麼不同?架 Server 最容易搞混的兩個位址
- 127.0.0.1 為什麼代表自己?localhost 背後的 Loopback 設計
- Wi-Fi 卡卡慢?路由器擺放位置是關鍵!5 大黃金法則
- Wi-Fi 7 vs Wi-Fi 6 路由器怎麼選?2026 選購避坑指南
📎 參考資料來源
📖 第一級|標準組織與網路註冊機構:
- RFC 3022 — Traditional IP Network Address Translator (Traditional NAT) — 2026-09-14 查證
- RFC 6598 — IANA-Reserved IPv4 Prefix for Shared Address Space — 2026-09-14 查證
- RFC 6335 — IANA Procedures for the Management of the Service Name and Transport Protocol Port Number Registry — 2026-09-14 查證
- RFC 768 — User Datagram Protocol — 2026-09-14 查證
- NRO — Free Pool of IPv4 Address Space Depleted(2011-02-03) — 2026-09-14 查證
