# 前端工程師網路基礎 1 - OSI 模型、IP、MAC、DNS 入門 ## 前言 還記得第一次進公司的時候,我興沖沖地打開電腦準備開始工作,結果發現可以用瀏覽器上網搜尋但是 `npm install` 一直卡住、Docker 拉不到 image。我當時超困惑:「為什麼瀏覽器可以,程式碼卻不行?」直到同事跟我說:「公司有為了資安有內網啊,所以你要設定 Proxy!」 不知道大家有沒有類似經驗,或常常聽到 IT 部門講 DNS、IP、MAC、Proxy 這些名詞卻一知半解,那看這篇文章就沒錯了! --- ## OSI Model 開始之前我們先來了解一下網路的概念,OSI(Open Systems Interconnection)模型是一個網路通訊的理論架構,把複雜的網路通訊分成 7 個層級,每層負責不同的工作。如同蓋房子,從地基、柱子、牆壁、屋頂到裝潢,一層一層往上建! ![image](https://hackmd.io/_uploads/SykdBsdAlx.png) 為什麼要特別了解網路架構呢?當我們在理解新概念或是deg時就可以快速找到原因和重點,遇到問題時就需要由下而上的檢查: ``` 實體層有問題? → 網路線鬆了、WiFi 訊號弱 網路層有問題? → IP 設定錯誤、路由問題 傳輸層有問題? → Port 被佔用、防火牆阻擋 應用層有問題? → 程式碼錯誤、Proxy 設定錯誤 ``` 而前端工程師一定要理解這幾層的概念,今天會從第二層開始慢慢往上講: ``` DNS, Proxy, HTTP, Socket → Layer 7 (應用層) Port,UDP, TCP → Layer 4 (傳輸層) IP, NAT → Layer 3 (網路層) MAC 位置 → Layer 2 (資料鏈結層) ``` ## Layer 2:MAC 位址 - 網卡的身分證 ## 定義 MAC 位址(Media Access Control Address)就像是網路卡的身分證字號,在工廠生產時就決定了,理論上永遠不會改變。由6組,每組2個十六進位數字(0-9, A-F)組成,共48bits,例:`00:1A:2B:3C:4D:5E` ### MAC 的角色與範圍 - 在同一個區域網路(LAN)中,用來識別每一張網卡。 - 幫助交換機(Switch)或路由器知道資料要送給哪個實體設備。 - 當你的電腦要傳資料給同網段的另一台電腦時,會 - 用 ARP 問「誰是 192.168.1.101?」 - 對方回答它的 MAC 位址 - 再用 MAC 封包傳資料(來源 MAC → 目的 MAC) > MAC 像是「收件人的門牌號碼」,只在同一棟大樓(LAN)裡有意義。 ## Layer 3:IP 位址 - 網路世界的門牌 ### 定義 IP 位址(Internet Protocol Address)就像是**網路世界的門牌號碼**,每台連上網路的設備都需要一個 IP 位址,才能被找到。 舉個例子,現實世界中寄信時,需要知道朋友家的地址(門牌號碼),網路世界也一樣,你的電腦要連線到 Google → 需要知道 Google 伺服器的 IP ### IP 的角色與範圍 - 在**整個網際網路(WAN)**上,用來標示每台設備的位置。 - 負責封包的「跨網段傳遞」,讓資料能從一個城市(網路)送到另一個城市。 - 路由器根據 IP 來決定下一站要送到哪裡。 > IP 像是「城市 + 街道的地址」,可以讓資料穿越不同城市(網段)找到對方。 > 若無IP位址,就像信件沒有寫地址,郵差不知要送到哪,信就永遠寄不到了! ### 兩種類型的 IP #### 1. 內網 IP(Private IP)- 大樓內的房號 - **範圍**:`192.168.x.x`、`10.x.x.x`、`172.16.x.x - 172.31.x.x` - **用途**:在公司或家裡內部使用 - **特性**:只能在區域網路內互相連線 - **比喻**:就像大樓裡的「3 樓 5 號房」,只有在大樓內有效 **例如**: ``` 你的電腦 IP:192.168.1.100 公司印表機:192.168.1.10 同事電腦:192.168.1.101 ``` #### 2. 外網 IP(Public IP)- 完整的門牌地址 - **範圍**:除了內網 IP 以外的所有 IP - **用途**:在網際網路上使用 - **特性**:全球唯一,可以從任何地方連線 - **比喻**:就像完整地址「台北市信義區忠孝東路 100 號」,全世界都認得 **範例**: ``` Google:142.250.185.46 Facebook:157.240.241.35 你家或公司的對外 IP:可能是公司分配的某個 IP ``` ![截圖 2025-10-25 下午3.03.05](https://hackmd.io/_uploads/BJQI8xqRlx.png) 關鍵: - 外面的人只看到 203.0.115.5 - 看不到你家有多少設備 - 看不到各設備的內網 IP ### 固定 IP vs 動態 IP | 類型 | 特性 | 適用對象 | 比喻 | |------|------|----------|------| | **固定 IP** | 永遠不變 | 伺服器、公司設備 | 商店的固定地址 | | **動態 IP** | 可能會變動 | 一般使用者電腦 | 旅館的房間號碼 | **為什麼會這樣分?** - 伺服器需要被「找到」→ 固定 IP(不然網站網址今天能用,明天就找不到了) - 一般電腦只需要「連出去」→ 動態 IP (反正你不需要別人主動連到你的電腦) ### IP 與 MAC 的分工與合作 ![截圖 2025-10-25 下午4.31.41](https://hackmd.io/_uploads/rJk-j-9Ree.png) - 電腦要連線到 Google:先知道目的 IP(例如 142.250.185.46) - 查出要發送給哪個 MAC(例如路由器的 MAC,透過 ARP) - 封包內: - IP:192.168.1.100 → 142.250.185.46 - MAC:00:1A:2B:3C:4D:5E → 00:AA:BB:CC:DD:EE - 封包先在區域網中用 MAC 找到路由器,再由 IP 跨網傳遞到 Google 每經過一台路由器,MAC 都會換(每跳重包),但 IP 不變 --- ## Layer 7:DNS - 網路世界的電話簿 ### 定義 DNS(Domain Name System)就像是**網路世界的電話簿**,負責把「人類容易記的網域名稱」轉換成「電腦看得懂的 IP 位址」。 ### 為什麼需要 DNS? 想像一下要連到 Google,如果沒有DNS,你必須記住142.250.185.46的ip,要打開Facebook則要輸入157.240.241.35,非常麻煩且不易記住,不過有了 DNS 後,只要輸入:google.com,DNS 自動幫你查到:142.250.185.46! ### DNS 如何運作? **實際流程**: ``` 步驟 1:你在瀏覽器輸入 www.google.com 步驟 2:電腦先檢查本機的 hosts 檔案(本地電話簿) ↓ 沒找到 步驟 3:去問 DNS 伺服器(網路電話簿) 「google.com 的 IP 是?」 步驟 4:DNS 伺服器回答 「google.com 的 IP 是 142.250.185.46」 步驟 5:電腦連線到 142.250.185.46 步驟 6:成功!Google 首頁出現了 ``` ### DNS 不只是對應表 DNS 其實包含很多種記錄類型: | 記錄類型 | 用途 | 範例 | |---------|------|------| | **A** | 網域 → IPv4 位址 | `example.com → 93.184.216.34` | | **AAAA** | 網域 → IPv6 位址 | `example.com → 2606:2800:220:1:...` | | **CNAME** | 網域別名 | `www.example.com → example.com` | | **MX** | 郵件伺服器 | `example.com 的郵件 → mail.example.com` | | **TXT** | 文字資訊 | 用於驗證、SPF 設定等 | ### 概念對比表 | 概念 | 比喻 | 負責什麼 | OSI 層級 | 何時需要 | |------|------|----------|----------|----------| | **IP** | 門牌號碼 | 識別設備位置 | Layer 3 | 永遠需要 | | **DNS** | 電話簿 | 把網域轉成 IP | Layer 7 | 輸入網域時 | | **MAC** | 身分證 | 識別網卡 | Layer 2 | 區域網路內 | | **Proxy** | 代購 | 代理連線 | Layer 7 | 公司網路環境 | p.s. Proxy 解釋詳見下一篇 ## 總結 現在你已經理解了網路的基礎概念: - **MAC 位址**:網路卡的身分證,在區域網路內使用 - **IP 位址**:網路世界的門牌號碼,分為內網和外網,有固定和動態之分 - **DNS**:把網域名稱轉成 IP 位址的電話簿,讓我們不用記數字 下一篇,我們再來繼續介紹網路模型越往上走時,網路互動不可或缺的NAT、防火牆、Proxy的角色,有興趣繼續學習的話,可以往下看 → 【前端工程師的網路基礎 2:NAT、防火牆、Proxy 完整解析】 ## 參考資料 - [What is an IP Address? - Cloudflare](https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/) - [LAN 與 WAN 之間有什麼區別?](https://aws.amazon.com/tw/compare/the-difference-between-lan-and-wan/) - [How DNS Works - Cloudflare](https://www.cloudflare.com/learning/dns/what-is-dns/) - [OSI Model Explained](https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/) - [網路七層架構(OSI 模型)您都了解了嗎?輕鬆認識 OSI 七層+ 口訣記憶法!](https://www.hiyun.com.tw/news/blog/what-is-osi-model)