---
# System prepended metadata

title: ip address、mac address 的原理
tags: [計算機網路, Linux, 網路, Windows, 網路概論, 電腦雜談, 計算機概論, 電腦, 電腦常識]

---

# ip address、mac address 的原理

[TOC]

Hello Guys, I'm LukeTseng. 本篇將來介紹 ip-address 跟 mac-address 的原理，若本篇文章有誤，歡迎各位指正，若你也喜歡這篇文章，不妨按下愛心跟追蹤我的個人頁面吧！

## IP 位址（Internet Protocol Address）

IP 位址（Internet Protocol Address）是網路層的邏輯位址（Logical Address），用於網際網路上識別和定位設備。

這個 IP 位址基本上可以想像成是你家的地址，這樣想就好。

而邏輯位址是什麼呢？邏輯位址（Logical Address）在電腦網路和作業系統領域裡，泛指「軟體層級」所使用的、非直接對應硬體的位址。

![OSI Model and TCP / IP Model](https://hackmd.io/_uploads/BkW9kpFl-e.png)

Image Source：https://medium.com/@lagom247/%E7%B6%B2%E8%B7%AF%E6%9E%B6%E6%A7%8B-tcp-ip-%E5%9B%9B%E5%B1%A4%E6%9E%B6%E6%A7%8B-osi%E4%B8%83%E5%B1%A4%E6%9E%B6%E6%A7%8B-e2c92c9cdc32

如圖，邏輯位址所在的地方就在網路層（Network Layer）的部分，而在 TCP/IP 架構裡面是網路互連層（Internet Layer）。

與邏輯位址相對的就是實體位址（Physical Address），實體位址位於實體層（Physical Layer），以及 TCP/IP 架構的網路存取層（Link Layer）。

相對於實體位址，邏輯位址是可以變動的，也就是說你的 IP 位址可能不是唯一的，而實體位址因為一出廠就寫死在硬體裡面，所以幾乎很難去變動、去改它。

---

回到 IP 位址，有分為 Ipv4 跟 Ipv6，其中 v 是 version 版本的意思。

- Ipv4：位址由 32 bit 組成，通常用 4 組的十進位（Decimal）數字去表示，如 `192.168.1.100`，每一組範圍是 0 ~ 255，也就是 $2^8$ ， 1 個 byte。
- Ipv6：用 128 bit 組成，然後用 8 組的十六進位（Hexadecimal）數字表示，每組含 16 位元，用冒號（`:`）分隔，如 `2001:0db8:85a3:0000:0000:8a2e:0370:7334` 。

而 IP 位址也分為動態 IP 跟靜態 IP：

- 動態 IP（Dynamic IP）：
    - 來源：由 DHCP（Dynamic Host Configuration Protocol, 動態主機設定協定）伺服器自動分配。
    - 租約機制：當裝置連線到網路時會向 DHCP 伺服器提出 IP 請求。DHCP 伺服器在他的 IP 位置池中找出一個目前未被佔用的 IP，臨時分配給這台裝置，並設定租約期限。
    - 一旦租約到期、重開機或換網路時，這組 IP 可能會改變，不是每次都一樣。
- 靜態 IP（Static IP）：
    - 來源：必須手動設定在裝置上，設備的 IP 不會自動變動。
    - 固定不變：每次連到網路這組 IP 都一樣。適合需要外部連線、長期提供服務的設備，例如伺服器、網路印表機。

## MAC 位址（Media Access Control Address）

MAC 位址（Media Access Control Address）又稱為實體位址（Physical Address）或硬體位址（Hardware Address），位於 OSI 模型中資料連接層（Data Link Layer）的位址，在 TCP/IP 模型中位於網路存取層（Link Layer）。

MAC 位址在一開始就被燒錄在網路卡的硬體當中，「理論上」應該是唯一的。

MAC 位址是由 48 bit 所組成，通常是用 6 組的十六進位數字去表示，如 `80-C1-6E-F3-E7-6A`，前三組表示製造商的代碼，後三組是序號。

Ip vs MAC：

- MAC 位址：用於**同一區域網路**的 device 的識別。假如當電腦要傳輸資料給同 Wi-Fi 網路下的 printer 時，這時候就是會用到 MAC 去找到他。
- IP 位址：用於跨網路間的路由（routing）。如當要連上 Google Server 時，資料會經過多個路由器（router），每個 router 會根據 IP 位址去決定下一步要往哪裡傳送。

## 用來查看電腦網路設定的指令

### Windows : ipconfig /all

在 Windows 使用指令 `ipconfig` 顯示和管理網路連線設定，當中參數 `\all` 就是顯示出所有的網路設定。

開啟 cmd，輸入 `ipconfig \all` 可看到以下這些資訊：

![Windows ipconfig UI](https://hackmd.io/_uploads/BJifHl5g-l.png)

當中 `Physical Address` 就是 Mac 位址，而 `Ipv4 Address` 則為 IP 位址。

### Linux : ifconfig

在 Linux 中的指令比較不同，是叫做 `ifconfig`，全名是 interface configuration，若第一次使用時可能會遇到這個畫面（使用 Ubuntu 作業系統）：

![Linux ifconfig command](https://hackmd.io/_uploads/r1Pz0l5xWx.png)

那這時候只要輸入他提示你的 `sudo apt install net-tools` 安裝 net-tools 套件即可：

![Linux sudo apt install net-tools](https://hackmd.io/_uploads/HyriRlcg-g.png)

接下來輸入 `ifconfig`，介面大概會長像下面這樣：

![Linux ifconfig command demostration](https://hackmd.io/_uploads/H1Z00gqlbe.png)

## 總結

### IP 位址：網路上的邏輯位址

IP 位址屬於「邏輯位址（Logical Address）」，位在 OSI 的網路層與 TCP/IP 的網路互連層。

它用來在網際網路中識別裝置，類似住家地址，屬於軟體層面，可被修改。

### IPv4 與 IPv6

* **IPv4**：32-bit，四組十進位數字（0–255），如 `192.168.1.100`
* **IPv6**：128-bit，八組十六進位，如 `2001:0db8:85a3:…`

### 靜態 vs 動態 IP

* **動態 IP：**由 DHCP 自動分配，具有租約，到期或換網路時會更動**。
* **靜態 IP：**需手動設定，不會變動，常用於伺服器或需長期被外部連線的設備**。

### MAC 位址：硬體層面的實體位址

MAC 位址屬於「實體位址（Physical Address）」，位於 OSI 的資料連接層與 TCP/IP 的網路存取層。

它由網卡出廠時燒錄，48-bit、六組十六進位，如 `80-C1-6E-F3-E7-6A`，前三組為製造商、後三組為序號。

### IP vs MAC 的分工

* MAC：用於同一區域網路內的裝置識別（如家中 Wi-Fi 電腦找印表機）。
* IP：用於跨網路路由（如拜訪 Google Server 時，路由器依 IP 決定下一個封包傳送的地方）。

### 查看網路設定的指令

Windows：ipconfig /all

Linux：ifconfig

（Linux）若未安裝需先執行：`sudo apt install net-tools`

## 參考資料

[ipconfig | Microsoft Learn](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/ipconfig)

[Day6 - MAC 地址 | iT 邦幫忙::一起幫忙解決難題，拯救 IT 人的一天](https://ithelp.ithome.com.tw/m/articles/10291443)

[[Linux] ifconfig 查詢和設定網路介面卡 | PJCHENder I/O](https://pjchender.dev/app/app-linux-ifconfig/)

[如何查 IP 位址與 MAC 位址？｜圖文教學一步步帶你查 - 欣亞數位｜官方網站](https://corp.sinya.com.tw/post/3057/)

[IP位址 - 維基百科，自由的百科全書](https://zh.wikipedia.org/zh-tw/IP%E5%9C%B0%E5%9D%80)

[我理解的邏輯地址、線性地址、物理地址和虛擬地址 | Jason note](https://jasonblog.github.io/note/linux_kernel/121.html)

[What is Internet Protocol Version 4 (Pv4) - GeeksforGeeks](https://www.geeksforgeeks.org/computer-networks/what-is-ipv4/)

[What is Internet Protocol Version 6 (Pv6) - GeeksforGeeks](https://www.geeksforgeeks.org/computer-networks/internet-protocol-version-6-ipv6/)

[What is an IP Address? - GeeksforGeeks](https://www.geeksforgeeks.org/computer-science-fundamentals/what-is-an-ip-address/)

[What is a MAC Address and How Do I Find It? | TechTarget](https://www.techtarget.com/searchnetworking/definition/MAC-address)