CH8 — IP 協定
📋 大綱
📌 2|IPv4 簡介 IPv4
- IPv4(第四版):目前主要版本,盡力傳送(Best Effort)、非連接導向(Connectionless)
- IPv5(第五版):實驗協定,連接導向,未廣泛部署
- IPv6(IPng;IP Next Generation):下一取代版本
| 位元數 | 可用位址數 | 表示法 | |
|---|---|---|---|
| IPv4 | 32 bits | ≈ 43 億(2³²) | 140.134.10.1 |
| IPv6 | 128 bits | ≈ 3.4 × 10³⁸ | 2002:8C6E:C7FA::9E3 |
43 億看起來很多,但 IPv4 位址於 2011 年 2 月已正式分配完畢。IoT 時代:手機、家電、水電錶、紅綠燈、貨品包裝都需要 IP。IPv6 的 2¹²⁸ ≈ 340 兆兆兆個位址,每平方公尺約 665×10²⁴ 個。
Internet Corporation for Assigned Names and Numbers — 負責分配網路位元(Network bits)給全球各區域。
📌 3|IP 位址分類(A / B / C / D / E)
- A 類:第一位元為
0→ 範圍 0~127 - B 類:前兩位元為
10→ 範圍 128~191 - C 類:前三位元為
110→ 範圍 192~223 - D 類:前四位元為
1110→ 群播 - E 類:前四位元為
1111→ 實驗預留
- 網域位址(Network Address):主機位元全為 0,該網段第一個位址
- 廣播位址(Broadcast Address):主機位元全為 1,該網段最後一個位址
| 類別 | 網域位址 | 廣播位址 |
|---|---|---|
| A 類 | X.0.0.0 | X.255.255.255 |
| B 類 | X.Y.0.0 | X.Y.255.255 |
| C 類 | X.Y.Z.0 | X.Y.Z.255 |
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 運算,結果相同 → 同一網域,可直接通訊。
網路遮罩的功能是「把 IP 切成兩段」:前面是網路部分,後面是主機部分。如果 1 和 0 交錯,就無法明確切割。例如 255.255.192.0(/18)= 11111111.11111111.11000000.00000000,前面的 18 位元是網路位元,後面 14 位元是主機位元。
📌 5|子網路規劃(Subnetting)
- 子網路數量 =
2ⁿ(n = 借位的位元數) - 每子網路主機數 =
2ᵐ - 2(m = 借位後剩餘主機位元數,扣掉網域位址與廣播位址)
子網路遮罩:
255.255.224.0(/19)B 類子網路切割表(借 3 位元)
| 子網路 | 子網路位元 | 子網域位址 | 廣播位址 | 可用 IP 範圍 |
|---|---|---|---|---|
| #1 | 000 | 140.134.0.0 | 140.134.31.255 | 140.134.0.1 ~ 31.254 |
| #2 | 001 | 140.134.32.0 | 140.134.63.255 | 140.134.32.1 ~ 63.254 |
| #3 | 010 | 140.134.64.0 | 140.134.95.255 | 140.134.64.1 ~ 95.254 |
| #4 | 011 | 140.134.96.0 | 140.134.127.255 | 140.134.96.1 ~ 127.254 |
| #5 | 100 | 140.134.128.0 | 140.134.159.255 | 140.134.128.1 ~ 159.254 |
| #6 | 101 | 140.134.160.0 | 140.134.191.255 | 140.134.160.1 ~ 191.254 |
| #7 | 110 | 140.134.192.0 | 140.134.223.255 | 140.134.192.1 ~ 223.254 |
| #8 | 111 | 140.134.224.0 | 140.134.255.255 | 140.134.224.1 ~ 255.254 |
子網路遮罩速查表(B 類借位)
| 借位元數 | 子網路遮罩 | /n | 子網路數 | 每網路主機數 |
|---|---|---|---|---|
| 1 | 255.255.128.0 | /17 | 2 | 32,766 |
| 2 | 255.255.192.0 | /18 | 4 | 16,382 |
| 3 | 255.255.224.0 | /19 | 8 | 8,190 |
| 4 | 255.255.240.0 | /20 | 16 | 4,094 |
| 5 | 255.255.248.0 | /21 | 32 | 2,046 |
| 6 | 255.255.252.0 | /22 | 64 | 1,022 |
| 7 | 255.255.254.0 | /23 | 128 | 510 |
| 8 | 255.255.255.0 | /24 | 256 | 254 |
| 9 | 255.255.255.128 | /25 | 512 | 126 |
| 10 | 255.255.255.192 | /26 | 1,024 | 62 |
| 11 | 255.255.255.224 | /27 | 2,048 | 30 |
| 12 | 255.255.255.240 | /28 | 4,096 | 14 |
| 13 | 255.255.255.248 | /29 | 8,192 | 6 |
| 14 | 255.255.255.252 | /30 | 16,384 | 2 |
| 15–16 | 不合用 | — | ||
一個 /30 網段共有 4 個 IP(如 192.168.1.0/30):192.168.1.0 是網域位址、192.168.1.3 是廣播位址,兩者都不能給主機用,所以只剩 192.168.1.1 和 192.168.1.2 兩個可用。這常用在點對點連結(如兩台路由器直連)。
📌 6|CIDR 無分類網際尋徑
- 由 IETF 提出,打破傳統 A、B、C 類位址的分類限制
- 網域規劃完全依照網路遮罩(Network Mask)定義
- 小網路可整合成超網(Supernet),減少路由器數量與路由表負擔
一個需要 300 個 IP 的組織:申請 C 類(254 個)不夠,申請 B 類(65,534 個)太浪費。
CIDR 讓組織可申請「任意大小」的位址區塊,彈性配合實際需求。
整合範例:四個機構分配
| 機構 | 需求 | 分配 | 說明 |
|---|---|---|---|
| 甲 | 1,000 個 | 210.100.0.0/22 | 4 個 C 類(254×4) |
| 乙 | 2,000 個 | 210.100.8.0/21 | 8 個 C 類,從界限 8 開始 |
| 丙 | 200 個 | 210.100.4.0/24 | 1 個 C 類 |
| 丁 | 500 個 | 210.100.6.0/23 | 2 個 C 類 |
📌 7|保留位址
| IP 網域 | 保留目的 |
|---|---|
0.0.0.0/8 | 本網域("This" Network) |
10.0.0.0/8 | A 類私人使用(Private-Use Networks) |
127.0.0.0/8 | 迴路測試(Loopback Test) |
169.254.0.0/16 | 鏈結區域(Link Local)— DHCP 無回應時自動分配 |
172.16.0.0/12 | B 類私人使用(Private-Use Networks) |
192.168.0.0/16 | C 類私人使用(Private-Use Networks) |
192.0.2.0/24 | 測試網路(Test-Net) |
255.255.255.255 | 區域廣播位址(定向廣播) |
| 類別 | 私有 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 部主機) |
ping 127.0.0.1 檢測本機 TCP/IP 設定是否正確。訊號只在本機進行,不會傳到網路。
當 DHCP 用戶端無法從 DHCP 伺服器取得 IP 時,Windows 會自動分配一個 Link Local 位址(APIPA)。這是一種自我保護機制,讓區域網路內的裝置即使沒有 DHCP 也能通訊(只在同一網段內)。
📌 8|DHCP 動態主機設定協定
- 動態分配 IP 位址,只有連線時才向 DHCP 伺服器取得 IP
- 有效節省 IP 位址數量,避免衝突
- 可設定使用期限,避免長期佔用
- 電腦教室:省去一一設定與管理
- 居家上網:多台設備共用一個對外 IP
- 結合私有 IP:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
DHCP 取得 IP 的流程(四步握手)
使用 0.0.0.0(尚未有 IP),目標 255.255.255.255
包含提議的 IP、租約期限、子網路遮罩等
廣播告知選定的伺服器,其他伺服器收回提議
正式發放 IP、DHCP server 記錄已分配
DHCP 分配的 IP 有「租約期限」(如 8 天)。用戶端在期限過半時會嘗試更新(Request 送给原伺服器)。若原伺服器不可達,則在期限到達前廣播重新 Discover。這讓 IP 位址可以被回收再用。
📌 9|DNS 網域名稱系統
- 數字 IP 位址不容易記憶,DNS 提供名稱 ↔ IP 位址的轉換
- 1983 年 Paul Mockapetris 經由 RFC 882 提出
- 全球性分散式資料庫,分層管理
| 類型 | 說明 |
|---|---|
| 正向名稱查詢 | 由網域名稱查出 IP 位址 |
| 反向名稱查詢 | 由 IP 位址查得網域名稱(需向 in-addr.arpa 查詢) |
FQDN 結構(Fully Qualified Domain Name)
TLD 類型
| 類型 | 說明 | 範例 |
|---|---|---|
| gTLD(一般頂層網域) | 以組織性質區分 | .com . edu . gov . org . net |
| ccTLD(國家頂層網域) | 以國家/地區區分 | .tw . cn . jp . kr . us . uk |
| 中文網域 | 2008 年後開放 | .台灣 . 中國 . 日本 |
DNS 遞迴查詢流程
DNS 伺服器角色
| 角色 | 說明 |
|---|---|
| Resolver | DNS Client,提出名稱解析請求 |
| Name Server | DNS Server,接受要求,回覆答案 |
| 根伺服器 | 記錄各 TLD 伺服器 IP,全球 13 組(A–M) |
DNS 記錄有 TTL(存活時間),告訴回應者「這筆記錄可以快取多久」。TTL 越長,伺服器壓力越小但更新越慢;TTL 越短,更新快但上游負擔大。修改 DNS 後需要等 TTL 過期新資料才會完全生效。
📌 10|IP 協定標頭
4(0100),IPv6 = 6(0110)5DS:DSCP(差異服務代碼點)+ ECN(明確擁塞通知)
65,535 位元組FLAGS:DF(不可分割)= 1 / MF(更多分片)= 1 或 0
FO:分片位移,以 8 位元組為單位計算
數值為 0 時封包被丟棄,並回傳 ICMP Time Exceeded 訊息。
原始設計以秒為單位,但實際上所有路由器都會減 1,所以現在就是跳數。
| 號碼 | 協定 | 全名 |
|---|---|---|
| 1 | ICMP | Internet Control Message Protocol |
| 6 | TCP | Transmission Control Protocol |
| 17 | UDP | User Datagram Protocol |
| 41 | IPv6 | Internet Protocol version 6(封裝) |
| 47 | GRE | Generic Routing Encapsulation |
| 50/51 | ESP/AH | 安全性標頭(IPsec) |
| 89 | OSPF | Open Shortest Path First |
DA:目的端主機 IP 位址
原本 TTL 的設計是「以秒為單位」,每經過一個路由器就減去該路由器耗費的秒數。但路由器廠商發現很難準確測量「耗費的秒數」,所以多數設備都是每跳直接減 1。因此 TTL 的實際意義就是「允許經過的最大路由器數量」。
📌 11|IP 選擇項
| 欄位 | 位元數 | 說明 |
|---|---|---|
| 複製(Copy) | 1 | 1 = 複製到所有分片,0 = 只複製到第一分片 |
| 類型(Class) | 2 | 0=網路控制,2=除錯與量測 |
| 選擇項編號 | 5 | 0~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(封包排程)
Scheduling 演算法比較
| 演算法 | 運作方式 | 優點 | 缺點 |
|---|---|---|---|
| FIFO First In First Out |
依到達順序先到先出 | 簡單、硬體易實作 | 無法區分服務品質,所有封包一視同仁 |
| Priority Queue (PQ) 優先權佇列 |
封包依優先權分組,高優先先發送 | 重要流量(如 VoIP)保證優先 | 低優先封包可能長期被餓死(Starvation) |
| Round Robin (RR) 輪流服務 |
每個佇列輪流發送一個封包 | 各流量類別公平取得頻寬 | 無法區分封包大小,小封包類別吃虧 |
| Weighted Fair Queue (WFQ) 加權公平佇列 |
依權重分配發送機會,權重高多發 | 兼顧公平與優先權,避免餓死 | 演算法複雜度較高 |
Buffer Management(緩衝管理)
| 機制 | 運作方式 | 特點 |
|---|---|---|
| Drop Tail | 緩衝區滿了,直接丟棄新到的封包 | 最簡單;易造成全球同步(Global Synchronization)——多個 TCP 連線同時偵測到丟包、集體降速 |
| RED Random Early Detection |
提前偵測擁塞,主動隨機丟包(不等滿) | 避免 Global Synchronization;保護 TCP 流量 |
| ECN Explicit Congestion Notification |
不丟包,改在 IP 標頭設定拥塞標記,通知來源端降速 | 比 RED 更溫和,保留傳輸效率;需兩端都支援 |
Buffer 太大時,封包在佇列中等待時間過長,會造成延遲(Latency)和抖動(Jitter)。這對即時應用(VoIP、遊戲)傷害很大。「緩衝區膨脹」(Bufferbloat)問題就是因此而生的。
📌 13|IPv6 簡介 IPv6
- IPv4 位址已接近耗盡(2³² ≈ 43 億)
- 物聯網(IoT)時代:手機、家電、水電錶、紅綠燈、貨品都需 IP 位址
- IPv6 位址空間:2¹²⁸ ≈ 340 兆兆兆 個位址
- 每平方公尺 ≈ 665×10²⁴ 個位址
- 比 IPv4 增加 2⁹⁶ 倍
| 面向 | 改善內容 |
|---|---|
| 定址容量 | 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
格式首碼(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-Local | fe80::/10,自動設定,不用 DHCP |
📌 16|IPv6 標頭與延伸標頭
每個路由器幾乎都會修改 TTL,所以 Header Checksum 每次都要重新計算。
無 Header Checksum(讓上層如 TCP/UDP 負責),路由器處理更快速。
延伸標頭類型
| 號碼 | 名稱 | 用途 |
|---|---|---|
| 0 | Hop-by-Hop 選項標頭 | 每個節點都需檢查(如 Jumbo Packets) |
| 43 | 路由(Routing)標頭 | 指定需經過的節點(類似 IPv4 Source Routing) |
| 44 | 封包分片(Fragmentation)標頭 | 分割封包(只在來源端進行) |
| 50 | ESP 標頭 | 封裝安全性加密(IPsec) |
| 51 | 認證(Authentication)標頭 | 身份認證(IPsec) |
| 58 | ICMPv6 | IPv6 使用的 ICMP(NDP、MLD) |
| 135 | Mobile IPv6 標頭 | 移動節點使用 |
📌 17|結語
| 面向 | IPv4 | IPv6 |
|---|---|---|
| 位址空間 | 32 位元 | 128 位元 |
| 標頭格式 | 可變(~20–60 位元組) | 固定 40 位元組 |
| 選擇項 | 在標頭內,可變 | 延伸標頭,按需納入 |
| 廣播 | 有 Broadcast | 無,以 Multicast 取代 |
| 安全性 | IPsec(可選) | IPsec(內建) |
| QoS | TOS 欄位 | Traffic Class + Flow Label |
| Fragmentation | 路由器可分片 | 僅來源端分片 |
| TTL | Hop count(8 位元) | Hop Limit(8 位元) |