IP 位址在網路層為每個網路介面提供全球或區域唯一的邏輯識別碼,搭配子網路遮罩與 CIDR 前置碼劃分網路與主機範圍。 任何跨主機通訊,都依賴這套定址機制來決定封包應該留在本地廣播網域內,還是交由閘道轉送到外部網路。
本文接續封包交換與網路分層模型,並為後續的路由、轉送與封包生命週期提供定址基礎;在雲端環境的實作可對照VPC 與資源連線。
IPv4 位址結構與點分十進位
IPv4 位址由 32 個二進位位元(bits) 組成,總定址空間約為 $2^{32} \approx 42.9$ 億個位址。 為了人類閱讀方便,通常將 32 個位元切分為 4 個 8 位元組(octet),每個 octet 轉換為 0 到 255 的十進位數字,以句點隔開,稱為點分十進位(Dotted-Decimal Notation):
二進位: 11000000 . 10101000 . 00000001 . 00000001
十進位: 192 . 168 . 1 . 1
每個 IP 位址本質上由兩部分組成:
- 網路號(Network ID):識別該介面所屬的特定子網路(Subnet)。同一個子網路內的所有主機具有相同的網路號。
- 主機號(Host ID):識別該子網路內的特定主機介面。
歷史上的分類定址(Classful Addressing)
在 1980 年代初期(RFC 791),IP 位址依據開頭的二進位前綴被硬性劃分為 A、B、C、D、E 五種類別:
- Class A(前綴
0,/8):前 8 位元為網路號,後 24 位元為主機號。每個 Class A 網段可容納約 1,677 萬台主機。 - Class B(前綴
10,/16):前 16 位元為網路號,後 16 位元為主機號。每個 Class B 網段可容納 65,534 台主機。 - Class C(前綴
110,/24):前 24 位元為網路號,後 8 位元為主機號。每個 Class C 網段僅能容納 254 台主機。 - Class D(前綴
1110):用於多播(Multicast)。 - Class E(前綴
1111):保留實驗用途。
這種剛性劃分在網際網路快速膨脹後產生了極為嚴重的浪費:一個擁有 500 台電腦的公司申請 Class C 不夠用,申請 Class B 卻浪費了超過 65,000 個位址。 這導致全網路由表急遽膨脹與 IPv4 位址提早耗盡,因此分類定址早已在 1993 年被全面淘汰。
CIDR 與子網路遮罩
為了解決分類定址的缺陷,IETF 提出了 CIDR(Classless Inter-Domain Routing,無類別域間路由) 與子網路遮罩(Subnet Mask)技術(定義於 RFC 4632)。
子網路遮罩運算
子網路遮罩同樣是一個 32 位元的數值,其規則是:對應網路號的位元全為 1,對應主機號的位元全為 0。 主機或路由器透過將「目標 IP 位址」與「子網路遮罩」進行二進位按位與(Bitwise AND)運算,即可精準萃取出該位址所屬的網路號:
IP 位址: 192.168.1.130 -> 11000000.10101000.00000001.10000010
子網路遮罩: 255.255.255.0 -> 11111111.11111111.11111111.00000000
-------------------------------------------------------------------
AND 結果: 192.168.1.0 -> 11000000.10101000.00000001.00000000 (網路位址)
CIDR 斜線記法
在 CIDR 標記法中,直接在 IP 位址後加上斜線與遮罩中連續「1」的個數,稱為前置碼長度(Prefix Length)。
例如 192.168.1.0/24 代表前 24 位元是網路號,後 8 位元為主機號。
| CIDR 標記 | 對應子網路遮罩 | 主機位元數 | 可用主機位址數 | 典型用途 |
|---|---|---|---|---|
/8 | 255.0.0.0 | 24 | $2^{24} - 2 = 16,777,214$ | 超大型骨幹網路、私有位址區段 |
/16 | 255.255.0.0 | 16 | $2^{16} - 2 = 65,534$ | 大型企業網路、雲端 VPC 預設網段 |
/24 | 255.255.255.0 | 8 | $2^8 - 2 = 254$ | 標準辦公室、家庭區域網路、雲端子網路 |
/28 | 255.255.255.240 | 4 | $2^4 - 2 = 14$ | 小型伺服器叢集、公網獨立服務區 |
/30 | 255.255.255.252 | 2 | $2^2 - 2 = 2$ | 路由器與路由器之間的點對點(P2P)鏈路 |
/32 | 255.255.255.255 | 0 | 1(單一主機) | 主機回環介面(Loopback)、主機路由條目 |
兩個保留位址:網路位址與廣播位址
在任何一個標準的 IPv4 子網段內,主機位元不可全為 0 或全為 1:
- 主機位元全為 0:代表網路本體(Network Address),用於路由表識別整個網段,不可指派給實體網卡。
- 主機位元全為 1:代表該網段的定向廣播位址(Directed Broadcast Address)。任何發送到此位址的封包會被子網路內的所有主機接收處理。 因此,一個長度為 $n$ 的主機號,可用主機位址總數為 $2^n - 2$ 個。(註:AWS 等雲端 VPC 額外保留了網路後的前 3 個與最後 1 個位址作為內部 DNS、閘道等用途,每個子網段保留 5 個位址)。
私有 IP 與特殊用途位址(RFC 1918)
為減緩公網 IP 耗盡並增強內部網路安全,IETF 在 RFC 1918 中保留了三個專屬私有網段(Private IP Ranges)。 這些位址不會在全網公共路由表中傳遞,可供全球所有內部網路重複自由使用:
10.0.0.0/8(10.0.0.0~10.255.255.255):共 16,777,216 個位址,常用於大型資料中心與跨國企業內部網路。172.16.0.0/12(172.16.0.0~172.31.255.255):共 1,048,576 個位址,常作為雲端環境與中型網路網段。192.168.0.0/16(192.168.0.0~192.168.255.255):共 65,536 個位址,最常見於家庭 Wi-Fi 路由器與小型辦公室。
其他特殊保留位址
- 回環位址(Loopback)
127.0.0.0/8:最常見是127.0.0.1(localhost)。發往此網段的封包不會離開主機本體,直接在作業系統核心網路堆疊內部迴轉,用於本機行程間通訊與除錯。 - 鏈路本地位址(Link-Local / APIPA)
169.254.0.0/16:當主機設定為自動取得 IP 但 DHCP 伺服器未回應時,作業系統隨機選取的暫時通訊位址;雲端服務亦常用特定保留位址(如 AWS Instance Metadata Service169.254.169.254)提供內部元資料服務。
IPv6 概覽與定址演進
雖然 NAT 延緩了 IPv4 的耗盡,但根本解決之道是升級到 IPv6(RFC 4291 / RFC 8200):
- 128 位元長度:擁有約 $3.4 \times 10^{38}$ 個位址,足以為地球上每顆沙子分配無數個 IP 位址。
- 十六進位標記:分為 8 組、每組 4 個十六進位字元,以冒號分隔,例如
2001:0db8:85a3:0000:0000:8a2e:0370:7334。連續的零可簡寫為雙冒號::(全位址僅能出現一次)。 - 取消廣播(Broadcast):改以多播(Multicast)與任播(Anycast)取代,降低整個廣播網域內所有主機頻繁被無關訊框中斷核心的開銷。
- 不再強制需要 NAT:每台終端設備皆可直接擁有全球單播位址(GUA),重現端到端通訊架構,並由邊界防火牆掌控存取權限。
相關主題與參考來源
- 封包交換與網路分層模型:理解網路層與資料鏈結層的分工定位。
- 路由、轉送與封包生命週期:探討主機如何使用子網路遮罩進行本機/外網判斷與查表轉送。
- VPC 與資源連線:對照雲端虛擬私有網路的 CIDR 劃分與路由實務。
- RFC 4632 - Classless Inter-domain Routing (CIDR):CIDR 規格與位址聚合標準。
- RFC 1918 - Address Allocation for Private Internets:網際網路私有位址指派規範。