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) 的流程,確認彼此都在線、準備好了,才開始傳送資料。

🤝 什麼是三次握手(詳解版)?

當你開一個網頁或連線到某個伺服器時,背後其實發生了一段「對話流程」,就像你打電話前先確認對方有接起來,三次握手就是這樣的確認機制。

📶 三個步驟簡單講:

  1. Client → Server:SYN
    • 客戶端發出「SYN」封包(SYN=Synchronize),意思是: 「嗨,我想跟你建立連線,我的初始序號是 100。」
  2. Server → Client:SYN + ACK
    • 伺服器收到後,回應一個「SYN + ACK」封包,意思是: 「OK,我收到了你的要求,我的初始序號是 300,順便確認你的序號 100 + 1。」
  3. Client → Server:ACK
    • 客戶端再送出一個「ACK」封包,意思是: 「好,我也確認你的序號 300 + 1,那我們開始吧!」

✅ 這時,雙方的連線就建立完成,可以開始正式傳送資料了。

🔍 每一步在做什麼?

步驟誰傳給誰傳什麼做什麼
第一次握手Client → ServerSYN發出連線請求,附上自己的序號(如 Seq=100)
第二次握手Server → ClientSYN + ACK回應連線,附上自己的序號 + 確認收到 Client 的序號
第三次握手Client → ServerACK確認 Server 的序號,連線正式建立

📬 為什麼需要三次?

  • 🛡 確保雙方都在:只收到一封 SYN,不代表對方真的有回應。
  • 📦 同步序號:讓彼此知道從哪個編號開始傳資料,避免資料順序混亂。
  • 🤝 建立「雙向」連線:TCP 是雙向的,兩邊都得能發資料、收資料才行。

🧺 生活比喻:打電話確認你在

  1. 你打電話過去(SYN):「喂~在嗎?」
  2. 對方接起來(SYN+ACK):「有聽到,我在!你聽得到我嗎?」
  3. 你說:「OK 聽到了,我們可以開始說話了」(ACK)
🎯 三次握手流程:
  1. Client(主動方)送出 SYN(我要連線)
  2. Server 回 SYN+ACK(我在這,收到你的請求)
  3. Client 再送 ACK(收到你的回應了)

握手成功後,才會開始真正的資料交換。這樣可以避免浪費資源在錯誤連線上。

🔐 補充:
  • TCP 在斷線時也有「四次揮手(Four-way Handshake)」的拆線機制,確保資料全部送完後才結束連線。
  • UDP 則完全不會握手,開門就丟資料,效率高但風險也高。
📞 為什麼需要「四次」才能結束連線?


四次揮手(4-way handshake) 是 TCP 協定中用來「正常結束一段連線」的標準流程。

就像三次握手建立連線,四次揮手則是有禮貌地說:「我傳完了,我們可以掛電話囉!」

因為 TCP 是雙向通訊,兩邊都可能還有資料要傳。所以連線不能一方說「我要斷」就直接關掉,必須雙方都確認「資料已經傳完,真的可以斷」才行。

✋ 四次揮手流程圖解:

步驟誰傳給誰封包內容意思
第一次揮手Client → ServerFIN客戶端說:「我沒資料要傳了,準備關閉了。」
第二次揮手Server → ClientACK伺服器說:「我知道了,等我傳完我的資料再關。」
第三次揮手Server → ClientFIN伺服器說:「我也傳完了,現在可以關了。」
第四次揮手Client → ServerACK客戶端說:「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 狀態,等一段時間後完全釋放連線資源
🧺 生活比喻:結束一通有禮貌的電話
  1. 你說:「我講完了,你可以掛了」(FIN)
  2. 對方說:「我知道了,等我講完」(ACK)
  3. 對方也說:「我講完了,我要掛了喔」(FIN)
  4. 你說:「好,我也掛了,掰掰」(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 傳資料 = 丟紙飛機

你在教室裡丟一台紙飛機給對面同學,你不會等他說「我收到了」才丟下一台。反正你可以不斷丟,希望他有機會接到大部分訊息。

就像你在看直播,主機只管繼續送資料,不會等你「看懂」才繼續播下去。即便漏了幾個畫格也無妨,畫面不能卡住才是重點。

🧩 小提醒(觀念整理):

特性TCPUDP
是否連線✅ 有(需要建立連線)❌ 無(送了就送)
是否確認接收✅ 有 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
  • 它們不在同一個網段,資料就需要透過網路層來「跳網」
📦 舉例說明:

你在台灣打開一個在美國的網站:

  1. 你的裝置產生封包,附上 來源 IP(你的私有 IP)目的 IP(網站的公有 IP)
  2. 封包先傳到你家裡的路由器(第一跳)
  3. 再傳到電信公司的中繼站(第二跳)
  4. 再傳往國際海底電纜、雲端機房……
  5. 一路跳躍經過十幾台路由器,最終送到 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 的實體設備,工作內容是:

  1. 接收來自裝置的 Frame
  2. 讀取其中的 目的 MAC 位址
  3. 判斷該 MAC 是接在哪一個 port(連接埠)
  4. 把資料送往正確的出口 port,只給該裝置

那問題來了:

💭「Switch 怎麼知道這個 MAC 是在哪個 port 上?」

這就要靠它內建的工具 —— MAC Table

📋 MAC Table:Switch 查表送件的關鍵機制

MAC Table(也叫 MAC 位址表),是 Switch 裡面用來記錄:

  • 哪個 MAC 位址連在哪一個 port(連接孔)

這張表的格式可能長這樣:

MAC 位址對應 port(實體孔)
00:1A:2B:3C:4D:5Eport 1
F2:34:11:90:AA:01port 3
🧾 port 是什麼?

每台裝置透過網路線插在 Switch 上的某個「port(連接埠)」上。
每一個 port 是 Switch 與一個裝置之間的通道,類似電梯口。

所以:

  • port 1 → 可能是你的筆電
  • port 2 → 可能是你的印表機
  • port 3 → 是 Wi-Fi 分享器

而 MAC Table 就是 Switch 用來知道「誰在哪個 port 上」的對照表。

🔄 MAC Table 是怎麼建立的?

Switch 一開始對區網內誰是誰都不知道,所以 MAC Table 是靠「自動學習」建立的。

流程如下:

  1. 某台裝置傳送 Frame 給 Switch
  2. Switch 讀取該 Frame 的「來源 MAC」與來源 port
  3. 學起來:「喔,這個 MAC 是從 port 2 傳進來的」
  4. 寫進 MAC Table

這叫做 動態 MAC 學習(Dynamic MAC Learning)

📤 資料幀要送出去時怎麼辦?

當 Frame 傳進來,Switch 會:

  1. 查看 目的 MAC 位址
  2. 查 MAC Table:這個 MAC 在 port 幾?
  3. 找到 → 把 Frame 送去該 port
  4. 找不到 → 就廣播給所有 port(類似 Hub)

🔁 Router vs Switch:兩者如何協同合作?

在網路教學中,Switch 與 Router 最容易被混為一談

的確,這兩個設備有時候會整合在同一台裝置裡(像你家的無線路由器),但他們的功能其實來自不同的 OSI 層級,有明確的分工與合作邏輯。

比較項目交換器(Switch)路由器(Router)
所在層級OSI 第 2 層(資料連結層)OSI 第 3 層(網路層)
傳輸範圍本地區網(LAN)跨網段 / 網際網路(WAN)
傳送依據MAC 位址IP 位址
核心功能找到正確裝置(哪一台電腦)找到正確網路(哪一個網段)
🧭 兩者的合作流程是這樣的:

想像你在家中用筆電連上 Wi-Fi,開啟瀏覽器並輸入一個網址,這背後發生了以下事情:

  1. 你打開網頁 → 資料會被轉換成封包,附上目的地的 IP(例如 google.com 的 IP)
  2. 封包先經過路由器(Router)
    • 它負責判斷「這個 IP 不在我家區網內,要轉送到外面的網路」
    • 所以它會將封包送出家中的網際網路(例如光世代、寬頻)
  3. 從外網回來的資料 → 又會先抵達家中的 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,其實你是:

  1. 透過無線網路(AP)連入交換器(Switch)的某個「虛擬 port」
  2. Switch 幫你處理 MAC 位址轉發與 Frame 傳遞
  3. 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 模組
主要角色將資料轉成訊號並實體送出

總結:下四層如何合作讓資料送達?

我們用一個簡單的比喻來總結整個流程:

  1. 第四層 傳輸層:把訊息切成小段,決定怎麼安全送出
  2. 第三層 網路層:決定每段訊息的路線(根據 IP)
  3. 第二層 資料連結層:確保在本地網路中能送給正確裝置(根據 MAC)
  4. 第一層 實體層:實際透過線路或無線傳送 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 模型,別錯過囉 🙌

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *