搜尋文件

輸入關鍵字,搜尋標題與正文。

    電腦網路文件 02/16

    IP 位址、子網路遮罩與 CIDR

    本文提要

    IP 位址在網路層為每個網路介面提供全球或區域唯一的邏輯識別碼,搭配子網路遮罩與 CIDR 前置碼劃分網路與主機範圍。 任何跨主機通訊,都依賴這套定址機制來決定封包應該留在本地廣播網域內,還是交由閘道轉送到外部網路。

    18px · 寬鬆行距

    閱讀設定

    排版預覽 · 示範文字(可捲動)

    檔案與目錄

    Linux 以一棵從根目錄 / 開始的樹狀結構組織檔案。目錄用來整理檔案,也可以包含其他目錄。

    pwd
    ls -la /home
    18px

    16、18、20、22px;隨瀏覽器文字大小縮放。

    欄寬套用於背景文章;此處預覽字級與行距。手機正文自動配合螢幕。

    文件與本文目錄
    本主題文件

    IP 位址在網路層為每個網路介面提供全球或區域唯一的邏輯識別碼,搭配子網路遮罩與 CIDR 前置碼劃分網路與主機範圍。 任何跨主機通訊,都依賴這套定址機制來決定封包應該留在本地廣播網域內,還是交由閘道轉送到外部網路。

    本文接續封包交換與網路分層模型,並為後續的路由、轉送與封包生命週期提供定址基礎;在雲端環境的實作可對照VPC 與資源連線。

    IPv4 位址結構與點分十進位

    IPv4 位址由 32 個二進位位元(bits) 組成,總定址空間約為 $2^{32} \approx 42.9$ 億個位址。 為了人類閱讀方便,通常將 32 個位元切分為 4 個 8 位元組(octet),每個 octet 轉換為 0 到 255 的十進位數字,以句點隔開,稱為點分十進位(Dotted-Decimal Notation):

    TEXT
    二進位: 11000000 . 10101000 . 00000001 . 00000001
    十進位:   192    .   168    .    1     .    1
    

    每個 IP 位址本質上由兩部分組成:

    1. 網路號(Network ID):識別該介面所屬的特定子網路(Subnet)。同一個子網路內的所有主機具有相同的網路號。
    2. 主機號(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)運算,即可精準萃取出該位址所屬的網路號:

    TEXT
    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 位元為主機號。

    表格・5 欄 6 列
    CIDR 標記對應子網路遮罩主機位元數可用主機位址數典型用途
    /8255.0.0.024$2^{24} - 2 = 16,777,214$超大型骨幹網路、私有位址區段
    /16255.255.0.016$2^{16} - 2 = 65,534$大型企業網路、雲端 VPC 預設網段
    /24255.255.255.08$2^8 - 2 = 254$標準辦公室、家庭區域網路、雲端子網路
    /28255.255.255.2404$2^4 - 2 = 14$小型伺服器叢集、公網獨立服務區
    /30255.255.255.2522$2^2 - 2 = 2$路由器與路由器之間的點對點(P2P)鏈路
    /32255.255.255.25501(單一主機)主機回環介面(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)。 這些位址不會在全網公共路由表中傳遞,可供全球所有內部網路重複自由使用:

    1. 10.0.0.0/8(10.0.0.0 ~ 10.255.255.255):共 16,777,216 個位址,常用於大型資料中心與跨國企業內部網路。
    2. 172.16.0.0/12(172.16.0.0 ~ 172.31.255.255):共 1,048,576 個位址,常作為雲端環境與中型網路網段。
    3. 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 Service 169.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),重現端到端通訊架構,並由邊界防火牆掌控存取權限。

    相關主題與參考來源