常見的計算機網絡體系結構
從本節課開始,我們要用 4 次課的時間來介紹有關計算機網絡體系結構的知識,具體包含以下內容:
- 一,常見的計算機網絡體系結構
- 二,計算機網絡體系結構分層的必要性
- 三,計算機網絡體系結構分層思想舉例
- 四,計算機網絡體系結構中的專用術語
?
計算機網絡體系結構是計算機網絡課程中的重點和難點,它的抽象概念較多,建議大家學習時要多思考,這些概念對后面的學習很有幫助。本節課我們介紹常見的計算機網絡體系結構。
為了使不同體系結構的計算機網絡都能互聯,國際標準化組織于 1977 年成立了專門機構研究該問題,不久他們就提出了一個試圖使各種計算機在世界范圍內互聯成網的標準框架,也就是著名的開放系統互聯參考模型,簡稱為 OSI。該模型是一個 7 層協議的體系結構,從下往上依次是物理層、數據鏈路層、網絡層、運輸層、會話層、表示層、應用層,它是法律上的國際標準。
到了 20 世紀 90 年代初期,雖然整套的 OSI 國際標準都已經制定出來了,但這時因特網已搶先在全世界覆蓋了相當大的范圍。因特網從 1983 年開始使用 TCP/IP 協議組,并逐步演變成 TCP/IP 參考模型,該模型是一個 4 層協議的體系結構,從下往上依次是網絡接口層,網際層、運輸層、應用層,它是事實上的國際標準。
在過去制定標準的組織中,往往以專家學者為主,但現在許多公司都紛紛擠進各種各樣的標準化組織,使得技術標準有著濃厚的商業氣息。一個新標準的出現,有時不一定反映出其技術水平是最先進的,而是往往有著一定的市場背景。從這種意義上說,能夠占領市場的就是標準。OSI 標準失敗的原因,可歸納為:
- 第一 OSI 的專家們缺乏實際經驗,他們在完成 OSI 標準時沒有商業驅動力
- 第二,OSI 的協議實現起來過分復雜,而且運行效率很低
- 第三,OSI 標準的制定周期太長,因而使得按 OSI 標準生產的設備無法及時進入市場
- 第四,OSI 的層次劃分也不太合理,有些功能在多個層次中重復出現
對比這兩個體系結構可以看出 TCP/IP 體系結構相當于將 OSI 體系結構的物理層和數據鏈路層合并為了網絡接口層,并去掉了會話層和表示層。另外由于 TCP/IP 在網絡層使用的協議是 IP 協議,中文意思是網際協議,因此 TCP/IP 體系結構的網絡層常稱為網際層。
??
?
大多數用戶每天都有接入因特網的需求,這就要求用戶的主機必須使用 TCP/IP 協議。當然了,即使用戶的網絡不需要接入因特網,也可以使用 TCP/IP 協議,在用戶主機的操作系統中,通常都帶有符合 TCP/IP體系結構標準的 TCP/IP 協議族,而用于網絡互聯的路由器中,也帶有符合 TCP 體系結構標準的 TCP 協議組,只不過路由器一般只包含網絡接口層和網際層。
TCP/IP體系結構的網絡接口層,并沒有規定什么具體的內容,這樣做的目的是可以互聯全世界各種不同的網絡接口,例如有線的以太網接口,無線局域網的 WiFi 接口,而不限定僅使用一種或幾種網絡接口。因此本質上 TCP/IP 體系結構只有上面的三層,IP 協議是 tcpip 體系結構網際層的核心協議,TCP 和 UDP 是 TCP 體系結構運輸層的兩個重要協議。
TCP/IP 體系結構的應用層包含了大量的應用層協議,例如 HTTP,SMTP,DNS,RTP等。即便大家是計算機網絡的初學者,對 HTTP 這個縮寫詞也不會陌生,因為每當我們打開瀏覽器,在地址欄輸入網址時,就會看到它。
IP 協議可以將不同的網絡接口進行互聯,并向其上的 TCP 協議和 UDP 協議提供網絡互聯服務。而 TCP 協議在享受 IP 協議提供的網絡互聯服務的基礎上,可向應用層的相應協議提供可靠傳輸的服務。
UDP 協議在享受 IP 協議提供的網絡互聯服務的基礎上,可向應用層的相應協議提供不可靠傳輸的服務。IP 協議作為 TCP/IP 體系結構中的核心協議,一方面負責互聯不同的網絡接口,也就是 IP over everything, 另一方面為各種網絡應用提供服務,也就是 Everything over IP
在 TCP/IP 體系結構中包含有大量的協議,IP 協議和 TCP 協議是其中非常重要的兩個協議,因此用 TCP 和 IP 這兩個協議來表示整個協議大家族常稱為 TCP/IP 協議族。順便提一下,在嵌入式系統開發領域,TCP/IP 協議族常稱為 TCP/IP 協議棧,這是因為 TCP/IP 協議體系的分層結構與數據結構中的站在圖形畫法上是類似的。
??
?
由于 TCP/IP 體系結構,為了將不同的網絡接口進行互聯,因此它的網絡接口層并沒有規定什么具體的內容。然而這對于我們學習計算機網絡的完整體系而言,就會缺少一部分內容,因此在學習計算機網絡原理時,往往采取折中的辦法,也就是綜合 OSI 和 TCP/IP 的優點,采用一種五層協議的原理體系結構。
五層協議的原理體系結構,從下到上依次為物理層、數據鏈路層、網絡層、運輸層、應用層。可以看出五層協議的原理體系結構,將 TCP/IP 體系結構的網絡接口層又重新劃分為了物理層和數據鏈路層,這樣更有利于我們對計算機網絡原理的學習。
?
??
?
本節課到這里就結束了,希望同學們通過本節課的學習,對計算機網絡體系結構有了初步的了解,同時也產生了更多的疑問。比如計算機網絡體系結構為什么要分層?各層的主要任務是什么?這些內容我們將在下節課介紹。
?
?
分層的必要性
在上節課中我們給大家介紹了常見的三種計算機網絡體系結構,本節課我們將以 5 層協議的原理體系結構為例,介紹計算機網絡體系結構分層的必要性。
- 計算機網絡是個非常復雜的系統,早在最初的 ARPANET 設計時,就提出了分層的設計理念。
- 分層可將龐大而復雜的問題轉化為若干較小的局部問題,而這些較小的局部問題就比較容易研究和處理。
- 下面我們按照由簡單到復雜的順序來看看實現計算機網絡要面臨哪些主要問題,以及如何將這些問題劃分到相應的層次,層層處理。
?
物理層:例如兩臺計算機通過一條網線連接起來,需要考慮:
- 采用怎樣的傳輸媒體(介質),例如網線、WIFI,嚴格來說這不是物理層的范圍
- 用怎么樣的物理接口
- 用怎么樣的信號表示比特 0 和 1,例如使用方波信號,高電平表示 1,低電平表示 0(這里只是舉例)
解決這些問題后,兩臺計算機就可以傳輸比特 0 和 1 了。這就是物理層要解決的問題。
?
首先來看最簡單的情況,兩臺計算機通過一條網線連接起來,對于這種最簡單的情況,我們需要考慮以下問題:
- 一個是采用怎樣的傳輸媒體,比如這是我們常見的雙絞線網線
- 另一個是在計算機上采用怎樣的物理接口來連接傳輸媒體,例如這是 RJ45 以太網接口
- 還有一個需要考慮的問題是使用怎樣的信號來表示比特 0 和 1?例如使用這樣的方波信號,低電平表示 0,高電平表示 1
?
?
解決了這些問題,兩臺計算機就可以通過信號來傳輸比特 0 或 1。我們可以將這些問題劃歸到物理層。這里我們需要說明兩點:
- 第一,嚴格來說,傳輸媒體并不屬于物理層,它并不包含在體系結構之中
- 第二,計算機網絡中傳輸的信號,并不是我們舉例的方波信號,我們之所以舉例成方波信號,是為了讓初學者容易理解。在學習本身就不容易理解的,概念抽象的計算機網絡體系結構時,不讓其他技術細節再給大家造成學習障礙
??
?
?
鏈路層:實用的計算機網絡一般都由多臺主機構成,例如主機 ABCDE 通過總線互聯構成了一個總線型網絡,假設我們已經解決了物理層的問題,也就是說主機間可以發送信號來傳輸比特 0 或 1。我們來看看在這樣一個總線型的網絡上還面臨什么需要解決的問題:
-
主機 A 要給主機 C 發送數據,但是表示數據的信號會通過總線傳播到總線上的每一個主機。那么問題來了,主機 C 如何知道該數據是發給自己的,自己要接受,而主機 BDE 要如何知道該數據并不是發送給自己的,自己應該拒絕。這就很自然的引出了如何標識網絡中各主機的問題,也就是主機編址問題。
大家可能聽說過網卡上的 MAC 地址,其實它就是主機在網絡中的地址,主機在發送數據時應該給數據附加上目的地址,當其他主機收到后,根據目的地址和自身地址來決定是否接受數據
-
這就又引出了一個問題,目的主機如何從信號所表示的一連串比特流中區分出地址和數據,也就是需要解決分組的封裝格式問題。
-
另外對于總線型的網絡,還會出現下面這種典型的問題,例如某個時刻總線是空閑的,也就是沒有主機使用總線來發送數據,片刻之后,主機 B 和 D 同時向總線發送數據,這必然會造成信號碰撞。因此如何協調各主機征用總線也是必須要解決的問題。
-
需要說明的是這種總線型的網絡早已淘汰,現在常用的是使用以太網交換機,將多臺主機互聯形成的交換式以太網。那么以太網交換機又是如何實現的?我們將這些問題全部劃歸到數據鏈路層。到這里大家可能會發現,只要解決了物理層和數據鏈路層各自所面臨的問題,我們就可以實現分組在一個網絡上傳輸了。
?
??
?
?
我們每天都會使用的因特網是由非常多的網絡和路由器互聯起來的,僅解決物理層和數據鏈路層的問題,還是不能正常工作。
我們來看這個例子,這是一個由 3 個路由器,4 個網絡互聯起來的小型互聯網,我們可以把它看作是因特網中很小的一部分。在之前的例子中僅有一個網絡,我們不需要對網絡進行標識。而在本地中有多個網絡,很顯然我們面臨著如何標識各網絡以及各網絡中各主機的問題。
換句話說,也就是網絡和主機共同編址的問題。相信同學們一定聽過 IP 地址,例如這是網絡 N1 中各設備的 IP 地址,該類 IP 地址的前三個 10 進制數用來標識網絡。第 4 個 10 進制數用來標識主機。在本例中網絡 N1 的網絡號為 192.168.1,該網絡上的筆記本電腦服務器以及路由器接口的 IP 地址的前三個數應該都是 192.168.1,因為他們都在網絡 N1 上,而第 4 個十進制數分別為 1,2,254 各不相同,用來標識他們自己。同理,這是網絡 N2 上各設備的 IP 地址。
我們再來看另一個問題,源主機與目的主機之間的傳輸路徑往往不止一條,分組從源主機到目的主機可走不同的路徑,這樣就引出了路由器如何轉發分組的問題,以及如何進行路由選擇的問題。我們將這些問題全部劃歸到網絡層,至此我們解決了物理層、數據鏈路層以及網絡層各自的問題,則可以實現分組在網絡間傳輸的問題。
??
?
例如假設這臺主機裝運行著兩個與網絡通信相關的應用進程,一個是瀏覽器進程,另一個是 QQ 進程。這臺服務器中運行著與網絡通信相關的服務器進程,某個時刻主機收到了來自服務器的分組,那么這些分組應該交給瀏覽器進程處理,還是應該交給 QQ 進程處理,這就引出了我們如何標識與網絡通信相關的應用進程,進而解決進程之間基于網絡通信的問題。
另外如果某個分組在傳輸過程中出現了誤碼,或者由于路由器繁忙,導致路由器丟棄分組,換句話說,若出現傳輸錯誤,應該如何處理?這也是需要解決的問題。我們將這些問題全部劃歸到運輸層,至此我們解決了物理層、數據鏈路層、網絡層以及運輸層各自的問題,則可以實現進程之間基于網絡的通信。
??
?
?
在此基礎上,只需制定各種應用層協議,并按協議標準編寫相應的應用程序,通過應用進程間的交互來完成特定的網絡應用。比如支持萬維網應用的 HTTP 協議,支持電子郵件的 SMTP 協議,支持文件傳送的 FTP 協議等,我們將這些問題全部劃歸到應用層:
??
?
至此,我們將實現計算機網絡所需要解決的各種主要問題,分別劃歸到了物理層、數據鏈路層、網絡層、運輸層和應用層,進而構成了 5 層協議體系的原理體系結構:
- 物理層解決使用何種信號來表示比特的問題
- 數據鏈路層解決分組在一個網絡或一段鏈路上傳輸的問題
- 網絡層解決分組在多個網絡上傳輸和路由的問題
- 運輸層解決進程之間基于網絡的通信問題
- 應用層解決通過應用進程的交互來實現特定網絡應用的問題
請大家思考一下這樣一個問題。假設你是一名程序員,要編程解決實現計算機網絡所面臨的所有軟件問題那么,你是愿意將這些問題全部放在一個模塊中編程實現,還是愿意將他們劃分到不同的模塊中,逐模塊編程實現,相信你一定會選擇后者。
?
分層思想舉例
通過一個具體的網絡通信實例??來看看計算機網絡體系結構分層處理方法。
假設網絡拓撲如下,所示主機屬于網絡 N1,??web 服務器屬于網絡 N2。 N1 和 N2,通過路由器互聯。我們使用主機中的瀏覽器??來訪問 web 服務器,當輸入網址后,主機會向外部服務器發送請求,WEB 服務器收到請求后,??會發回相應的響應。??主機的瀏覽器收到響應后,將其解析為具體的網頁內容顯示出來,??需要說明的是我們給出的只是一個簡化的示意過程,這是因為本節課的重點??是計算機網絡體系結構分層處理方法,而不是瀏覽器和 web 服務器的實際交互過程。??
??
?
?
主機和 web 服務器之間基于網絡的通信,實際上是主機中的瀏覽器應用進程??與 web 服務器中的 web 服務器應用進程之間的基于網絡的通信。
那么體系結構的各層??在整個過程中起到怎樣的作用?
從主機端??按體系結構自頂向下的順序來看,應用層按 HTTP 協議的規定,??構建一個 HTTP 請求報文,這是該報文的內容。??
??
?
?
?
應用層將 HTTP 報文??交付給運輸層處理,運輸層給 HTTP 請求報文添加一個 TCP 首部,??使之成為 TCP 報文段,這是 TCP 報文段的首部格式,該首部的作用主要是為了區分應用進程??以及實現可靠傳輸。
??
?
?
運輸層將 TCP 報文段交付給網絡層處理,??網絡層給 TCP 報文段添加一個 IP 首使之質成為 IP 數據報,這是 IP 數據報的首部格式。??該首部的作用主要是為了使 IP 數據報可以在互聯網上傳輸,也就是被路由器轉發。
??
?
?
網絡層將 IP 數據報交付給數據鏈路層處理,數據鏈路層給 IP 數據報添加一個首部和一個尾部,??使之成為幀。??假設網絡 N1 是以太網,這是以太網幀首部的格式,??該首部的作用主要是為了讓幀能夠在一段鏈路上或一個網絡上傳輸,能夠被相應的目的主機接收。
這是以太網幀尾部的格式,其作用是為了讓目的主機檢查所接收到的幀是否有誤碼。??
??
?
數據鏈路層將幀交付給物理層,物理層將幀看作是比特流,由于網絡 N1 是以太網,??因此物理層還會給該比特流前面添加前導碼,這是前導碼的內容,??其作用是為了讓目的主機做好接收幀的準備,物理層將添加有前導碼的比特流,??變換成相應的信號發送到傳輸媒體,信號通過傳輸媒體到達路由器。??
??
?
我們來看路由器的處理過程:
- 物理層將信號變換為比特流,然后去掉前導碼后,??將其交付給數據鏈路層,這實際上交付的是幀
- 數據鏈路層將幀的首部和尾部去掉后??,將其交付給網絡層,??這實際上交付的是 IP 數據報
- 網絡層解析 IP 數據報的首部,從中提取出目的網絡地址,??然后查找自身的路由表,確定轉發端口,以便進行轉發。?
- 網絡層將 IP 數據報交付給數據鏈路層
- 數據鏈路層給 IP 數據報添加一個首部和一個尾部,??使之成為幀
- 數據鏈路層將針交付給物理層,物理層將幀看作是比特流。由于網絡 N2 是以太網,因此物理層還會給該比特流前面添加前導碼
- 物理層將添加有前導碼的比特流,變換成相應的信號發送到傳輸媒體,??信號通過傳輸媒體到達 Web 服務器
?
我們來看 Web 服務器的處理過程:
- 物理層將信號變換為比特流,然后去掉前導碼后,將其交付給數據鏈路層,??這實際上交付的是幀
- 數據鏈路層將真的首部和尾部去掉后,將其交付給網絡層,??這實際上交付的是 IP 數據報
- 網絡層將 IP 數據報的首部去掉后,將其交付給運輸層,??這實際上交付的是 TCP 報文段
- 運輸層將 TCP 報文段的首部去掉后,將其交付給應用層。??實際上交付的是 HTTP 請求報文
- 應用層對 HTTP 請求報文進行解析,??然后給主機發回 HTTP 響應報文
與之前的過程類似,HTTP 響應報文??需要在外部服務器層層封裝,然后通過物理層變換成相應的信號,??再通過傳輸媒體傳輸到路由器,路由器轉發該響應報文給主機,主機通過物理層??將收到的信號轉換為比特流,之后通過逐層解封,最終取出 HTTP 響應報文。
?
?
專用術語
需要說明的是這些專用術語來源于 OSI 的 7 層協議體系結構,但也適用于 TCP/IP 的 4 層體系結構和 5 層協議原理體系結構。我們將這些專用術語中最具代表性的三個作為分類名稱,它們分別是:實體,協議,服務。
我們首先來看實體,實體是指任何可發送或接收信息的硬件或軟件進程。
例如這是通信雙方的 5 層原理體系結構,我們在他們的各層中用標有字母的小方格來表示實體。
有了實體的概念,我們再來看對等實體,它是指通信雙方相同層次中的實體,例如圖中實體 A 與實體 F 為對等實體,實體 B 與實體 H 為對等實體,以此類推。
??
?
那么按照對等實體的定義,請同學們思考一下,通信雙方的網卡是不是對等實體呢?通信雙方中的正在進行通信的應用進程,是不是對等實體?回答是肯定的。
有了對等實體的概念,我們再來介紹協議,協議是控制兩個對等實體進行邏輯通信的規則的集合,例如應用層對等實體,在應用層協議的控制下進行邏輯通信,運輸層對等實體在運輸層協議的控制下進行邏輯通信,網絡層對等實體在網絡層協議的控制下進行邏輯通信,以此類推。
??
?
需要注意的是之所以稱為邏輯通信,是因為這種通信其實并不存在,它只是我們假設出來的一種通信,目的在于方便我們單獨研究體系結構某一層,而不用考慮其他層。
例如當我們研究運輸層時,我們可以假設運輸層的對等實體在進行邏輯通信,而不用顧及其他層。計算機網絡協議有三個要素,他們是語法、語義,同步。
語法定義通信雙方所交換信息的格式,例如??這是 IP 數據報的格式:
??
其中的小格子稱為字段或域。數字表示字段的長度,??單位是位,也就是比特。??
語法就是定義了這些小格子的長度和先后順序。??換句話說,語法定義了所交換信息??有哪些字段以及何種順序構成,需要說明的是我們沒有必要記住每種分組的格式,??只要我們能看懂他們的格式說明就可以了。
當然了,??如果同學們將來會從事計算機網絡相關的開發教學研究等工作,像 IP 數據報、??TCP 報文段,HTTP 報文等這些常見的分組格式,相信大家在學習和研究過程中??自然而然的就會記住了。
?
語義定義通信雙方所要完成的操作,這是我們上節課舉過的應用實例。??主機要訪問遠程 web 服務器,它會構建一個 HTTP 的 get 請求報文,??然后將其發送給外部服務器,web 服務器收到該報文并進行解析,??知道這是一個 HTTP 的 get 請求報文,于是就在自身內部查找所請求的內容,??并將所找到的內容封裝在一個 HTTP 響應報文裝發回給主機,??主機收到 HTTP 響應報文后,對其進行解析,取出所請求的內容,??并由瀏覽器解析顯示。??這個例子就可以體現出通信雙方收到分組后完成怎樣的操作。??這是 HTTP 協議的語義所規定的。
?
同步定義通信雙方的時序關系。請注意??并不是指時鐘頻率同步,例如這是 TCP 采用三報文握手建立連接的過程:
??
?要想進行運輸層 TCP 實體間的邏輯通信,首先必須建立連接,??從連接建立的過程就可以看出 TCP 客戶端和 TCP 服務器之間的時序關系??以及各自的狀態轉換,只有雙方建立連接后才能進行 TCP 數據傳輸。??這個例子可以充分體現計算機網絡協議三要素中的同步。
?
??有了協議的概念,我們再來介紹服務,??在協議的控制下,兩個對等實體間的邏輯通信,使得本層能夠向上一層提供服務:
- ??例如物理層對等實體,在物理層協議的控制下,向數據鏈路層提供服務
- 要實現本層協議,還需要使用下面一層所提供的服務,例如??數據鏈路層對等實體享受物理層提供的服務,并在數據鏈路層協議的控制下進行邏輯通信,??給網絡層提供服務
- ?網絡層對等實體享受數據鏈路層提供的服務,并在網絡層協議的控制下進行邏輯通信,??給運輸層提供服務
- 運輸層對等實體享受網絡層提供的服務,??并在運輸層協議的控制下進行邏輯通信,給應用層提供服務??
- 應用層對等實體享受運輸層提供的服務,并在應用層協議的控制下進行邏輯通信,??給其上層也就是用戶提供服務
??
?
很明顯協議是水平的,??而服務是垂直的。請同學們需要特別注意的是實體看得見下層所提供的服務,??但并不知道實現該服務的具體協議。??換句話說,下層的協議對上層的實體是透明的。
這就好比,??我們肯定看得見手機為我們提供的各種服務,但我們只是享受這些服務,??而沒有必要弄懂手機的工作原理。
再來看服務訪問點的概念,它是指在同一系統中??相鄰兩層的實體交換信息的邏輯接口,用于區分不同的服務類型。
例如??數據鏈路層的服務訪問點為幀的類型字段,網絡層的服務訪問點為 IP 數據報首部中的協議字段,??運輸層的服務訪問點為端口號。
上層要使用下層所提供的服務,??必須通過與下層交換一些命令,這些命令稱為服務原語。??
??
?
在計算機網絡體系結構中,??對通信雙方所交互的數據包有專門的術語,我們把對等層次之間傳送的數據包??稱為該層的協議數據單元,英文縮寫詞為 PDU。
例如??物理層對等實體邏輯通信的數據包稱為比特流,數據鏈路層對等實體邏輯通信的數據包稱為真??網絡層對等實體邏輯通信的數據包稱為分組。如果使用 IP 協議也稱為 IP 數據報,??運輸層對等實體邏輯通信的數據包一般根據協議而定。??例如使用 TCP 協議則稱為 TCP 報文段,使用 UDP 協議??則稱為 UDP,用戶數據報、應用層對等實體邏輯通信的數據包,一般稱為應用報文。上述各層數據包可以統稱為協議數據單元 PDU。
?
??
?
?
我們把同一系統內??層與層之間交換的數據包成為服務數據單元,英文縮寫詞為 SDU。多個服務數據單元可以合成為一個協議數據單元,??一個服務數據單元也可以劃分為幾個協議數據單元。
本節課到這里就結束了。??在本節課中,??我們更深入的介紹了計算機網絡體系結構,以及其中的一些專用術語,相對來說比較抽象,??如果同學們一時無法完全理解,請不要鉆牛角尖,暫時放過去。隨著后續課程的學習,??大家會感覺到計算機網絡體系結構不再抽象難懂,它的分層思想是多么優美的設計哲學,??其中的這些術語又是多么的貼切。?
??
?
習題
來看幾道考研題:
??
?
?
?
??
?
?
?
?
??
??
?
?
??
?
?
??
?
?
??
?
?
?
習題 2:時延相關習題
注意:路由器轉發也有發送時延
??
?
解析可以參考:主機甲通過 1 個路由器(存儲轉發方式)與主機乙互聯,兩段鏈路的數據傳輸速率均…__牛客網
?