雖然從小學就開始接觸電腦課,但那時候的我根本把教室電腦當成遊戲機,上課時間幾乎都在玩,真正認真聽課的次數少之又少。一直到國高中,因為要準備升學考試,才不得不乖乖開始聽老師講課。
「各位同學,今天我們要學一個東西,叫做網路七層架構。」老師在黑板上寫下這幾個字,然後開始講解。
通常老師在正式上課之前,會先把全班的電腦「控制」住,把大家的螢幕都同步成一樣的畫面,這樣就沒有人能在上課時偷偷玩遊戲。當時用的軟體就叫做「網路教室」。
講解的過程中,我還記得老師說過一句話:
「網路七層架構是一個分層式模型,主要用來幫助我們理解網路通訊的過程。」老師邊操控著電腦畫面,邊切換投影片,一邊講解著。
老師講網路七層架構?抱歉,我只懂「遊戲一層」。
「ㄟㄟ,XXX 要不要來打信長?」我問著坐在我旁邊的同學。
「好啊!」同學回答。
嗯?你是不是很好奇一件事情呢?
「老師不是已經控制住你們電腦了?怎麼還可以打遊戲?」
沒錯,雖然當下確實不能打遊戲,但我後來發現了一個小技巧能擺脫老師的控制──只要直接「關機」,就能把控制權解除,接著就能隨心所欲地做任何事了。
小技巧其實很簡單:只要先打開一些會在關機時跳出「是否要強制關閉」視窗的程式,像是 Word、Excel、PowerPoint 都行。
當 Windows 執行關機時,系統會嘗試把能關閉的程式都關掉,其中也包含了「網路教室」。
這時候,如果有程式跳出「是否要關閉」的視窗,你只要選「否」,就能成功讓「網路教室」被關掉,同時電腦也不會真的關機。這樣一來,老師的控制就解除了──不過,好孩子千萬別學這招唷!
那這招真的沒有壞處嗎?當然有。記得有一次老師在課後布置作業,但因為我早就把網路教室關掉,結果完全不知道老師出了什麼作業。畢竟要讓網路教室恢復正常,只能重新啟動電腦才行。
前面我們章節介紹了不少東西,其中包含 Email、即時通以及遊戲等,這些都脫離不了一個核心概念,也就是「網路」,但你有想過一個問題嗎?
「網路是怎麼運作的呢?」
為了幫助大家理解網路的運作與架構,接下來要介紹的是「OSI 七層模型」。別搞錯了,這可不是七龍珠,裡面沒有悟空,只有滿滿的網路協定。
簡單來說,OSI 模型(Open Systems Interconnection Model)就是一個網路通訊的參考架構,它把資料傳輸的過程拆成七層,讓我們更容易理解網路是怎麼運作的,同時也方便不同系統之間能互通、維護。
不過要注意,OSI 模型其實是一個 理論模型,現實中的網路協定(像是 TCP/IP)並不完全依照七層來劃分。但 OSI 模型依然是理解網路運作的重要參考框架,特別是在排查與分析網路問題時,常會用它來當作依據。
那麼,簡單來講 OSI 模型就是將網路的硬體跟軟體定義成了七層標準:
但我們網路實際使用的是 TCP/IP 則是四層模型,並且是將 OSI 的七層模型進行了合併:
可是後來又發現,切割成五層架構才比較合理實際狀況:
「ㄟ...不是,這麼多種模型,所以我們到底要學什麼?」
你可能會想問:「為什麼不直接講 TCP/IP?」
其實很簡單,OSI 是理論模型,TCP/IP 則是實際應用。差別在於 OSI 把網路通訊切得更細,所以在分析或排查問題時更好用。也因此,接下來我們會著重介紹 OSI 七層模型。
首先,OSI 七層模型由 下到上分為 1 到 7 層(實體層 → 應用層),不過我們常常會從第七層(應用層)開始往下解釋,因為它最貼近使用者:
在 OSI 模型中,從第七層往下算到第一層,層級越高就越接近使用者,層級越低則越貼近硬體設備。而每一層都有其特定的功能與責任。為了更好理解,這裡舉一個情境來說明:
「小明今天打開 Chrome 瀏覽器,輸入了 www.google.com,然後按下 Enter 鍵,接著瀏覽器就會顯示 Google 的首頁。」
那麼把這個情境套用到 OSI 七層模型中,會是這樣的:
接著,Google 的伺服器在收到請求後,也會依照相同的七層流程進行處理,最後再把 Google 首頁的資料回傳給小明的瀏覽器,而瀏覽器則會把這些資料組合並呈現在螢幕上。
接下來說明一下 OSI 在傳輸時的流程:一開始,使用者這邊會從第七層往下處理,一路到第一層,再透過網路把資料傳送到對方伺服器。對方伺服器接收到資料後,則會從第一層往上處理,直到第七層完成。
那 Google 又是怎麼把資料回傳給小明呢?其實流程完全相同,只是這次是從 Google 伺服器開始,先從第七層往下處理到第一層,再透過網路傳送到小明的電腦。小明的電腦接收到資料後,會從第一層一路往上處理到第七層,最後在瀏覽器中呈現出來。
以上就是 OSI 七層模型的完整運作流程。
最後,我再幫大家整理一下七層模型的層級名稱、功能說明,以及對應的常見協定或應用程式:
層級 | 中文名稱 | 英文名稱 | 功能說明 | 常見協定/應用程式 |
---|---|---|---|---|
7 | 應用層 | Application Layer | 使用者與網路互動的介面,提供應用服務 | HTTP、FTP、SMTP、DNS、Telnet、Web、Email |
6 | 表示層 | Presentation Layer | 資料格式轉換、編碼解碼、壓縮加密處理 | TLS/SSL、JPEG、MP4、UTF-8、Base64 |
5 | 會議層 | Session Layer | 管理會話連線、控制對話、建立/維持/終止連線 | NetBIOS、RPC、SQL session、WebSocket |
4 | 傳輸層 | Transport Layer | 分段傳輸、錯誤控制、流量控制、重傳機制 | TCP、UDP、QUIC |
3 | 網路層 | Network Layer | 路由選擇、IP 位址處理、封包傳輸、跨網段通訊 | IP、ICMP、IGMP、BGP、IPSec |
2 | 資料連結層層 | Data Link Layer | 封裝資料幀、錯誤偵測、MAC 管理、在同一網段傳輸 | Ethernet、ARP、PPP、Switch、Wi-Fi MAC 層 |
1 | 實體層 | Physical Layer | 實際媒介的傳輸,如電壓、電磁波、光訊號轉換成 0 和 1 | RJ45、光纖、同軸電纜、無線電波、Hub、Repeater |
記得我剛出社會去面試時,真的被問到過 OSI 模型,當下我的表情大概就是這樣:
?_?
畢竟這東西已經離我好幾年了,為了面試我還特地翻出以前的筆記,才把 OSI 七層模型重新複習了一遍 XD
本文將同步更新至以下網站: