2026 年 05 月 05 日

CH8 — IP 協定

IPv4 IPv6 子網路 CIDR DHCP DNS NAT

📋 大綱

2IPv4 簡介
3IP 位址分類(A/B/C/D/E)
4網路遮罩(Network Mask)
5子網路規劃(Subnetting)
6CIDR 無分類網際尋徑
7保留位址(私有 IP / NAT)
8DHCP 動態主機設定
9DNS 網域名稱系統
10IP 協定標頭
11IP 選擇項
12佇列管理(Scheduling / Buffer)
13–15IPv6 簡介與位址結構
16–17IPv6 標頭與結語

📌 2|IPv4 簡介 IPv4

IP 位址版本演進
  • IPv4(第四版):目前主要版本,盡力傳送(Best Effort)、非連接導向(Connectionless)
  • IPv5(第五版):實驗協定,連接導向,未廣泛部署
  • IPv6(IPng;IP Next Generation):下一取代版本
位址數量
IPv4 vs IPv6
位元數可用位址數表示法
IPv432 bits≈ 43 億(2³²)140.134.10.1
IPv6128 bits≈ 3.4 × 10³⁸2002:8C6E:C7FA::9E3
💡 為何需要 IPv6?

43 億看起來很多,但 IPv4 位址於 2011 年 2 月已正式分配完畢。IoT 時代:手機、家電、水電錶、紅綠燈、貨品包裝都需要 IP。IPv6 的 2¹²⁸ ≈ 340 兆兆兆個位址,每平方公尺約 665×10²⁴ 個。

位址分配機構:ICANN
Internet Corporation for Assigned Names and Numbers — 負責分配網路位元(Network bits)給全球各區域。

📌 3|IP 位址分類(A / B / C / D / E)

A
0 ~ 127
16,777,214 主機
單點傳播
B
128 ~ 191
65,534 主機
單點傳播
C
192 ~ 223
254 主機
單點傳播
D
224 ~ 239
群播
E
240 ~ 255
實驗預留
如何用首碼快速判斷類別?
0bit
0A
10B
110C
1110D
1111E
  • A 類:第一位元為 0 → 範圍 0~127
  • B 類:前兩位元為 10 → 範圍 128~191
  • C 類:前三位元為 110 → 範圍 192~223
  • D 類:前四位元為 1110 → 群播
  • E 類:前四位元為 1111 → 實驗預留
網域位址 vs 廣播位址
  • 網域位址(Network Address):主機位元全為 0,該網段第一個位址
  • 廣播位址(Broadcast Address):主機位元全為 1,該網段最後一個位址
類別網域位址廣播位址
A 類X.0.0.0X.255.255.255
B 類X.Y.0.0X.Y.255.255
C 類X.Y.Z.0X.Y.Z.255
💡 127.0.0.1 不是 A 類?

127.x.x.x 明明首位元是 127(≤127),但它是迴路位址(Loopback),不屬於任何一般分類。這個範圍保留作本機測試用,資料不會離開本機。127.0.0.1 是最常見的迴路測試位址。

📌 4|網路遮罩(Network Mask)

什麼是網路遮罩?
  • 用途:遮掉主機位元,區分網路位元與主機位元
  • 格式:網路位元 = 1,主機位元 = 0
  • 排列方式:一連串的 1 接續一連串的 0(不交錯)
  • 常以 /n 語法表示(如 210.134.56.0/24),n = 遮罩值為 1 的位元數
預設遮罩
類別遮罩表示/n
A 類(Class A)255.0.0.0/8
B 類(Class B)255.255.0.0/16
C 類(Class C)255.255.255.0/24

如何判斷兩台主機是否同網域?

將 IP 位址與網路遮罩做 AND 運算,結果相同 → 同一網域,可直接通訊。

例題 1 主機 1:140.134.36.19
IP 140.134.36.19
AND 255.255.255.0
遮罩
=
結果 140.134.36.0 → 網域 A
例題 2 主機 2:140.134.36.254
IP 140.134.36.254
AND 255.255.255.0
遮罩
=
結果 140.134.36.0 → 網域 A ✅(兩台同網域,可直接通訊)
例題 3 主機 3:140.134.78.19
IP 140.134.78.19
AND 255.255.255.0
遮罩
=
結果 140.134.78.0 → 網域 B ✗(不同網域,需透過路由器)
💡 為何遮罩要用連續的 1 再連續的 0?

網路遮罩的功能是「把 IP 切成兩段」:前面是網路部分,後面是主機部分。如果 1 和 0 交錯,就無法明確切割。例如 255.255.192.0(/18)= 11111111.11111111.11000000.00000000,前面的 18 位元是網路位元,後面 14 位元是主機位元。

📌 5|子網路規劃(Subnetting)

核心公式
  • 子網路數量 = 2ⁿ(n = 借位的位元數)
  • 每子網路主機數 = 2ᵐ - 2(m = 借位後剩餘主機位元數,扣掉網域位址與廣播位址)
範例
B 類網路借 3 位元作子網路
借 3 位元 → 2³ = 8 個子網路,每子網路 2¹³ - 2 = 8,190 個主機
子網路遮罩:255.255.224.0(/19)

B 類子網路切割表(借 3 位元)

子網路子網路位元子網域位址廣播位址可用 IP 範圍
#1000140.134.0.0140.134.31.255140.134.0.1 ~ 31.254
#2001140.134.32.0140.134.63.255140.134.32.1 ~ 63.254
#3010140.134.64.0140.134.95.255140.134.64.1 ~ 95.254
#4011140.134.96.0140.134.127.255140.134.96.1 ~ 127.254
#5100140.134.128.0140.134.159.255140.134.128.1 ~ 159.254
#6101140.134.160.0140.134.191.255140.134.160.1 ~ 191.254
#7110140.134.192.0140.134.223.255140.134.192.1 ~ 223.254
#8111140.134.224.0140.134.255.255140.134.224.1 ~ 255.254

子網路遮罩速查表(B 類借位)

借位元數子網路遮罩/n子網路數每網路主機數
1255.255.128.0/17232,766
2255.255.192.0/18416,382
3255.255.224.0/1988,190
4255.255.240.0/20164,094
5255.255.248.0/21322,046
6255.255.252.0/22641,022
7255.255.254.0/23128510
8255.255.255.0/24256254
9255.255.255.128/25512126
10255.255.255.192/261,02462
11255.255.255.224/272,04830
12255.255.255.240/284,09614
13255.255.255.248/298,1926
14255.255.255.252/3016,3842
15–16不合用
💡 /30 為何只剩 2 個可用 IP?

一個 /30 網段共有 4 個 IP(如 192.168.1.0/30):192.168.1.0 是網域位址、192.168.1.3 是廣播位址,兩者都不能給主機用,所以只剩 192.168.1.1192.168.1.2 兩個可用。這常用在點對點連結(如兩台路由器直連)。

📌 6|CIDR 無分類網際尋徑

CIDR(Classless Inter-Domain Routing)
  • IETF 提出,打破傳統 A、B、C 類位址的分類限制
  • 網域規劃完全依照網路遮罩(Network Mask)定義
  • 小網路可整合成超網(Supernet),減少路由器數量與路由表負擔
傳統分類的問題
一個需要 300 個 IP 的組織:申請 C 類(254 個)不夠,申請 B 類(65,534 個)太浪費。
CIDR 讓組織可申請「任意大小」的位址區塊,彈性配合實際需求。
整合原則
超網整合(Supernet)
位址區塊必須連續;從區塊界限開端規劃,避免位址衝突。

整合範例:四個機構分配

機構需求分配說明
1,000 個210.100.0.0/224 個 C 類(254×4)
2,000 個210.100.8.0/218 個 C 類,從界限 8 開始
200 個210.100.4.0/241 個 C 類
500 個210.100.6.0/232 個 C 類

📌 7|保留位址

IP 網域保留目的
0.0.0.0/8本網域("This" Network)
10.0.0.0/8A 類私人使用(Private-Use Networks)
127.0.0.0/8迴路測試(Loopback Test)
169.254.0.0/16鏈結區域(Link Local)— DHCP 無回應時自動分配
172.16.0.0/12B 類私人使用(Private-Use Networks)
192.168.0.0/16C 類私人使用(Private-Use Networks)
192.0.2.0/24測試網路(Test-Net)
255.255.255.255區域廣播位址(定向廣播)
NAT
私有 IP 與 NAT
企業內部使用私有 IP(10.x、172.16.x、192.168.x),透過 NAT(Network Address Translation)路由器以一個正規 IP 對外通訊,節省 IP 位址數量。
類別私有 IP 範圍適用規模
A 類10.0.0.0/8大型網路(最多 16,777,214 部主機)
B 類172.16.0.0/12中型網路(最多 1,048,574 部主機)
C 類192.168.0.0/16小型網路(最多 65,534 部主機)
Loopback 測試ping 127.0.0.1 檢測本機 TCP/IP 設定是否正確。訊號只在本機進行,不會傳到網路。
💡 169.254.x.x 是怎麼來的?

當 DHCP 用戶端無法從 DHCP 伺服器取得 IP 時,Windows 會自動分配一個 Link Local 位址(APIPA)。這是一種自我保護機制,讓區域網路內的裝置即使沒有 DHCP 也能通訊(只在同一網段內)。

📌 8|DHCP 動態主機設定協定

DHCP(Dynamic Host Configuration Protocol)
  • 動態分配 IP 位址,只有連線時才向 DHCP 伺服器取得 IP
  • 有效節省 IP 位址數量,避免衝突
  • 可設定使用期限,避免長期佔用
應用情境
  • 電腦教室:省去一一設定與管理
  • 居家上網:多台設備共用一個對外 IP
  • 結合私有 IP:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16

DHCP 取得 IP 的流程(四步握手)

1
DHCP Discover — 用戶端廣播「我在找 DHCP 伺服器」
使用 0.0.0.0(尚未有 IP),目標 255.255.255.255
2
DHCP Offer — DHCP 伺服器回應「我有 IP 可以給你」
包含提議的 IP、租約期限、子網路遮罩等
3
DHCP Request — 用戶端選擇(若有多個伺服器回應)
廣播告知選定的伺服器,其他伺服器收回提議
4
DHCP Ack — 伺服器確認「好,這些設定現在是你的」
正式發放 IP、DHCP server 記錄已分配
💡 DHCP 租約與更新

DHCP 分配的 IP 有「租約期限」(如 8 天)。用戶端在期限過半時會嘗試更新(Request 送给原伺服器)。若原伺服器不可達,則在期限到達前廣播重新 Discover。這讓 IP 位址可以被回收再用。

📌 9|DNS 網域名稱系統

DNS(Domain Name System)
  • 數字 IP 位址不容易記憶,DNS 提供名稱 ↔ IP 位址的轉換
  • 1983 年 Paul Mockapetris 經由 RFC 882 提出
  • 全球性分散式資料庫,分層管理
查詢類型
類型說明
正向名稱查詢由網域名稱查出 IP 位址
反向名稱查詢由 IP 位址查得網域名稱(需向 in-addr.arpa 查詢)

FQDN 結構(Fully Qualified Domain Name)

www . flag . com . tw . (根網域) 主機名稱 ── 網域名稱各層 ── TLD ── ccTLD ── Root

TLD 類型

類型說明範例
gTLD(一般頂層網域)以組織性質區分.com . edu . gov . org . net
ccTLD(國家頂層網域)以國家/地區區分.tw . cn . jp . kr . us . uk
中文網域2008 年後開放.台灣 . 中國 . 日本

DNS 遞迴查詢流程

用戶端
輸入 www.example.com
本機 DNS
檢查快取 / 無則轉送
根伺服器
全球 13 組,回覆 .com 的 TLD
.com TLD
回覆 example.com 的 NS
example.com
權威 Name Server,回覆 IP

DNS 伺服器角色

角色說明
ResolverDNS Client,提出名稱解析請求
Name ServerDNS Server,接受要求,回覆答案
根伺服器記錄各 TLD 伺服器 IP,全球 13 組(A–M)
💡 DNS 快取與 TTL

DNS 記錄有 TTL(存活時間),告訴回應者「這筆記錄可以快取多久」。TTL 越長,伺服器壓力越小但更新越慢;TTL 越短,更新快但上游負擔大。修改 DNS 後需要等 TTL 過期新資料才會完全生效。

📌 10|IP 協定標頭

IPv4 Header(20~60 Bytes)
Ver
4b
IHL
4b
TOS
8b
Total Length
16b
ID
16b
Flags
3b
Fragment Offset
13b
TTL
8b
Protocol
8b
Header Checksum
16b
Source IP
32b
Dest IP
32b
20 Bytes(無 Options)~ 60 Bytes(最大 Options)
1
Ver(Version)— 4 位元
IPv4 = 4(0100),IPv6 = 6(0110)
2
IHL(Internet Header Length)— 4 位元
以 32 位元為單位。例:160 位元 → 5 單位 → 欄位值 = 5
3
TOS / DS(服務類型)— 8 位元
TOS:Precedence(優先權)+ D(Delay)+ T(Throughput)+ R(Reliability)+ C(Cost)
DS:DSCP(差異服務代碼點)+ ECN(明確擁塞通知)
4
TL(Total Length)— 16 位元
封包總長度(含 IP 標頭 + 資料),最長 65,535 位元組
5–7
ID / FLAGS / FO(分片欄位)
ID:唯一辨識碼,重組時判斷用
FLAGS:DF(不可分割)= 1 / MF(更多分片)= 1 或 0
FO:分片位移,以 8 位元組為單位計算
8
TTL(存活時間)— 8 位元
Hop Count(跳數計數),每經過一個路由器就遞減 1。
數值為 0 時封包被丟棄,並回傳 ICMP Time Exceeded 訊息。
原始設計以秒為單位,但實際上所有路由器都會減 1,所以現在就是跳數。
9
PROT(Protocol)— 8 位元
號碼協定全名
1ICMPInternet Control Message Protocol
6TCPTransmission Control Protocol
17UDPUser Datagram Protocol
41IPv6Internet Protocol version 6(封裝)
47GREGeneric Routing Encapsulation
50/51ESP/AH安全性標頭(IPsec)
89OSPFOpen Shortest Path First
10
HC(Header Checksum)— 16 位元
僅檢查 IP 標頭,不含資料。1 補數加總演算法(每個路由器都會重新計算,因為 TTL 改變了)
11–12
SA / DA(IP 位址)— 各 32 位元
SA:來源端主機 IP 位址
DA:目的端主機 IP 位址
選項
OPT(Options)— 可變長度(最多 40 Bytes)
記錄路徑(Record Route)、源路徑(Source Routing)、時間戳記(Timestamp)、安全標記
💡 為何 TTL 每次減 1 而不是減實際秒數?

原本 TTL 的設計是「以秒為單位」,每經過一個路由器就減去該路由器耗費的秒數。但路由器廠商發現很難準確測量「耗費的秒數」,所以多數設備都是每跳直接減 1。因此 TTL 的實際意義就是「允許經過的最大路由器數量」。

📌 11|IP 選擇項

選項碼結構(8 位元)
欄位位元數說明
複製(Copy)11 = 複製到所有分片,0 = 只複製到第一分片
類型(Class)20=網路控制,2=除錯與量測
選擇項編號50~2(見下方)

常見選擇項

選項名稱說明
記錄路徑Record Route追蹤封包行經的路徑(每個路由器填入自己 IP)
鬆散源路徑Loose Source Routing指定大致路徑,允許中間其他節點
嚴格源路徑Strict Source Routing精確指定每一個節點,若無法直連則失敗
時間戳記Timestamp記錄路徑節點 IP 與時間
💡 為何選擇項很少被使用?

Record Route 和 Source Routing 涉及安全考量(讓攻擊者可以窺探路徑),多數路由器預設會忽略這些選項。另外,選擇項會讓路由器處理速度變慢,IMH 值變大,實際網路環境中很少使用。

📌 12|佇列管理(Queue Management)

為何需要佇列管理?

當封包抵達路由器的速度 > 輸出介面能發送的速度,就會在記憶體緩衝區(Buffer)中等待,這就是佇列(Queue)

  • Scheduling(排程):決定多個封包的發送順序
  • Buffer Management(緩衝管理):決定緩衝區滿了時要丟誰的包

Scheduling(封包排程)

PQ Priority Queue
⚠ 餓死風險
輸入佇列
VoIP
HTTP
FTP
VoIP
HTTP
▼ 高優先先出
輸出順序
VoIP
VoIP
VoIP
VoIP
...
HTTP、FTP 長期等待 → Starvation
RR Round Robin
✓ 公平輪流
輸入佇列
VoIP
HTTP
FTP
VoIP
HTTP
▼ 輪流各發一個
輸出順序
VoIP
HTTP
FTP
VoIP
HTTP
FTP
每個佇列輪流取得發送權,頻寬均分
WFQ Weighted Fair Queue
⚖ 加權平衡
輸入佇列
VoIP ×3
HTTP ×2
FTP ×1
▼ 依權重分配
輸出順序
VoIP
VoIP
VoIP
HTTP
HTTP
FTP
VoIP 權重高 → 發送次數多;FTP 不會餓死

Scheduling 演算法比較

演算法運作方式優點缺點
FIFO
First In First Out
依到達順序先到先出 簡單、硬體易實作 無法區分服務品質,所有封包一視同仁
Priority Queue (PQ)
優先權佇列
封包依優先權分組,高優先先發送 重要流量(如 VoIP)保證優先 低優先封包可能長期被餓死(Starvation)
Round Robin (RR)
輪流服務
每個佇列輪流發送一個封包 各流量類別公平取得頻寬 無法區分封包大小,小封包類別吃虧
Weighted Fair Queue (WFQ)
加權公平佇列
依權重分配發送機會,權重高多發 兼顧公平與優先權,避免餓死 演算法複雜度較高

Buffer Management(緩衝管理)

正常狀態
封包
緩衝區
無丟包
RED 提前偵測
封包
緩衝區
隨機提前丟包
Drop Tail 滿了才丟
封包
緩衝區
全部丟棄新進封包
機制運作方式特點
Drop Tail 緩衝區滿了,直接丟棄新到的封包 最簡單;易造成全球同步(Global Synchronization)——多個 TCP 連線同時偵測到丟包、集體降速
RED
Random Early Detection
提前偵測擁塞,主動隨機丟包(不等滿) 避免 Global Synchronization;保護 TCP 流量
ECN
Explicit Congestion Notification
不丟包,改在 IP 標頭設定拥塞標記,通知來源端降速 比 RED 更溫和,保留傳輸效率;需兩端都支援
💡 為何 Buffer 太大也會有問題?

Buffer 太大時,封包在佇列中等待時間過長,會造成延遲(Latency)和抖動(Jitter)。這對即時應用(VoIP、遊戲)傷害很大。「緩衝區膨脹」(Bufferbloat)問題就是因此而生的。

📌 13|IPv6 簡介 IPv6

為何需要 IPv6?
  • IPv4 位址已接近耗盡(2³² ≈ 43 億)
  • 物聯網(IoT)時代:手機、家電、水電錶、紅綠燈、貨品都需 IP 位址
  • IPv6 位址空間:2¹²⁸ ≈ 340 兆兆兆 個位址
  • 每平方公尺 ≈ 665×10²⁴ 個位址
  • 比 IPv4 增加 2⁹⁶ 倍
IPv6 改善重點
面向改善內容
定址容量128 位元,可聚集全球單點傳播位址
安全機制更嚴謹的 IPsec,電子商務更有保障
QoS比 IPv4 更多品質化服務架構
Mobile IPv6漫遊機制大幅降低傳輸延遲

IPv6 傳播方式

類型模式說明
單點傳播Unicast(1-to-1)一對一傳送
多點群播Multicast(1-to-many)一對多,取代 IPv4 的 Broadcast
任點傳播Anycast(1-to-any)送到一群介面的其中一個即可,用於尋徑

📌 14|IPv6 位址結構

位址格式
  • 128 位元,分成 8 個區塊,每區塊 16 位元,以十六進位表示,區塊間以 : 區隔
  • 範例:2002:8C6E:C7FA:00A1:0000:0000:0000:09E3
  • 省略:前面連續的 0 → 2002:8C6E:C7FA:A1:0:0:0:9E3
  • 簡寫:連續 0 可用 :: 替代(只限一次)→ 2002:8C6E:C7FA:A1::9E3
Prefix(N) ──── Subnet ID(M) ──── IID(介面辨識碼) (IID = 128 - N - M 位元)

格式首碼(Format Prefix)

前綴用途
0000 0000保留作 IPv4 配置
001可聚集全球性單點傳播位址(主要使用)
1111 1110 0區域連結單點傳播位址(Link-Local)
1111 1110 11區域站台單點傳播位址(Site-Local,已廢除)
1111 1111多點群播位址(Multicast)

特殊 IPv6 位址

位址說明
::(0:0:0:0:0:0:0:0)任意位址,類似 IPv4 的 0.0.0.0
::1(0:0:0:0:0:0:0:1)迴路位址,類似 IPv4 的 127.0.0.1
IPv4 相容位址左邊加 96 位元 0,右邊為 IPv4 位址(例:::140.134.10.1
6to4 位址首碼 2002 + 32 位元 IPv4 + 子網路欄位 + IID
Link-Localfe80::/10,自動設定,不用 DHCP

📌 16|IPv6 標頭與延伸標頭

IPv6 Header(固定 40 Bytes)
Ver
4b
Traffic Class
8b
Flow Label
20b
Payload Length
16b
Next Header
8b
Hop Limit
8b
Source Address
128b
Dest Address
128b
固定 40 Bytes — 比 IPv4 更精簡,處理更快
IPv4
20 ~ 60 Bytes(可變)
含可變長度 Options,IHL 影響實際大小。
每個路由器幾乎都會修改 TTL,所以 Header Checksum 每次都要重新計算。
IPv6
固定 40 Bytes
無 Options,延伸標頭只在需要時才附加。
無 Header Checksum(讓上層如 TCP/UDP 負責),路由器處理更快速。

延伸標頭類型

號碼名稱用途
0Hop-by-Hop 選項標頭每個節點都需檢查(如 Jumbo Packets)
43路由(Routing)標頭指定需經過的節點(類似 IPv4 Source Routing)
44封包分片(Fragmentation)標頭分割封包(只在來源端進行)
50ESP 標頭封裝安全性加密(IPsec)
51認證(Authentication)標頭身份認證(IPsec)
58ICMPv6IPv6 使用的 ICMP(NDP、MLD)
135Mobile IPv6 標頭移動節點使用

📌 17|結語

IPv4 與 IPv6 主要差異
面向IPv4IPv6
位址空間32 位元128 位元
標頭格式可變(~20–60 位元組)固定 40 位元組
選擇項在標頭內,可變延伸標頭,按需納入
廣播有 Broadcast無,以 Multicast 取代
安全性IPsec(可選)IPsec(內建)
QoSTOS 欄位Traffic Class + Flow Label
Fragmentation路由器可分片僅來源端分片
TTLHop count(8 位元)Hop Limit(8 位元)