--- creator: Zach tags: 計算機網路 created: 2021-08-30 --- # 網路是怎樣連接的(二) 網路分層架構 ## 1. 思考重點 1. 組織垂直分層的好處是什麼 2. 網路自上而下的流程與分層的關聯 ## 2. 核心知識  <center> 網路分層架構知識點 </center> ## 3. 什麼是網路分層 **網路分層就是將整個複雜的網路系統專業分工**,每個層次分別處理對應的工作項目,如同應用層專門處理與使用者相關的服務,但是卻不會涉及到網路的連接部分,這種術業有專攻的工作模式不僅有效率還具備多種優勢 ### 3.1. 為甚麼要使用網路分層,好處在哪 #### 3.1.1. 可替代性 以改裝車為例,假如我們想換頭燈,只要把相應零件拆解下來,換上想要的零組件就可,其他諸如輪胎、汽缸等等的零件也是相同意思。**只要連接處不變,替換掉不同部件都是可行的**,網路也是一樣,假設今天我們想改變應用層通訊協定,只需要保證分層之間的通訊接口不變就可以,這種可替代性大大增加網路的應用場景以及靈活性 #### 3.1.2. 分工明確 因為大家都默認這種分層概念,在開發上可以擁有更高的共通性,增加程式碼的可移植性和可讀性,同時不同的分層只要專注在如何實現首要目標,不用考愈多餘的問題 ### 3.2. 常見網路分層架構  <center> 常見網路分層架構 </center> <br/> 網路分層的核心理念不單單只是增加可移植性與開發效率,其中相當重要的觀念是**上層使用下層提供的服務並結合自身的功能向更上層提供服務**,例如傳輸層的目的是將兩個不同主機端運行的不同應用程序建立溝通,他使用了網路層的IP查找功能以及數據鏈路層網卡驅動控制(涉及作業系統)等[^1],基於這個概念,許多機構開發出特有的網路分層結構 [^1]:分層不單單是使用軟體來實現,例如應用層和傳輸層幾乎是使用軟體來達成,但網路層則使用了軟體以及硬體來達成 #### 3.2.1. TCP/IP與OSI差別 先說結論,目前網路分層架構大部分(90%以上)均遵守TCP/IP協定,原因是TCP/IP相較於OSI有更好的程式開發性以及實際應用的可能性 ##### 3.2.1.1. OSI參考模型 OSI模型是*ISO*機構在上世紀70年代設計出的網路分層結構,它的目的是要解決市面上產品的標準化問題,**是第一個將網路分割出不同層次的模型**,由OSI參考模型訂定的協定稱為OSI七層協定[^2]。 OSI的核心目的是為了訂立一個統一的**規格**,同時他將網路架構細分出七層,在進行學術探討時能夠更快地找出索引,可以說OSI代表的就是網路分層中的學術派 ##### 3.2.1.2. TCP/IP通訊協定  <center> TCP/IP協定族 </center> <br/> TCP/IP是由民間組織*IETF*建立的通訊協定族,**其實所謂的TCP/IP就是網路中實際應用的通訊協定總稱**,看到它與OSI的主要不同了嗎?TCP/IP主要面向的就是**以程式開發為首要考量**,先求能動,其次再來訂定規格而且*IETF*機構宗旨就是讓任何人都可以加入組織,普及了TCP/IP,可以說TCP/IP分層是主打應用的實戰派 [^2]:OSI的各層工作原理將會在深入理解篇介紹 ## 4. TCP/IP **TCP/IP是以安裝在電腦上的程式,如何進行開發為目的作為模組化的**,因此我們有必要介紹各層級在軟體中的負責對象 * 應用層→應用程式 * 傳輸層→作業系統 * 網路層→作業系統 * 數據鏈路層→驅動程式與網路介面 接下來我們將簡單介紹4個分層分別負責網路傳輸中的任務,並且以寫信給對方作為類比 <br/>  <center> 以送信比喻網路分層 </center> <br/> ### 4.1. 應用層 應用層直接提供服務給使用者,例如HTTP(超文本傳輸協議)就是像server發起請求,並把結果呈現給使用者。應用層不需要考慮額外的數據傳輸問題,當兩個不同設備想進行通信時,應用程式就把應用數據發給傳輸層 以送信做為比喻的話就好比將想傳達的訊息寫在信中,直接把寄件人的目的表達出來 ### 4.2. 傳輸層 傳輸層的任務主要是連結兩台端節點上的應用程式,並使其能夠溝通,因為每台主機有可能同時運行多個應用程式,因次我們需要一個特殊的訊息來分辨到底是誰與誰在進行溝通,而這個特殊的訊息就是*Port(端口)*[^3] 以送信做為比喻的話,傳輸層就好比填上寄件人與收件人地址,因為同一個地址有可能同時存在多名成員,我們必須確認是誰與誰在進行聯繫 ### 4.3. 網路層 為了實現應用程式之間的溝通,傳輸層需要仰賴網路層提供的服務 網路層提供處理數據的最小單位*Packet(封包)*,並且查詢IP地址,好讓核心網[^4]中的路由器進行IP跳轉。IP協議是網路層最常使用的協議,他提供兩大重要功能: - IP地址查找→下一個目的地該往哪裡走 - 路由→該選擇哪一條路線 以送信作為比喻的話,就好比收件地址,例如:台北市信義區XXX里XXX巷XX號,讓郵差能夠依照地址不斷查找收件人住址,並且郵差有能力判斷應該走哪一條路線比較有效率 ### 4.4. 數據鏈路層 當我們由網路層得知下一跳目標IP地址時,就可以進行IP地址跳轉,但問題來了,由於在網路核心中存在著無數台網路交換設備,要如何知道對方設備的IP地址? 數據鏈路層要處理的就是藉由ARP協議計算出每台設備的MAC地址[^5],這樣就可以得到對方設備的IP地址了 以送信做為比喻的話,數據鏈路層就像郵差送信途中不斷查找門牌號碼,決定該走哪條路的這個行為 ### 4.5. 物理層 之所以沒有將物理層列入具體的TCP/IP協議族中,是因為TCP/IP是面相軟體應用開發的,**物理層的用意是將數據練路層的數據轉換成01數位訊號,讓其能夠在通信介質上傳輸** 綜合以上觀點,假如只討論TCP/IP協定,我們就只需要專注應用層、傳輸層、網路層、數據鏈路層,但如果我們探討的是網路分層協定的架構,就需要把物理層算進去 以送信做為比喻的話,物理層就像是郵差的交通工具 ### 4.6. 數據的封裝性  <center> 數據的封裝性 </center> <br/> 從上圖我們可以看出網路分層中,每往下走一階層就會將原有的數據包加上一個專屬的頭部消息,或者對消息封包做分割處理,這種層層堆疊的處理模式有利於各層專門處理相應的任務,下層不斷地向上層提供他自己本身的服務,最終我們透過物理傳播媒介,將數據鏈路層包裝後的消息封包轉換成二進位消息後傳送出去 相反的,每個分層透過解析頭部消息,執行該層所提供的服務,並將消息主題上交給上一層,最後對方的應用程式就可以獲取本地應用程式想交付的應用程式消息,這些特性都體現了網路分層架構中的一個重要特性: **封裝性** #### 4.6.1. 網路傳輸過程中設備都應該具備所有分層嗎 不用,例如主機端節點的目的是為了要傳送應用程式消息,所以需要使用到應用層,但有些網路核心中的路由器,只需要使用到IP查找與跳轉的功能,因此往往只具備數據鏈路層與網路層,而有些交換機則只需要計算MAC地址,這也代表他僅僅只需要數據鏈路層的功能而已 <br/> [^3]:通常服務器上的端口號都是事先規定好的,例如Web瀏覽器是80 [^4]:[計算機網路概述(一) 網路是甚麼](https://hackmd.io/@Zachlin66/BkqC2C6ZF) 網路核心章節 [^5]:更精確地說應該是每一個網卡都有相應的MAC地址,因為同一台電腦可同時存在多個網卡 相關文章: [計算機網路概述(一) 網路是甚麼](https://hackmd.io/@Zachlin66/BkqC2C6ZF)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.