【計算機網路筆記】1.5 Protocol Layers and Their Service Models
【計算機網路筆記】1.5 Protocol Layers and Their Service Models
Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。
1.5.1 Layered Architecture(分層架構)
航空系統的比喻
網際網路是一個非常複雜的系統,包含了應用程式、協定、端系統、封包交換機和各種連結層媒介。
為了理解這個複雜的系統,書中以航空系統作為比喻。
搭飛機的過程當中涉及了票務代理、行李檢查、登機口人員、機師、飛機、空中交通管制等。
若要把這個系統描述清楚,可依照「動作發生的順序」來分層:

Image Source:Image Source:Computer Networking: A Top-Down Approach (8th ed., p. 78, Figure 1.22)
- 最頂層(票務):購買機票(來源端),最後抱怨行程(目的地端)。
- 行李層:托運行李,最後領取行李。
- 登機門層:在登機口登機,最後下機。
- 起飛/降落層:飛機起飛,最後降落。
- 最底層(飛機航線):飛機在空中被導航飛行。
書中引出一個概念:服務模型(Service Model),每一層都在為它的上一層提供服務。
例如「登機門層」利用了「起飛/降落層」提供的服務(把人和行李從跑道送到跑道),來完成它自己的任務(把人從登機口送到登機口)。
為什麼要分層?(優缺點)
- 模組化(Modularity)與維護性:分層最大的好處是將複雜系統分解為定義明確的部分,提供了模組化,使得更改某一層的實作變得容易,而不會影響到系統的其他部分。
- 例如:假設航空公司改變了登機程序(如按身高登機),只改變了「登機門層」的實作,並不會影響到下面的「起飛/降落層」或上面的「票務層」。
- 缺點:
- 功能重複:某一層可能會重複下層的功能。
- 資訊隱藏的代價:某一層可能需要另一層的資訊(例如時間戳記),但嚴格的分層會阻礙這種跨層的資訊存取。
網際網路的協議堆疊(Internet Protocol Stack)
各層級的協定合稱為協定堆疊(protocol stack),網際網路的協定堆疊包含五層:
- 應用層(Application Layer)
- 傳輸層(Transport Layer)
- 網路層(Network Layer)
- 資料連結層(Data Link Layer),可簡稱為連結層(Link Layer)。
- 實體層(Physical Layer)
接下來是各層的簡介。
應用層(Application Layer)
此為網路應用程式(Web Apps)及其協定(Protocols)駐留的地方。
協定範例:
- HTTP(HyperText Transfer Protocol):網頁瀏覽(傳輸 Web 文件)。
- SMTP(Simple Mail Transfer Protocol):電子郵件傳輸。
- FTP(File Transfer Protocol):檔案傳輸。
- DNS(Domain Name System):網域名稱系統(將網址轉換為 IP 位址)。
資料單元名稱:在這一層的訊息封包被稱為 Message(訊息)。
傳輸層(Transport Layer)
該層負責在應用程式端點之間傳送應用層訊息。
協定範例:
- TCP(Transmission Control Protocol,傳輸控制協定):提供連線導向的服務,保證資料送達、流量控制(Flow control)和壅塞控制(Congestion control),它會將長訊息分解為較短的片段。
- UDP(User Datagram Protocol,使用者資料包協定):提供非連線導向的服務,這是一種陽春(no-frills)的服務,不保證可靠性,也沒有流量或壅塞控制。
資料單元名稱:在這一層的封包被稱為 Segment(區段)。
網路層(Network Layer)
該層負責將資料包(Datagrams)從一台主機移動到另一台主機,傳輸層會將 Segment 和目標地址交給網路層,就像把寫好地址的信交給郵局一樣。
協定範例:
- IP 協定(Internet Protocol):定義了資料包的欄位以及端系統和路由器如何處理這些欄位,這是將網際網路黏合在一起的膠水。
- 繞送協定(Routing Protocol,也稱路由協定):決定資料包從來源到目的地的路徑。
資料單元名稱:在這一層的封包被稱為 Datagram(資料包)。
連結層(Link Layer)
網路層依靠連結層將資料包從路徑上的一個節點(主機或路由器)移動到下一個節點,服務取決於具體的連結層協定(有些提供可靠傳遞,有些則無)。
協定範例:
- Ethernet(乙太網路)
- WiFi(無線網路)
- DOCSIS(Data-Over-Cable Service Interface Specifications,電纜網路協議)
- PPP(Point-to-Point Protocol,對等協定)
資料單元名稱:在這一層的封包被稱為 Frame(訊框)。
實體層(Physical Layer)
實體層負責將 Frame(訊框)中的每一個 bit(位元)從一個節點移動到下一個節點。
實體層與傳輸媒介高度相關(如雙絞銅線、光纖、無線電波等),不同的媒介有不同的實體層協定。
1.5.2 Encapsulation(封裝)
理解路徑與層級

Image Source:Image Source:Computer Networking: A Top-Down Approach (8th ed., p. 82, Figure 1.24)
- 傳送端(Source):資料從最上層的「應用層」開始,一層一層往下傳遞,經過
- 傳輸層
- 網路層
- 連結層
- 最後到實體層。
- 接收端(Destination):資料從最下層的「實體層」接收,然後一層一層往上拆解,最後回到「應用層」。
- 中間節點(Router & Link-layer switch):
- 連結層交換器(Link-layer switch):只處理下面兩層(實體層、連結層)。
- 路由器(Router):處理下面三層(實體層、連結層、網路層)。這就是為什麼路由器可以處理 IP(第三層)協定,而交換器通常只認得 MAC 位址(第二層)。
註:MAC 位址(Media Access Control address)即為實體位址(Physical Address)。
封裝(Encapsulation)的過程
當資料從傳送端往下的每一層移動時,每一層都會把上一層傳來的資料當作「內容」,然後加上自己的「標頭(Header)」,這就像俄羅斯娃娃一樣,一層包一層,就是套娃的概念,一直套。
來看應用層訊息(Message, M)的傳遞過程:
- 應用層(Application Layer):產生原始訊息 。
- 傳輸層(Transport Layer):
- 收到 。
- 加上傳輸層標頭( )。
- 形成區段(Segment),也就是 跟 。
- 標頭包含相關資訊:如讓接收端知道要送到哪個應用程式,以及檢查錯誤的位元等。
- 網路層(Network Layer):
- 收到區段 跟
- 加上網路層標頭( )。
- 形成資料包(datagram) = 、 、
- 標頭包含資訊:如來源和目的地的 IP 位址。
- 連結層(Link Layer):
- 收到資料包 、 、 。
- 加上連結層標頭( )。
- 形成訊框(frame) = 、 、 、
- 此時資料包就成了連結層訊框的酬載(Payload)。
到連結層封裝就結束了,最後再由實體層負責將 Frame(訊框)中的每一個 bit(位元)從一個節點移動到下一個節點。
封裝的比喻
書中舉了公司內部信件的例子來對封裝做比喻:
- Alice(傳送端):寫了一張備忘錄()給 Bob。
- 公司內部信封(傳輸層):Alice 把備忘錄放進信封,上面寫著 Bob 的名字和部門( ),即為傳輸層的區段(Segment)。
- 郵局信封(網路層):公司的收發室把內部信封放進一個更大的郵局信封,上面寫著分公司的郵寄地址( ),即為網路層的資料包(Datagram)。
- 郵差遞送(連結層/實體層):郵局負責把這個大信封送到另一間分公司。
解封裝(De-encapsulation)
當資料到達接收端時,過程剛好相反:
- 實體層:接收位元流。
- 連結層:讀取標頭 ,確認無誤後,把裡面的內容(資料包,Datagram)往上丟給網路層。
- 網路層:讀取標頭 (確認 IP),把裡面的內容(區段,Segment)往上丟給傳輸層。
- 傳輸層:讀取標頭 (確認 Port),把裡面的內容(訊息 )交給正確的應用程式(如瀏覽器或 Email 軟體)。
總整理
分層架構(Layered Architecture)
為何需要分層?
網際網路是一個高度複雜的系統。
分層的目的,是用「模組化」的方式管理複雜度,讓每一層只專注處理自己該負責的事情,並透過明確的「服務介面」與上下層互動。
書中以航空系統作為比喻:
- 整個搭飛機流程很複雜,但可以依「事情發生的順序」拆成多層。
- 每一層都在為上一層提供服務,而不必知道上一層的內部細節,這稱為服務模型(Service Model)。
分層優缺點
優點:
- 模組化、好維護:修改某一層的實作,不會影響其他層。
- 系統更容易設計與演進(就像航空公司可以改登機規則,但飛機仍照樣起飛)。
缺點:
- 功能可能重複:不同層可能做相似的事情。
- 資訊被刻意隱藏:某層若需要下層資訊,嚴格分層反而造成不便。
網際網路的五層協定堆疊(Internet Protocol Stack)
網際網路採用五層架構,由上而下如下:
- 應用層(Application Layer)
- 網路應用與其協定所在之處。
- 例:HTTP、SMTP、FTP、DNS。
- 資料單位:Message(訊息)。
- 傳輸層(Transport Layer)
- 負責「端點到端點」的資料傳送。
- TCP:可靠、流量控制、壅塞控制。
- UDP:不可靠、但輕量快速。
- 資料單位:Segment(區段)。
- 網路層(Network Layer)
- 負責「主機到主機」的路由與轉送。
- IP 是核心協定,路由協定決定路徑。
- 資料單位:Datagram(資料包)。
- 連結層(Link Layer)
- 負責「節點到節點」的資料傳送。
- 例:Ethernet、WiFi。
- 資料單位:Frame(訊框)。
- 實體層(Physical Layer)
- 將 bit 真正送上媒介(線材、光纖、無線)。
- 關心的是「怎麼送位元」。
封裝(Encapsulation):資料如何一層一層包起來
- 傳送與接收的方向
- 傳送端:資料由上層往下層走,一層一層「加標頭」
- 接收端:資料由下層往上層走,一層一層「拆標頭」
- 中間設備
- 交換器:只處理實體層、連結層
- 路由器:處理到網路層(IP)
- 封裝的本質
封裝就像俄羅斯娃娃:- 每一層把「上一層的資料」當成內容(Payload)
- 再加上自己的標頭(Header)
封裝順序如下:
- 應用層:產生訊息
- 傳輸層:加上 → Segment
- 網路層:加上 → Datagram
- 連結層:加上 → Frame
- 實體層:把 Frame 轉成 bit 傳送
解封裝: - 實體層:接收位元流。
- 連結層:讀取標頭 ,把 Datagram → 網路層
- 網路層:讀取標頭 ,把 Segment → 傳輸層
- 傳輸層:讀取標頭 ,把 Message 交給正確的應用程式
- 封裝與解封裝的比喻
- 封裝:公司內信 → 郵局信 → 郵差遞送
- 解封裝:郵差 → 郵局 → 公司內部 → 收件人
