IP、Subnet Mask、Gateway 是什麼?MAC Address 網路基礎完整教學
MAC Address、IP 位址、Subnet Mask、Gateway 是網路通訊最核心的四個概念。弄清楚它們各自的用途與相互關係,不管是排查網路問題、設定靜態 IP,還是理解封包如何在網路上傳遞,都會變得清晰許多。本文用白話說清楚,搭配指令範例帶你實際操作。
MAC Address(媒體存取控制位址)
MAC Address 是什麼?
MAC Address(Media Access Control Address,媒體存取控制位址)是網路介面卡(NIC,Network Interface Card)在出廠時燒錄進去的唯一識別碼。你可以把它想像成每張網路卡的「身分證號碼」——全球每張網路卡理論上都不重複。
MAC Address 工作在 OSI 模型的第二層(資料鏈結層),負責在**同一個區域網路(LAN)**內讓設備互相識別。當你的電腦要把資料傳給同一個網路上的另一台電腦時,最終送達的依據就是 MAC Address,而不是 IP 位址。
MAC Address 的格式
MAC Address 是一個 48 位元(bit)的數值,通常以六組兩位十六進位數字表示,例如:
aa:bb:cc:11:22:33
這六組數字分成兩段:
- 前三組(OUI,Organizationally Unique Identifier):廠商識別碼,由 IEEE 分配給各網路設備製造商。例如
00:1A:2B可能代表某個特定廠商。 - 後三組(裝置序號):廠商自行分配的流水號,確保旗下所有設備的 MAC Address 不重複。
因此,只要看到 MAC Address 的前六碼,就能查詢這張網路卡是哪個廠商製造的。
如何查看 MAC Address
Linux(使用 ip link 指令):
ip link show
輸出範例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether aa:bb:cc:11:22:33 brd ff:ff:ff:ff:ff:ff
# link/ether 後面那串就是 MAC Address
Linux/macOS(使用 ifconfig):
ifconfig
輸出範例:
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether aa:bb:cc:11:22:33 # 這就是 MAC Address
inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
Windows(使用 ipconfig /all):
ipconfig /all
輸出範例:
乙太網路介面卡 乙太網路:
...
實體位址 . . . . . . . . . . . : AA-BB-CC-11-22-33
# 「實體位址」就是 MAC Address,Windows 用連字號分隔
MAC Address 可以更改嗎?
雖然 MAC Address 是「燒錄」在硬體裡的,但作業系統允許在軟體層面暫時覆蓋它(稱為 MAC Spoofing)。這在某些需要繞過 MAC 過濾的場景會用到,但正常使用下不需要修改。
IP 位址
IP 位址是什麼?
IP 位址(Internet Protocol Address)是設備在網路上的「邏輯位址」。和 MAC Address 不同,MAC Address 是硬體固定的,而 IP 位址是由網路環境動態或靜態分配的,同一台設備在不同網路環境下可能有不同的 IP 位址。
IP 位址工作在 OSI 模型的第三層(網路層),負責跨網路的路由定址。簡單說,MAC Address 負責「同一棟樓裡找到哪個房間」,而 IP 位址負責「先找到哪棟樓」。
IPv4 vs IPv6
目前網路上同時存在兩個版本:
IPv4:
- 32 位元,格式為四組 0–255 的十進位數字,例如
192.168.1.100 - 理論上最多約 43 億個位址(2³²),已近乎耗盡
- 目前仍是絕大多數設備的主要使用版本
IPv6:
- 128 位元,格式為八組四位十六進位,例如
2001:0db8:85a3:0000:0000:8a2e:0370:7334 - 位址空間極大(2¹²⁸),解決 IPv4 不足問題
- 正逐漸普及,但許多內網設備仍主要用 IPv4
本文主要討論 IPv4。
公有 IP vs 私有 IP
IP 位址分為公有 IP 和私有 IP,這是理解現代網路架構的關鍵:
私有 IP(Private IP):
私有 IP 僅在區域網路(LAN)內使用,不能直接連上網際網路。IANA 保留了以下三個私有 IP 範圍:
| 範圍 | 說明 |
|---|---|
10.0.0.0 – 10.255.255.255 | A 類私有,大型企業網路 |
172.16.0.0 – 172.31.255.255 | B 類私有,中型網路 |
192.168.0.0 – 192.168.255.255 | C 類私有,家用/小型辦公室最常見 |
你家路由器分配給你電腦的 192.168.1.100 就是私有 IP。
公有 IP(Public IP):
公有 IP 是由 ISP(網際網路服務提供商,例如中華電信)分配給你的對外 IP,全球唯一,用來在網際網路上識別你的網路連線。
NAT(網路位址轉換):
由於私有 IP 不能直接上網,路由器使用 NAT(Network Address Translation)技術,將你的私有 IP 在出去網際網路時轉換為公有 IP,收到回應時再轉換回來。這讓家裡多台設備可以共用一個公有 IP 位址上網。
如何查看 IP 位址
查看內部(私有)IP:
# Linux:使用 ip addr 指令
ip addr show
# 輸出範例(只看 eth0 介面)
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
# inet 後面就是 IPv4 位址,/24 是子網路遮罩的 CIDR 表示法
# macOS:使用 ifconfig
ifconfig en0
# Windows:使用 ipconfig
ipconfig
查看外部(公有)IP:
# 使用 curl 查詢外部 IP
curl ifconfig.me
# 或
curl ipinfo.io/ip
子網路遮罩的進階應用,請參考 Subnet Mask 是什麼?子網路遮罩白話教學。
Subnet Mask(子網路遮罩)
Subnet Mask 是什麼?
Subnet Mask(子網路遮罩)是一個和 IP 位址搭配使用的 32 位元數值,用來判斷兩個 IP 位址是否在同一個網段(subnet)。
你可以把它想像成郵遞區號的概念:台北市信義區的郵遞區號是 110,只要兩個地址的郵遞區號相同,郵差就知道它們在同一個區域,可以直接送達;如果郵遞區號不同,就要先送到不同地區的分局再轉寄。Subnet Mask 的作用就是這個「郵遞區號分界」。
Subnet Mask 如何運作
Subnet Mask 透過 AND 位元運算來判斷網段。以最常見的 255.255.255.0 為例:
IP 位址: 192.168.1.100
11000000.10101000.00000001.01100100 (二進位)
子網路遮罩:255.255.255.0
11111111.11111111.11111111.00000000 (二進位)
AND 運算結果(網路位址):
11000000.10101000.00000001.00000000
= 192.168.1.0 ← 這就是網路位址
判斷邏輯:
- 如果兩個 IP 位址與相同的 Subnet Mask 做 AND 運算後結果相同,代表它們在同一個網段,封包可以直接傳遞。
- 如果結果不同,代表它們在不同網段,封包必須透過 Gateway 轉發。
常見 Subnet Mask 快速對照:
| Subnet Mask | CIDR | 可用主機數 |
|---|---|---|
255.255.255.0 | /24 | 254 |
255.255.0.0 | /16 | 65534 |
255.0.0.0 | /8 | 16777214 |
255.255.255.128 | /25 | 126 |
255.255.255.192 | /26 | 62 |
CIDR 表示法
CIDR(Classless Inter-Domain Routing,無類別域間路由)是一種更簡潔的表示方式,直接在 IP 位址後面加上斜線和網路位元數:
192.168.1.100/24等同於 IP192.168.1.100、子網路遮罩255.255.255.0/24代表前 24 個位元是網路位址,後 8 個位元是主機位址
現代 Linux 指令(如 ip addr)預設使用 CIDR 表示法。
Gateway(閘道器)
Gateway 是什麼?
Gateway(閘道器,又稱預設閘道)是一台設備(通常是路由器),負責將不同網段之間的封包轉發出去。當你的電腦判斷目標 IP 位址不在同一個網段時,就會把封包先送到 Gateway,再由 Gateway 決定如何往下路由。
家用環境中,Gateway 通常就是你的 Wi-Fi 路由器,IP 位址常見為 192.168.1.1 或 192.168.0.1。
深入了解 Gateway 運作原理,請參考 Gateway 是什麼?網路閘道器完整教學。
路由決策流程
當你的電腦要發送封包時,會依照以下步驟決定如何處理:
- 判斷目標 IP 是否在同一網段:用自己的 IP 和 Subnet Mask 計算網路位址,再用目標 IP 和同一個 Subnet Mask 計算,比較兩個網路位址是否相同。
- 同網段:透過 ARP(Address Resolution Protocol)查詢目標 IP 對應的 MAC Address,直接在區域網路內傳送。
- 不同網段:把封包送到 Gateway,由 Gateway 查詢路由表決定下一跳(next hop)。
如何查看 Gateway
Linux(使用 ip route):
ip route show
輸出範例:
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100
# default via 後面就是 Gateway IP
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
macOS(使用 netstat -nr):
netstat -nr | grep default
輸出範例:
default 192.168.1.1 UGScg en0
# 第二欄就是 Gateway IP
Windows(使用 ipconfig):
ipconfig
輸出範例:
預設閘道 . . . . . . . . . . . : 192.168.1.1
四者的關係
理解了四個概念之後,我們來看它們如何在一次網路通訊中協同運作。
關係總覽表
| 概念 | 位於 OSI 層 | 作用範圍 | 用途 |
|---|---|---|---|
| MAC Address | 第 2 層(資料鏈結層) | 同一區域網路內 | 識別物理設備 |
| IP 位址 | 第 3 層(網路層) | 跨網路 | 邏輯定址,路由目標 |
| Subnet Mask | 第 3 層(網路層) | 搭配 IP 使用 | 判斷是否同一網段 |
| Gateway | 第 3 層(網路層) | 網段邊界 | 跨網段封包轉發 |
一次完整的封包傳遞流程
假設你的電腦(192.168.1.100/24)要連線到 Google(142.250.185.78):
判斷網段:你的電腦用 Subnet Mask
255.255.255.0計算,192.168.1.100的網路位址是192.168.1.0,而142.250.185.78的網路位址是142.250.185.0——不同網段。送往 Gateway:電腦查詢路由表,找到 Default Gateway
192.168.1.1,用 ARP 查到它的 MAC Address,把封包的目標 MAC 填上路由器的 MAC Address,送出去。路由器轉發:家用路由器收到封包,查詢自己的路由表,透過 NAT 把來源 IP 換成公有 IP,再往上送給 ISP。
網際網路路由:封包在網際網路上經過多個路由器(hop)轉發,最終抵達 Google 的伺服器。
回程:Google 回應的封包經過路由,NAT 把公有 IP 換回你的私有 IP,送回你的電腦。
實際操作
查看完整網路設定(Linux)
# 使用 ip addr 查看所有網路介面的完整資訊
ip addr show
# 輸出範例說明
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo # 本地迴環位址
inet6 ::1/128 scope host
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether aa:bb:cc:11:22:33 brd ff:ff:ff:ff:ff:ff # MAC Address
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0 # IP/Subnet Mask
inet6 fe80::a8bb:ccff:fe11:2233/64 scope link # IPv6 鏈路本地位址
查看路由表(含 Gateway)
# 查看路由表
ip route show
# 輸出說明
default via 192.168.1.1 dev eth0 # default 代表預設路由,192.168.1.1 就是 Gateway
192.168.1.0/24 dev eth0 scope link # 這個網段直接從 eth0 送出,不需要 Gateway
在 Linux 設定靜態 IP(使用 Netplan,Ubuntu)
Ubuntu 18.04 以後使用 Netplan 管理網路設定,設定檔通常在 /etc/netplan/ 目錄下:
# 查看現有設定檔
ls /etc/netplan/
# 通常會有類似 01-netcfg.yaml 或 00-installer-config.yaml 的檔案
# 編輯設定檔
sudo nano /etc/netplan/01-netcfg.yaml
靜態 IP 設定範例:
network:
version: 2
ethernets:
eth0:
dhcp4: false # 關閉 DHCP,改用靜態 IP
addresses:
- 192.168.1.100/24 # 靜態 IP / 子網路遮罩(CIDR 格式)
routes:
- to: default
via: 192.168.1.1 # Gateway
nameservers:
addresses:
- 8.8.8.8 # 主要 DNS(Google)
- 1.1.1.1 # 備用 DNS(Cloudflare)
# 套用設定
sudo netplan apply
# 驗證設定是否生效
ip addr show eth0
ip route show
使用 ifconfig 設定(舊式方式,暫時生效)
# 設定 IP 位址與子網路遮罩
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 新增 Gateway
sudo ip route add default via 192.168.1.1
# 注意:重開機後設定會消失,永久設定請使用 Netplan
常見問題(FAQ)
Q1: MAC Address 和 IP 位址有什麼差別?
MAC Address 是網路卡出廠時燒錄的實體位址,全球唯一且通常固定不變,工作在區域網路層面,用來識別同一個網段內的設備。
IP 位址是邏輯位址,由 DHCP 伺服器動態分配(或手動靜態設定),可以隨時更改,工作在網路層面,用來在整個網際網路上定址與路由。
一個簡單的比喻:MAC Address 像身分證號碼(永久),IP 位址像電話號碼(可以換)。
Q2: 為什麼需要 Subnet Mask?直接用 IP 不行嗎?
IP 位址本身只是一串數字,Subnet Mask 的作用是告訴設備「哪幾位是網路位址,哪幾位是主機位址」。沒有 Subnet Mask,設備就無法判斷目標 IP 是否在同一個網段,也就無法決定封包要直接傳遞還是送給 Gateway。
此外,Subnet Mask 讓管理員可以把一個大 IP 區段切割成多個小子網路,在大型企業或資料中心環境中能有效控制廣播流量、提高網路安全性。
Q3: 家用網路的 Gateway 通常是什麼 IP?
家用 Wi-Fi 路由器的 Gateway IP 最常見是 192.168.1.1 或 192.168.0.1,這是各大路由器廠商的預設設定。你可以透過 ip route show(Linux)、netstat -nr(macOS)或 ipconfig(Windows)查看實際的 Gateway IP。如果要進入路由器管理介面,直接在瀏覽器輸入這個 IP 即可。