化繁為簡:計算機網絡分層的詳解
今天我們就來講講,計算機網絡為什么要分層?分層模型有哪些?網絡各層的作用?并手畫了多張動圖幫助大家理解,全程干貨滿滿,通俗易懂。
我們知道在計算機網絡中一般有OSI七層模型、TCP/IP四層模型和TCP/IP五層模型,這些模型將復雜的網絡通信過程劃分為不同的層次,每一層次都有其特定的功能和協議,共同協作完成網絡通信。那這些模型分別是什么、相互之間有什么區別呢?
OSI七層模型產生的歷史
為了讓世界上各個國家或地區,各個不同計算機廠家,生產出的各個不同體系結構的計算機設備,各種網絡協議,能夠互相通信(這是一個非常復雜的過程)。
國際標準化組織ISO于1977年提出了"開放系統互聯參考模型",即著名的OSI模型, Open System Interconnection Model,一個試圖使各種不同的計算機或者設備在世界范圍內互連為網絡的標準模型,使得計算機所依賴硬件和軟件技術跨越地理和政治界限協同工作,允許兩個獨立系統通過基于當前操作層的標準化接口或協議進行通信,來在更大的范圍內建立計算機網絡。
OSI模型包括七個層次,自上而下依次為:應用層(Application Layer)、表示層(Presentation Layer)、會話層(Session Layer)、傳輸層(Transport Layer)、網絡層(Network Layer)、數據鏈路層(Data Link Layer)、物理層(Physics Layer)。
圖片
將計算機網絡進行分層,是為了簡化網絡設計和實現的復雜性,將復雜的通信過程分為若干個相對獨立的層次。每一層都負責特定的功能,進行跨軟件和硬件組件封裝每種類型的網絡通信,例如數據格式化、數據傳輸控制、路由選擇等,這樣較高層可以直接使用較低層技術,而不必關心底層的實現細節。
TCP/IP四層模型和TCP/IP五層模型
我們再來看看,什么是TCP/IP四層模型和TCP/IP五層模型,它們其實都和OSI七層模型有關。
圖片
OSI模型提出時,英特網已搶先在全世界范圍內廣泛流行起來,全部推倒重來已不可能,它使用TCP/IP協議族,通過與OSI模型的結合,從理論上補足了?絡接?層的缺失,最終演變成如今的TCP/IP四層模型,用于從理論上描述互聯網協議(IP)的工作方式。它包括四個層次:應用層、傳輸層、網絡層和網絡接口層,其中應用層由OSI模型的應用層、表示層、會話層合并而來,網絡接口層由OSI模型的數據鏈路層和物理層合并而來。
OSI七層模型雖然是理論上標準,但既復雜?不實?,部分功能在多個層次中重復出現,TCP/IP四層模型則是個更為實用的模型,也是如今事實標準,但最下?的?絡接?層并沒有具體內容,所以我們用來學習或者講解的話,一般都采用TCP/IP五層模型,它在TCP/IP四層模型基礎上,將網絡接口層重新劃分為數據鏈路層和物理層,更接近實際應用的網絡結構。
本文也將用TCP/IP五層模型來講述,許多初學者不理解這些層為什么要這樣劃分?我們接下來將這些層串起來,看看他們是如何互相配合作用的。
物理層
物理層,主要規定網絡的傳輸媒介的物理特性,來傳遞0和1的電信號,即它負責在傳輸媒介上傳輸原始比特流。物理層傳輸的單位是比特,比如2臺主機直接通過雙絞線電纜來連接,傳遞信號,但是如果隨著網絡中加入的主機變多,每臺直接相連,會讓接口數和網線數幾何式上升,布線變得異常復雜。所以引入中間設備,每個主機只需和這個中間設備相連即可,比如總線、集線器等,當然這個中間設備需要足夠的穩定,不然一旦掛了,會影響整個網絡。
物理層確定傳輸媒介的接口特征:
- 機械特征:接口所用接線器的一些物理屬性如接口范圍,接口尺寸,引線數目及排列;
- 電氣特征:接口電纜的各條線上出現電壓的范圍,阻抗匹配,傳輸速度,距離等;
- 功能特征:某條線上出現的某一電平的電壓的意義,接口部件信號線的用途;
- 過程特征:對于不同功能的各種可能事件的出現順序,定義各條物理線路的工作規程和時序關系。
物理層連接多個電腦設備的常用傳輸媒介有:集線器、同軸電纜、雙絞線電纜、光纖、光纜、無線電波等,這些媒介嚴格上不在物理層協議之內的而是在物理層協議之下。
另外不同的傳輸媒介,需要選擇合適的編碼方式以及調制技術,來將原始比特流變換成相應的電信號,以保證數據的可靠傳輸和抗干擾能力。
數據鏈路層
數據鏈路層,主要是解決數據包在一個網絡或一段一段的鏈路上可靠傳輸問題。在物理層我們把各個主機物理上連在一起,現在需要解決的是信號如何傳遞給對應主機,這個時候就需要來標識網絡中的每一個主機,這個叫做網卡(MAC)地址,是硬件的唯一標識符。所以數據鏈路層也被稱為MAC層。
MAC地址: 設備的硬件地址,也是網絡中計算機設備的唯一標識,12位十六進制的數,它由設備出廠時就決定了,一般無法修改。比如07:00:20:0A:6C:6D就是一個MAC地址,其中前6位16進制數07:00:20代表網絡硬件制造商的編號,即組織唯一標識符OUI,它由IEEE分配,而后6位16進制數0A:6C:6D代表該制造商所制造的某個產品的系列號,即擴展唯一標識符EUI。以此來保證世界上每個以太網設備都具有唯一的MAC地址。
圖片
集線器功能比較簡單粗暴,只能將信息廣播到整個網絡的所有主機上,各個主機在通過消息中的MAC地址,來確認是否是發給自己的消息,這樣既不安全也浪費網絡的帶寬。所以在數據鏈路層采用交換機,自學習維護一個轉發表,來轉發幀,記錄消息從哪里來,到哪里去,來實現主機接入控制
圖片
數據鏈路層還解決了數據包的封裝格式問題,將數據包封裝成幀,同時負責建立和管理節點間的鏈路,通過各種控制協議,實現差錯控制。
數據鏈路層傳輸單位是幀frame,每幀的組成是由幀頭、數據、幀尾組成:
- MAC子層幀頭構成:目標MAC地址(6字節),源MAC地址(6字節),類型(2字節),總的大小=6+6+2 = 14字節
- FCS幀尾:提供了一種錯誤檢測機制,用來驗證幀在傳輸過程中的完整性(4個字節)
- 數據,存放整個數據包的具體內容,比如文件、字符串之類的,數據部分的長度最小至少為46個字節,最長1500個字節;如果超過1500個字節就分割
圖片
數據鏈路層還實現了透明傳輸,不必考慮物理層如何實現比特傳輸的細節,這個由物理層進行保證
透明傳輸是指不管所傳輸的數據是什么樣的比特組合,都應當能夠在鏈路上傳送。盡可能地屏蔽掉不同傳輸媒體和通信手段的差異。通俗點講,就是鏈路層就“看不見”有什么妨礙數據傳輸的東西
常用協議有:以太網(Ethernet)、高級數據鏈路控制協議HDLC、點對點協議PPP等,常用設備有:網橋、交換機
網絡層
網絡層,對應OSI模型的網絡層,提供主機間的通信服務,負責數據包在多個網絡之間的路由和尋址(IP 地址),確保數據可以在不同網絡間傳輸;也叫網際層或IP層
在數據鏈路層,我們實現了在單個網絡中網絡的通信,但在世界上各個不同的地理位置上,有幾十億個設備互相組成大大小小的異構網絡,要想把它們連在一起,交換機+MAC地址就遠遠不夠了,IP互聯網協議就應運而生,提供的一種統一的地址格式,為互聯網上的每一個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異,來解決多網絡互連的問題。
IP互聯網協議,是TCP/IP協議棧中最核心的協議之一,通過IP地址(邏輯地址),來標識網絡和網絡中的各主機,實現了網絡通信的面向無連接和不可靠的傳輸功能。IP地址可以表達網絡中的子網的概念(子網掩碼)。
以常見的IPv4協議為例,IP地址共32位,分成了四段如192.168.0.1,IP地址得向IANA機構申請,一旦分配后一般不會改變,IPv4總共有43億個地址,由于歐美的先發優勢,分到的IP地址資源非常豐富,我們國內就嚴重不足,早在2011年IPv4地址就被分配完了。如今的解決辦法,是采用NAT技術或者IPv6(增加IP地址長度)。
網絡層傳輸單位是包packet,在數據鏈路層的幀基礎上,繼續封裝數據包成IP數據包。
網絡層還有一個作用就是,路由選擇,通過路由選擇算法,為數據包選擇最適當的路徑,控制數據鏈路層與傳輸層之間的信息轉發,建立、維持和終止網絡的連接,將信息從一個網絡設備傳送到另一個網絡設備。
常用設備:路由器,主要用來連接不同的網絡時,交換機無法再維護龐大的轉發表,而路由器會自動?成路由表,依據路由表轉發數據包?下?個網絡。
圖片
路由器的每個端口都會有一個自己的MAC地址。路由器能將一個IP分配給超多個主機使用,主機對外ip也是同一個。而交換機是可以將不同的主機連接起來,對外表現的IP也可各有不同;交換機隔離沖突域,但不隔離廣播域,而路由器既隔離沖突域又隔離廣播域,不會轉發廣播數據,減少廣播風暴和安全漏洞。路由器還提供防火墻的服務。
常用協議:IP(IPv4、IPv6)、地址解析協議ARP、網際控制報文協議ICMP、網際組管理協議IGMP等。
傳輸層
傳輸層,對應OSI模型的傳輸層,建立主機端到端的連接,為主機中的進程之間通信,提供數據傳輸服務,為應用層提供端到端可靠且透明的數據傳輸服務,包括全雙工或半雙工、流控制和錯誤恢復服務,確保數據能完整的傳輸到網絡層。
建立主機端到端的連接,這里的端是端口port,當通過網絡層獲取IP地址后,數據包可以通過IP地址找到對應的主機,但是主機一般是多進程,每一個進程都是一個任務,那么如何確定是哪一個任務?
所以引入端口的概念,當進程需要網絡通信服務時,向操作系統申請一個端口,通過端口號來標識這個進程,從而讓網絡中數據包,分辨出主機中哪一個進程是接收者。
傳輸層主要有兩個協議:
- TCP傳輸控制協議,提供?向連接的、可靠的數據傳輸服務,傳輸單位為報?段segment
- UDP用戶數據報協議,提供?連接的、盡最大努力交付(不可靠性)的數據傳輸,傳輸單位為數據報Datagram
為什么在這層引入這2個協議呢?
這是因為在網絡層上,IP協議沒法區分端口,UDP協議在IP協議的基礎上增加了源端口和目的端口字段,這樣就可以區分端口了,另外IP協議又是無連接不可靠的,傳輸數據容易差錯,引入TCP協議,通過三次握手四次揮手等一系列機制,來確保數據的可靠傳輸。
傳輸層有復用和分用的功能,一個主機可以同時運行多個進程,應用進程又可以利用傳輸層傳送應用層報文:
- 復用就是多個應用層進程可同時使用下面的運輸層的服務
- 分用就是把運輸層收到的信息分別交付給上面應用層中的響應進程
應用層
應用層,是最上層,也是我們用戶能夠直接接觸到的,比如手機、電腦、各種家庭設備等等,它對應OSI的應用層、表示層和會話層。
主要專注于為用戶提供網絡服務,直接面對應用程序,如文件傳輸、電子郵件、遠程登錄等,它并不需要關心數據是如何傳輸的,但需要數據的格式進行轉換表示,讓目的應用程序能看懂數據的內容。
常用應用層的協議有:網絡請求協議HTTP、文件傳輸協議FTP、簡單郵件傳輸協議SMTP、域名解析協議DNS等。
應用層傳輸單位是報文message,是對傳輸層的數據包進一步封裝。
我們再來看看,TCP/IP模型的應用層對應OSI的應用層、表示層和會話層,分別有什么作用:
- 應用層:為應用程序或用戶請求提供各種請求服務。OSI參考模型最高層,也是最靠近用戶的一層,為計算機用戶、各種應用程序以及網絡提供接口,也為用戶直接提供各種網絡服務。
- 表示層:數據編碼、格式轉換、數據加密。提供各種用于應用層數據的編碼和轉換功能,確保一個系統的應用層發送的數據能被另一個系統的應用層識別。如果必要,該層可提供一種標準表示形式,用于將計算機內部的多種數據格式轉換成通信中采用的標準表示形式。數據壓縮和加密也是表示層可提供的轉換功能之一。
- 會話層:創建、管理和維護會話。接收來自傳輸層的數據,負責建立、管理和終止表示層實體之間的通信會話,支持它們之間的數據交換。該層的通信由不同設備中的應用程序之間的服務請求和響應組成。
最后筆者再吐血畫了張圖,幫助大家快速回顧,網絡的各個分層的作用和重點信息:
圖片
補充:數據是如何傳遞的?
在上文,我們分別介紹了網絡的各層的特點,其中每層的數據單元大家是不是比較模糊,我們這就梳理HTTP報文傳輸過程,來將這些全部串起來,來體會在TCP/IP協議的數據封裝和分用過程中,數據包是如何網絡各層中傳遞的。
本文這里以一個HTTP請求的傳輸為例,請求從HTTP客戶端(如瀏覽器)和HTTP服務端應用(比如QQ郵箱、知乎)的傳輸過程,如下圖所示:
數據在客戶端發送時在經過每一層的時候都要被該層對應的協議包裝(添加上對應層的頭部,其中包含了協議標識),這個過程叫封裝;而到達終端的時候,又要被一層一層的解包,這個過程叫分用。
另外在網絡傳輸中,網絡包都必須是完整的,可以沒有上層只有下層,但一定不能只有上層而沒有下層,基礎不牢,大廈不穩。
理解這些網絡分層模型,會讓我們對計算機網絡的世界有更宏觀的認識,后續再配合抓包工具,會對于我們進行網絡的學習與實踐,有非常不錯的幫助。。