OSI 模型下四層:網路底層工程師的戰場!
更新日期: 2025 年 4 月 7 日
本文為 網路模型基礎 系列文:
你可能已經知道,網路的傳輸過程其實是由一層層的機制支撐起來的。
就像寄一封信,不只需要郵差,還得有地址、路線規劃、包裝方式……這一切,在網路世界中也一樣複雜。
在 OSI 模型中,下四層(Layer 1 到 Layer 4)負責處理「資料怎麼送出去」這件事,是網路傳輸的實戰區,硬體與協定齊上陣。
這篇文章就帶你認識這些底層工程師的戰場:從實體訊號到封包拆封,從 IP 尋址到 TCP 傳送,網路世界的魔法就在這裡發生。
Layer 4:傳輸層(Transport Layer)— 保證資料安全送達的司機
在 OSI 模型中,傳輸層就像是一位專業司機,負責把應用層傳下來的資料「切好包好、安全送出」,並確保對方真的有收到。
它不是開車亂送,而是有 SOP、有對講機、有 GPS 跟簽收流程的那種嚴謹送貨員。
功能重點解析
🧱 資料分段(Segmentation):
🔧 把大資料切成小份送出去,再拼回來
當你使用瀏覽器開網頁或用手機 App 傳圖片時,這些資料通常都非常龐大,不可能一次就整包送出去。
因此,傳輸層的第一項重要任務就是:將資料分割成數個「小段(segments)」,這樣每一段在網路中傳送時比較穩定,也能避免網路壅塞。
🎯 技術細節補充:
- 每個 segment 都會附上自己的「編號」(Sequence Number),像是:
- 第 1 段:Sequence 1001
- 第 2 段:Sequence 1002
- 接收端收到後,會根據這些編號重新組裝成原始資料。
- 若順序錯亂或某段漏掉,就會通知對方重送那一段。
📦 生活比喻:
就像你要寄一整組家具,會把沙發、桌子、椅子分別包裝,分成幾箱分開送;到了目的地再依說明書組裝還原。
🧃 流量控制(Flow Control):
🛑 根據對方能力,調整發送速度,避免壅塞
在網路世界裡,不是每一台設備都有相同的「接收能力」。
如果傳送端一直狂發資料,而接收端還來不及處理,就會發生資料丟失或延遲的問題。
所以傳輸層會使用一種叫做 流量控制(Flow Control) 的機制,動態調整傳送的速度。
🎯 技術細節補充:
- 最常見的是 滑動視窗協定(Sliding Window Protocol)。
- 接收端會持續告訴發送端:「我目前的視窗大小是多少(Window Size)」,這代表我一次可以接收幾段。
- 發送端根據這個視窗大小,決定要不要繼續傳或暫停等待。
🏭 生活比喻:
像是在工廠搬運貨物,對方倉庫還沒清完你送的貨,就要先等一等,不然會堵在門口,全部壞掉。
🕵️♂️ 錯誤偵測與重傳(Error Checking & Retransmission):
🔁 資料出錯就重來,保證內容正確無誤
網路環境可能會受很多因素干擾(電磁波干擾、網路不穩定、路由器過載等),有可能導致資料在途中遭到損壞、遺失或變形。
這時傳輸層就會負責檢查錯誤,只要發現有問題的段落,就重新發送一次,確保最後送達的資料與原始一致。
🎯 技術細節補充:
- 每個資料段都會附加一個 checksum(校驗碼),由發送端計算,接收端重新計算比對。
- 如果 checksum 不一致,就代表資料中途出錯,接收端會要求發送端「重傳」。
- 這套機制是 TCP 協定的核心功能之一(UDP 沒有)。
📩 生活比喻:
像你傳真一份文件,對方如果收到的有破圖或缺頁,會打電話請你再傳一次。只有等對方說「我收到正確的了」,整件事情才算完成。
🔗 連線管理(Connection Management):
🤝 建立一條可靠連線,雙方握個手再傳資料
TCP 協定的最大特色,就是它是「有連線的協定(Connection-Oriented)」。
這代表:在開始資料傳輸前,雙方會進行一個 「三次握手」(3-way handshake) 的流程,確認彼此都在線、準備好了,才開始傳送資料。
🤝 什麼是三次握手(詳解版)?
當你開一個網頁或連線到某個伺服器時,背後其實發生了一段「對話流程」,就像你打電話前先確認對方有接起來,三次握手就是這樣的確認機制。
📶 三個步驟簡單講:
- Client → Server:SYN
- 客戶端發出「SYN」封包(SYN=Synchronize),意思是: 「嗨,我想跟你建立連線,我的初始序號是 100。」
- Server → Client:SYN + ACK
- 伺服器收到後,回應一個「SYN + ACK」封包,意思是: 「OK,我收到了你的要求,我的初始序號是 300,順便確認你的序號 100 + 1。」
- Client → Server:ACK
- 客戶端再送出一個「ACK」封包,意思是: 「好,我也確認你的序號 300 + 1,那我們開始吧!」
✅ 這時,雙方的連線就建立完成,可以開始正式傳送資料了。
🔍 每一步在做什麼?
步驟 | 誰傳給誰 | 傳什麼 | 做什麼 |
---|---|---|---|
第一次握手 | Client → Server | SYN | 發出連線請求,附上自己的序號(如 Seq=100) |
第二次握手 | Server → Client | SYN + ACK | 回應連線,附上自己的序號 + 確認收到 Client 的序號 |
第三次握手 | Client → Server | ACK | 確認 Server 的序號,連線正式建立 |
📬 為什麼需要三次?
- 🛡 確保雙方都在:只收到一封 SYN,不代表對方真的有回應。
- 📦 同步序號:讓彼此知道從哪個編號開始傳資料,避免資料順序混亂。
- 🤝 建立「雙向」連線:TCP 是雙向的,兩邊都得能發資料、收資料才行。
🧺 生活比喻:打電話確認你在
- 你打電話過去(SYN):「喂~在嗎?」
- 對方接起來(SYN+ACK):「有聽到,我在!你聽得到我嗎?」
- 你說:「OK 聽到了,我們可以開始說話了」(ACK)
🎯 三次握手流程:
- Client(主動方)送出 SYN(我要連線)
- Server 回 SYN+ACK(我在這,收到你的請求)
- Client 再送 ACK(收到你的回應了)
握手成功後,才會開始真正的資料交換。這樣可以避免浪費資源在錯誤連線上。
🔐 補充:
- TCP 在斷線時也有「四次揮手(Four-way Handshake)」的拆線機制,確保資料全部送完後才結束連線。
- UDP 則完全不會握手,開門就丟資料,效率高但風險也高。
📞 為什麼需要「四次」才能結束連線?
四次揮手(4-way handshake) 是 TCP 協定中用來「正常結束一段連線」的標準流程。
就像三次握手建立連線,四次揮手則是有禮貌地說:「我傳完了,我們可以掛電話囉!」
因為 TCP 是雙向通訊,兩邊都可能還有資料要傳。所以連線不能一方說「我要斷」就直接關掉,必須雙方都確認「資料已經傳完,真的可以斷」才行。
✋ 四次揮手流程圖解:
步驟 | 誰傳給誰 | 封包內容 | 意思 |
---|---|---|---|
第一次揮手 | Client → Server | FIN | 客戶端說:「我沒資料要傳了,準備關閉了。」 |
第二次揮手 | Server → Client | ACK | 伺服器說:「我知道了,等我傳完我的資料再關。」 |
第三次揮手 | Server → Client | FIN | 伺服器說:「我也傳完了,現在可以關了。」 |
第四次揮手 | Client → Server | ACK | 客戶端說:「OK 收到,我們關掉吧!」 |
✅ 完成後,雙方才真正關閉連線,稱為「優雅關閉(graceful termination)」。
📦 更詳細說明:
🔹 第一步:Client 發出 FIN(我要斷線了)
- 意思是「我這邊的資料都傳完了,不會再發送,但還可以收你的資料」
- TCP 進入 FIN_WAIT_1 狀態
🔹 第二步:Server 回 ACK(收到你的斷線請求)
- 告訴 Client:「收到,我知道你沒資料要傳了」
- 但 Server 這時「可能還有資料」要送
- TCP 狀態變成 FIN_WAIT_2
🔹 第三步:Server 發出 FIN(我也要斷線了)
- 代表 Server 也傳完了所有資料
- TCP 進入 LAST_ACK 狀態
🔹 第四步:Client 回 ACK(確認關閉)
- 雙方完成協議,正式關閉連線
- Client 進入 TIME_WAIT 狀態,等一段時間後完全釋放連線資源
🧺 生活比喻:結束一通有禮貌的電話
- 你說:「我講完了,你可以掛了」(FIN)
- 對方說:「我知道了,等我講完」(ACK)
- 對方也說:「我講完了,我要掛了喔」(FIN)
- 你說:「好,我也掛了,掰掰」(ACK)
🧠 為什麼這麼麻煩不能一次斷?
因為 TCP 是雙向可靠連線:
- 如果一方突然中斷,可能導致資料還沒傳完就消失(資料遺失)
- 四次揮手可以確保雙方都「資料都處理好了」,才關閉,避免網路錯誤或資安問題
⏳ TIME_WAIT 是什麼?
在最後一個 ACK 傳出後,Client 不會立刻關掉連線,而是進入 TIME_WAIT
狀態(大約 60 秒左右),這是為了:
- 確保最後一個 ACK 被 Server 收到
- 防止舊連線的封包影響到新連線
✅ 總結:三次握手建立愛,四次揮手體面分開 💔
功能 | 三次握手 | 四次揮手 |
---|---|---|
目的 | 建立連線 | 正常結束連線 |
次數 | 3 次封包 | 4 次封包 |
雙向確認 | 雙方都 OK 才開始 | 雙方都資料傳完才結束 |
☎️ 生活比喻:
就像你打電話前會先「喂?你在嗎?」確認對方有接通才開始聊天,而不是一接起來就劈哩啪啦講一堆。
小結:為什麼這些功能超重要?
- 沒有 分段重組,大型資料根本送不出去
- 沒有 流量控制,網路就會擠爆或資料遺失
- 沒有 錯誤檢查,你收到的圖片可能壞一半
- 沒有 連線管理,你可能對著一個不存在的對象一直發資料
常見傳輸層協定比較:TCP vs UDP
在傳輸層,我們最常遇到兩種協定:TCP(Transmission Control Protocol) 和 UDP(User Datagram Protocol)。
這兩位「資料快遞員」風格完全不同,一位重視「穩定準確」,一位講求「迅速有效」。到底什麼情境該用誰?我們來深入看看!
✅ TCP:傳輸層的穩重老司機
✔ 有連線(Connection-Oriented)
TCP 每次傳輸前,雙方都會建立連線(三次握手),確保彼此準備就緒,像打電話前先「喂?你有在線上嗎?」
✔ 有確認機制(Acknowledgement)
每收到一段資料,接收端會回傳「我收到了」的 ACK 訊息,沒收到就會重傳,直到成功為止。
✔ 有錯誤檢測與重傳
每段資料都會附上 checksum,TCP 會確認資料沒壞掉,否則就重送。
✔ 有順序控制(Sequence Control)
若資料順序亂掉,TCP 會幫你重新排列,讓接收端拿到的資料一定有邏輯順序。
📦 適用場景:
💼 資料完整性、正確性極度重要的應用。
- HTTP/HTTPS:打開一個網頁,你總不能只收到一半的 HTML 吧?
- Email(SMTP, IMAP):信件傳一半誰受得了?
- FTP(檔案傳輸):上傳的程式碼或照片不能壞掉。
🎈 UDP:傳輸層的奔放外送員
❌ 無連線(Connectionless)
UDP 不會確認對方是否在,只要你開門,它就直接把資料丟出去了。
❌ 沒有 ACK 回應
送了就算,不管有沒有接到。對 UDP 來說,速度比確認更重要。
✅ 傳送速度快、延遲低
因為省略連線、確認、重傳等機制,UDP 特別適合需要「即時回應」的場景。
❌ 沒有順序控制
資料順序可能亂跳,使用端得自己想辦法處理或直接忽略。
🚀 適用場景:
⚡ 即時性更重要、可容許小部分資料遺失的應用。
- 線上遊戲:你不會希望角色延遲 3 秒才動起來吧?
- 語音通話(VoIP):有一兩句聽不清楚也比 lag 更能接受。
- 直播串流(Twitch、YouTube Live):畫面掉一兩格比起停頓更可接受。
- DNS 查詢:只是問一下「這個網址的 IP 是什麼?」失敗再問一次即可。
🧺 生活舉例比較
✅ 用 TCP 傳資料 = 寄掛號信
你寄一封重要的文件給某人,選擇「掛號 + 收件人簽名」,這樣你可以追蹤它在哪裡、是否成功送達,如果途中遺失還可以補寄。
這就像你開啟一個網站,TCP 會負責穩定地把 HTML、CSS、圖片等完整內容送到你的瀏覽器。
🎈 用 UDP 傳資料 = 丟紙飛機
你在教室裡丟一台紙飛機給對面同學,你不會等他說「我收到了」才丟下一台。反正你可以不斷丟,希望他有機會接到大部分訊息。
就像你在看直播,主機只管繼續送資料,不會等你「看懂」才繼續播下去。即便漏了幾個畫格也無妨,畫面不能卡住才是重點。
🧩 小提醒(觀念整理):
特性 | TCP | UDP |
---|---|---|
是否連線 | ✅ 有(需要建立連線) | ❌ 無(送了就送) |
是否確認接收 | ✅ 有 ACK、會重傳 | ❌ 不確認、不重傳 |
是否保證順序 | ✅ 有順序控制 | ❌ 沒有順序控制 |
傳輸速度 | ⏳ 較慢(因為機制多) | ⚡ 非常快(省略流程) |
適用場景 | 資料完整重要(網站、信件、檔案下載) | 即時互動為主(遊戲、直播、語音) |
🔧 延伸應用與實務面補充
- 網路工程師與後端工程師,需要知道每種協定通常使用哪個 port 號:
- TCP 80:HTTP
- TCP 443:HTTPS
- UDP 53:DNS 查詢
- UDP 500:VPN 通訊
- 防火牆與路由器設定時,會依據 TCP/UDP port 決定放行或阻擋哪些服務。
- 資安防護常針對特定 port 做限制,避免某些 UDP 攻擊(如 DDoS 放大攻擊)。
✅ 結語:
TCP 和 UDP 沒有誰比較好,只有哪一種「更適合你的應用場景」。
- 想要完整準確?選 TCP
- 想要快速即時?選 UDP
理解兩者差異後,你不只是能寫出好程式,也能判斷應該怎麼設計傳輸流程,這就是進階網路思維的開始!
Layer 3:網路層(Network Layer)— 負責「怎麼走」的導航員
在 OSI 模型中,網路層就像是整個資料傳輸過程中的 導航員 或 物流指揮中心。
當你按下「送出」之後,資料不會瞬間到達目的地,而是要經過層層中繼、轉送,每一步都需要知道「該往哪裡走」,這正是網路層的工作。
功能重點解析
📍 邏輯地址管理(IP Address Management)
🧠 每個裝置的網路身分證,讓資料知道去哪裡
在網路世界裡,裝置與裝置之間要傳資料,首先就得知道彼此是誰、在哪裡。這就像你寄包裹前,必須知道對方的地址,才能確保資料送到正確的位置。
這時,網路層會幫每一台裝置分配一個「邏輯位址」— IP 位址,是整個通訊的基本單位。
🧾 IP 位址是什麼?
- 是一組用來識別裝置的數字編碼
- 像是網路世界的「地址」
- 與第二層的 MAC(硬體位址)不同,IP 是可以跨網段、跨區域、甚至全球辨識的
🧠 IP 位址的幾個特性:
特性 | 說明 |
---|---|
唯一性 | 每個裝置在網路中都要有獨特的 IP,否則資料無法正確傳送 |
可變動性 | IP 可由路由器或 DHCP 伺服器自動指派,不一定固定 |
可區分來源與目的地 | 封包上會同時標註「來源 IP」與「目的 IP」,便於路由 |
🧪 常見的 IP 位址類型:
IPv4(目前最常用)
- 範例:
192.168.0.1
- 由 4 組 8 位元(0-255) 組成,共約 42 億組位址
IPv6(未來趨勢)
- 範例:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 由 128 位元構成,位址數量多到可以給每一粒沙子一個 IP
🔎 延伸知識:私有 IP vs 公有 IP
類型 | 說明 | 範例 | 用途 |
---|---|---|---|
私有 IP | 僅用於內部網路,不能直接上網 | 192.168.x.x、10.x.x.x | 家庭、公司 LAN |
公有 IP | 能在網際網路上被找到 | 114.32.x.x 等 | 網站主機、VPN、伺服器 |
✔ 小提醒:你平常家中電腦上的 IP,通常是私有 IP,透過 NAT 由家中路由器的「公有 IP」與外界溝通。
🧭 封包路由(Routing)
📦 資料怎麼從 A 點走到 B 點?就是靠它
資料不是一瞬間傳送,而是拆成一段段的「封包」(Packet),透過一台又一台的路由器中繼,像貨車中轉一樣,把資料運送到目的地。
這整個規劃路徑的過程,就叫做「路由(Routing)」,由網路層負責。
🧠 什麼是 Packet?
Packet(封包) 是 OSI 第三層 —— 網路層(Network Layer) 的資料單位。
在這一層,資料已經被上層(傳輸層)切割成 segment,並加上了 IP 頭部(IP header),變成了封包(Packet)。
📦 套一句簡單的話來說:
✔️ Packet = IP Header + 資料(來自傳輸層)
這個封包包含的關鍵資訊有:
- 來源 IP、目的 IP
- 封包長度
- TTL(Time to Live)
- 協定類型(如 TCP 或 UDP)
- 等等…
🚛 路由器是什麼?
- 是一種網路設備,專門幫封包「決定下一站往哪走」
- 會根據路由表(Routing Table)判斷「最短/最優路徑」
- 每經過一台路由器,封包就會更新一次自己的路徑資訊
🔍 延伸理解:靜態路由 vs 動態路由
類型 | 靜態路由 | 動態路由 |
---|---|---|
設定方式 | 人工手動設定 | 透過路由協定自動學習 |
彈性 | 低 | 高 |
適合用途 | 小型網路 | 大型/變動頻繁的網路 |
協定範例 | 無(純手動) | RIP、OSPF、BGP 等 |
🧠 類比說明:
想像你是送貨員,要從台北把包裹送到高雄:
- 你不會一次送到,而是先到轉運站(像是台中),再往下一站
- 每一個轉運站的決定,都是靠「路由表」來判斷要送去哪一站最快
如果中途有路線壅塞或某段封包失敗,封包可能會被丟棄或回報錯誤(靠 ICMP 協助,這在後面會提到)
🌐 跨網段通訊(Inter-network Communication)
🌍 讓資料不只在一個區網中流動,而是跨世界通行
所謂「跨網段」,是指資料要從一個區域網路(LAN)發送到另一個不同的網段,甚至跨越國界、跨越不同的供應商、資料中心……這就是網路層的真正價值。
📶 為什麼要跨網段?
因為世界不是只有你一個區網。
- 你家裡是 192.168.0.x 的 LAN
- Google 的伺服器是 142.250.x.x
- 它們不在同一個網段,資料就需要透過網路層來「跳網」
📦 舉例說明:
你在台灣打開一個在美國的網站:
- 你的裝置產生封包,附上 來源 IP(你的私有 IP) 和 目的 IP(網站的公有 IP)
- 封包先傳到你家裡的路由器(第一跳)
- 再傳到電信公司的中繼站(第二跳)
- 再傳往國際海底電纜、雲端機房……
- 一路跳躍經過十幾台路由器,最終送到 Google Cloud 上的伺服器
這就是「跨網段通訊」的魔法,封包能靠 IP + Router 在全球自由穿梭。
常見協定介紹:
IP(Internet Protocol)
這是網路層最基礎也最重要的協定,用來:
- 分配邏輯位址(IP)
- 定義封包格式(例如包含來源 IP、目的 IP)
- 讓資料可以從 A 傳到 B,即便 A 和 B 不在同一個網段
常見版本:
- IPv4(目前仍最常用)
- IPv6(為了解決 IP 位址枯竭而設計)
ICMP(Internet Control Message Protocol)
這是用來「輔助 IP 傳輸」的協定,幫忙做:
- 錯誤回報(例如封包送不到、主機無法抵達)
- 診斷工具:例如常見的
ping
指令和traceroute
🛠 舉例:
- 你打
ping google.com
,其實就是在用 ICMP 封包測試:- 「嗨 Google,我傳得到你嗎?」
- Google 回覆:「有,我收到囉!」
📦 舉例說明:寄包裹的路線怎麼選?
想像你從台北寄一個包裹到高雄:
- IP 位址:像是包裹上的收件人地址,唯一指向目的地
- 網路層:就像是郵局物流系統,會幫你安排最有效率的運送路線
- 路由器:像是轉運站,一站站把包裹送往正確方向
- ICMP:像是快遞員回報「找不到地址」或「成功投遞」
即便這封包裹不是一次直達,也能一站一站地轉送,直到送到目標收件人手上,這整個過程都是網路層的功勞。
🧠 小提醒:
- IP 只負責「送到地址」,不保證送得到,也不保證內容完整 → 這是傳輸層(TCP)的事
- 網路層的工作是讓資料「走得出去、找得到目標」
- 如果網路斷線、IP 錯誤、路由器不通,資料就會卡住在這一層
Layer 2:資料連結層(Data Link Layer)— 鄰居間溝通的傳遞員
當資料從電腦中被送出時,它不會一開始就跑到很遠的地方,而是先在附近的網路中傳遞,像是在區域網路(LAN)中找鄰居。
這個階段由「資料連結層」負責,它就像是你家社區的大樓管理員,確保每一封資料「信件」送到對的住戶手中。
功能重點解析
📦 資料幀(Frame)處理
當上一層(網路層)準備好封包後,資料連結層會將這些封包包裝成「資料幀(Frame)」,這是這一層傳遞資料的單位。
每個 Frame 都會包含:
- 來源 MAC 位址(下方接續說明)
- 目的 MAC 位址
- 資料內容
- 檢查碼(FCS)(下方接續說明)
這就像在送快遞時,在外箱上貼上寄件人與收件人資訊,並加上條碼做驗證。
🧾 實體位址辨識(MAC Address)
MAC(Media Access Control)位址是每個網卡出廠時寫死的、全球唯一的硬體位址。
資料連結層會使用這個位址來辨別裝置。
類型 | 說明 |
---|---|
MAC 位址格式 | 一組 48 位元的十六進位數字,例如:00:1A:2B:3C:4D:5E |
和 IP 的關係 | MAC 是實體層級的「硬體身分證」,IP 是邏輯上的「郵遞區號」 |
使用場景 | 在同一個區網內通訊(例如一棟大樓裡的各戶人家)時,會使用 MAC 位址進行資料投遞 |
所以資料連結層主要處理的是:「這個 Frame 要送到哪一張網卡?」
🧪 錯誤檢查(CRC 校驗)
當資料在網路線中傳送時,可能會因為電磁干擾或訊號衰減而出錯。為了避免資料出錯還照常收下,資料連結層會在每個 Frame 後面加上一段檢查碼,稱為 CRC(Cyclic Redundancy Check)。
- 發送端:用特定演算法產生 CRC 校驗碼,附在資料尾端
- 接收端:收到後重新計算 CRC,與附加的比對是否一致
- 若不一致,就丟棄該 Frame,並等待重傳
這就像快遞盒上貼了條碼,收件人掃一下確認是否「完整無損」。
資料連結層的核心技術與設備
🔧 讓資料能「安全送到區網內正確裝置」的底層工程
資料連結層負責的是本地網路(區網)內的資料傳輸。
但這件事背後其實由一整套技術與設備合作完成,從「誰是收件人」、「怎麼包裝」、「送到哪個 port」、「是否送錯或壞掉」,每一步都需要明確的規則與設備支援。
以下,我們按邏輯順序逐步介紹這些角色的功能與關係。
📐 Ethernet(乙太網路):定義 Layer 2 的基本規則
在我們開始說明資料是怎麼被送出去之前,必須先知道這一切「規則是誰訂的」。
Ethernet 就是資料連結層最廣泛使用的通訊標準協定,它定義了:
- Frame(資料幀)的格式:包括哪些欄位、欄位順序、長度限制
- 資料的傳輸方式與速率(10Mbps、100Mbps、1Gbps 等)
- 媒介存取方式(如 CSMA/CD)
- 如何進行錯誤檢查(使用 CRC)
🧠 沒有 Ethernet,所有關於 Frame 的格式、怎麼傳送資料、怎麼判斷對錯,就會變得混亂無章。
所以你可以把它想像成:
✍️ Ethernet 是整個 Layer 2 傳輸的「建築設計圖與交通法規」,所有後續設備與機制都根據它運作。
🎯 MAC 位址:在區網中識別「誰是誰」
在 Ethernet 所定義的 Frame 格式中,會包含「來源 MAC」與「目的 MAC」。
這裡的 MAC(Media Access Control)位址 就是每台裝置的唯一實體 ID,就像每戶人家的門牌號。
- 長度固定為 48 位元,常見格式如:
00:1A:2B:3C:4D:5E
- 每張網卡(無論有線或無線)出廠就內建,不會重複
- 只在「本地網路」中使用,不會被 Router 傳出去
資料連結層要送資料時,必須要知道「目的 MAC」,Frame 才能找到正確的接收端。
🧪 CRC(Cyclic Redundancy Check):資料檢查碼
為了避免 Frame 在傳送過程中因訊號干擾而損壞,Ethernet 在每個 Frame 尾端都會加入一段稱為 CRC 的檢查碼。
- 發送端根據 Frame 內容用公式產生一組 CRC
- 接收端收到後重新計算一次
- 若不一致 → 資料丟棄,等待上層重新發送
🧯 這就像信封上貼了防偽條碼,若條碼損壞,就不收這封信。
📦 交換器(Switch)才是本地網路中的搬運工
我們剛剛提到,資料連結層要送資料時,必須知道目的 MAC 位址,Frame 才能「針對地址」投遞。
那麼接下來的問題就是:
✅「資料幀已經標好目的 MAC,誰來幫它送出去?送去哪裡?怎麼送?」
這就牽涉到本層中最關鍵的網路設備 —— 交換器(Switch),它是整個區域網路中的交通指揮員與快遞站。
🔀 交換器(Switch):區網資料的搬運中心
Switch 是 Layer 2 的實體設備,工作內容是:
- 接收來自裝置的 Frame
- 讀取其中的 目的 MAC 位址
- 判斷該 MAC 是接在哪一個 port(連接埠)
- 把資料送往正確的出口 port,只給該裝置
那問題來了:
💭「Switch 怎麼知道這個 MAC 是在哪個 port 上?」
這就要靠它內建的工具 —— MAC Table!
📋 MAC Table:Switch 查表送件的關鍵機制
MAC Table(也叫 MAC 位址表),是 Switch 裡面用來記錄:
- 哪個 MAC 位址連在哪一個 port(連接孔)
這張表的格式可能長這樣:
MAC 位址 | 對應 port(實體孔) |
---|---|
00:1A:2B:3C:4D:5E | port 1 |
F2:34:11:90:AA:01 | port 3 |
🧾 port 是什麼?
每台裝置透過網路線插在 Switch 上的某個「port(連接埠)」上。
每一個 port 是 Switch 與一個裝置之間的通道,類似電梯口。
所以:
- port 1 → 可能是你的筆電
- port 2 → 可能是你的印表機
- port 3 → 是 Wi-Fi 分享器
而 MAC Table 就是 Switch 用來知道「誰在哪個 port 上」的對照表。
🔄 MAC Table 是怎麼建立的?
Switch 一開始對區網內誰是誰都不知道,所以 MAC Table 是靠「自動學習」建立的。
流程如下:
- 某台裝置傳送 Frame 給 Switch
- Switch 讀取該 Frame 的「來源 MAC」與來源 port
- 學起來:「喔,這個 MAC 是從 port 2 傳進來的」
- 寫進 MAC Table
這叫做 動態 MAC 學習(Dynamic MAC Learning)。
📤 資料幀要送出去時怎麼辦?
當 Frame 傳進來,Switch 會:
- 查看 目的 MAC 位址
- 查 MAC Table:這個 MAC 在 port 幾?
- 找到 → 把 Frame 送去該 port
- 找不到 → 就廣播給所有 port(類似 Hub)
🔁 Router vs Switch:兩者如何協同合作?
在網路教學中,Switch 與 Router 最容易被混為一談。
的確,這兩個設備有時候會整合在同一台裝置裡(像你家的無線路由器),但他們的功能其實來自不同的 OSI 層級,有明確的分工與合作邏輯。
比較項目 | 交換器(Switch) | 路由器(Router) |
---|---|---|
所在層級 | OSI 第 2 層(資料連結層) | OSI 第 3 層(網路層) |
傳輸範圍 | 本地區網(LAN) | 跨網段 / 網際網路(WAN) |
傳送依據 | MAC 位址 | IP 位址 |
核心功能 | 找到正確裝置(哪一台電腦) | 找到正確網路(哪一個網段) |
🧭 兩者的合作流程是這樣的:
想像你在家中用筆電連上 Wi-Fi,開啟瀏覽器並輸入一個網址,這背後發生了以下事情:
- 你打開網頁 → 資料會被轉換成封包,附上目的地的 IP(例如 google.com 的 IP)
- 封包先經過路由器(Router)
- 它負責判斷「這個 IP 不在我家區網內,要轉送到外面的網路」
- 所以它會將封包送出家中的網際網路(例如光世代、寬頻)
- 從外網回來的資料 → 又會先抵達家中的 Router
- Router 看「目的 IP 是你家內部的某個裝置」
- 接著把封包交給 Switch,讓 Switch 負責「區網內精準投遞」
🔁 所以具體來說:
- Router 負責的是『跨網段』的轉送與 IP 分配
→ 誰該上網、該找哪個遠端伺服器、怎麼出去 - Switch 負責的是『區網內』資料的實體傳遞
→ 哪台電腦接在哪個 port、怎麼把資料幀送去對的 MAC 位址
graph TD Internet["Internet 網際網路"] --- IP["公網 IP 位址"] IP --- Router["Router 路由器"] Router --- DHCP["私網 IP 分配 (DHCP)"] DHCP --- Switch["Switch"] DHCP --- AP["無線 AP"] Switch --- WiredDevice["有線裝置 (PC) MAC: AA..."] AP --- WirelessDevice["無線裝置 (手機、筆電) MAC: BB..."] %% 註解與說明 classDef internet fill:#e0f7fa,stroke:#0288d1 classDef router fill:#fff9c4,stroke:#fbc02d classDef switch fill:#e8f5e9,stroke:#388e3c classDef wireless fill:#ffebee,stroke:#c62828 classDef device fill:#f5f5f5,stroke:#616161 class Internet internet class Router router class Switch switch class AP wireless class WiredDevice,WirelessDevice device %% 標註文字 Router -.- RouterNote["← 根據 IP 決定去哪個網段"] Switch -.- SwitchNote["← 根據 MAC Table 傳送Frame"]
📡 那 Wi-Fi 又是誰在管?
其實現代家用「無線路由器」常常是三合一設備,內部包含:
功能 | 對應元件 | 所在層級 |
---|---|---|
分配 IP、連網出門 | Router | 第 3 層 |
LAN 裝置管理 | Switch | 第 2 層 |
提供無線訊號 | 無線基地台(AP) | 第 1/2 層 |
當你連上家中的 Wi-Fi,其實你是:
- 透過無線網路(AP)連入交換器(Switch)的某個「虛擬 port」
- Switch 幫你處理 MAC 位址轉發與 Frame 傳遞
- Router 再幫你轉出去外部網路
Layer 1:實體層(Physical Layer)— 資料真正「走」的地方
在 OSI 模型中,實體層是最底層,負責資料的實體傳輸。
你可以想像,前面幾層處理的都是「資料應該送給誰、送什麼」,而實體層則是負責「資料怎麼走、靠什麼東西送出去」。
這一層不關心 MAC 或 IP,不處理 Frame 或 Packet,它只關心一件事:
✅「怎麼把一堆 0 和 1,真的送出去?」
功能重點解析
🔢 比特訊號傳送(Bit Transmission)
📡 將 0 和 1 轉換成「真的會動的訊號」
在實體層中,資料已經被上一層(資料連結層)處理成一個個的位元(bit),像是一串 01010010…
但這些數字不能憑空傳送,必須被轉換成「實體世界中的訊號」,例如電壓、光、電磁波,才有辦法透過實體媒介傳輸。
這就是實體層的第一項核心功能:訊號編碼與傳送。
不同媒介會用不同方式表示 0 和 1:
傳輸方式 | 訊號表示法 | 範例說明 |
---|---|---|
有線(雙絞線) | 電壓高低(如 0V = 0,5V = 1) | 網路線中傳送的就是一連串的電壓變化 |
光纖 | 光的開/關、強/弱 | 開 = 1,關 = 0,就像摩斯電碼 |
無線 | 頻率或相位變化(調變方式) | 利用不同頻率或波型代表不同位元(如 Wi-Fi 訊號) |
這些訊號在實體媒介中快速傳遞,被接收端的裝置再轉回 0 和 1,進一步還原為上層資料(如 Frame 或 Packet)。
🧠 換句話說:實體層是讓抽象的「資料」能夠「動起來」的地方!
🧵 傳輸媒介管理(Transmission Media)
🚚 資料訊號走的「路線」是誰決定的?就是這裡!
實體層不只是把 bit 變成訊號,它還負責「讓訊號有路可走」。
這些路線,也就是所謂的 傳輸媒介(transmission media),分為兩大類:
1. 有線媒介(Wired Media):
媒介 | 說明 |
---|---|
雙絞線(Cat5e、Cat6) | 最常見的乙太網路線,內含多對銅線,傳送電訊號 |
同軸電纜 | 多用於有線電視、網路中繼 |
光纖(Optical Fiber) | 使用光來傳資料,速度快、干擾低、可傳輸更遠 |
2. 無線媒介(Wireless Media):
媒介 | 說明 |
---|---|
Wi-Fi(無線區域網路) | 利用無線電波傳輸資料 |
藍牙(Bluetooth) | 多用於短距離設備連接 |
LTE/5G | 手機上網使用的無線廣域網路 |
✅ 實體層的職責是讓這些媒介能穩定收發訊號:
包含監控訊號品質、控制干擾、設計抗噪電路等。
🔌 連接介面標準(Physical Interface)
🔗 裝置怎麼接上網路?實體頭與規格定義由這裡負責
當我們說資料要走進一台電腦或路由器時,實際上它是透過「接頭與接口」進出的,而這些就是實體層的最後一環。
實體層定義了各種連接規格與介面標準,讓不同裝置之間可以「插得上」、「通得了」。
常見的介面標準有:
介面 | 功能與應用 |
---|---|
RJ-45(網路線水晶頭) | 用於乙太網路的雙絞線連接(像是電腦、Switch) |
光纖接頭(SC、LC 等) | 用於光纖通訊設備,如機房、骨幹網 |
無線標準(如 IEEE 802.11) | 定義 Wi-Fi 裝置的發送功率、頻率範圍、天線特性等 |
📎 若沒有統一的介面與標準,不同設備之間就會「插不上、連不起、讀不了」。
📦 舉例說明:從數位資料變成「可以走的訊號」
想像你寄一封快遞,前面幾層已經幫你決定好了:
- 📮 收件人是誰(MAC / IP)
- 📦 要寄什麼資料(Frame / Packet)
但這些資訊還沒送出去之前,你還需要:
- 🚚 一輛快遞車(訊號)
- 🛣 馬路(網路線 / 無線電波)
- ⛳ 地圖上的實體路線(連接介面)
這些東西加起來,就是實體層的世界。
🧠 小提醒:
- 資料連結層處理的是 Frame(封裝好的資料)
- 實體層則是把 Frame 拆成一個個 bit(0 或 1),透過訊號發送出去
- 這一層沒有「邏輯判斷」,只負責把資料「送出去」,或「收進來」
小結
項目 | 內容 |
---|---|
傳送內容 | bit 位元(0 和 1) |
傳送方式 | 電訊號 / 光訊號 / 無線訊號 |
使用媒介 | 網路線、光纖、無線電波 |
常見設備 | Hub、Repeater、網路卡、Wi-Fi 模組 |
主要角色 | 將資料轉成訊號並實體送出 |
總結:下四層如何合作讓資料送達?
我們用一個簡單的比喻來總結整個流程:
- 第四層 傳輸層:把訊息切成小段,決定怎麼安全送出
- 第三層 網路層:決定每段訊息的路線(根據 IP)
- 第二層 資料連結層:確保在本地網路中能送給正確裝置(根據 MAC)
- 第一層 實體層:實際透過線路或無線傳送 0/1 訊號
這四層像是一條專業的物流鏈,讓你按下「送出」後,訊息能精準、迅速地送到世界另一端的使用者面前。
非常棒的問題!這個提問觸及到了網路模型教學中常被忽略但非常關鍵的點:不同層的資料單位(PDU, Protocol Data Unit)。
🧱 資料在網路中的分層單位(PDU)總整理:
OSI 層級 | 名稱 | 對應的資料單位(PDU) | 包含的控制資訊範例 |
---|---|---|---|
第 7~5 層 | 應用層~會議層 | Data(原始資料) | HTTP header、JSON、等 |
第 4 層 | 傳輸層(Transport) | Segment(TCP) / Datagram(UDP) | Port號、序號、確認位 |
第 3 層 | 網路層(Network) | Packet(封包) | IP 位址、TTL、協定類型 |
第 2 層 | 資料連結層 | Frame(資料幀) | MAC 位址、FCS 檢查碼 |
第 1 層 | 實體層 | Bit(位元) | 電訊號、光訊號、無線波 |
給初學者的學習建議:
- 記不住沒關係,先理解角色分工:每層都有專責功能,從軟體傳到硬體。
- 搭配圖解記憶更清楚:建議自己畫一次封包經過四層的路徑。
- 使用 Wireshark 等工具觀察封包:能看到這些層級在真實網路中的樣貌。
- 下一篇會更實戰:我們將透過 TCP/IP 模型,模擬實際網頁請求的過程!
如果你喜歡這篇文章,記得按下收藏和分享給你的夥伴!下一篇我們要介紹的,是實務上更常見的 TCP/IP 模型,別錯過囉 🙌