計算機網路之網路介面層

Java伴我餘生發表於2020-06-06

前言

  由於計算機網路知識如果用一篇部落格來寫,篇幅就會非常長,我將通過TCP/IP四層協議的形式進行連載計算機網路系列的文章,即會把計算機網路分為網路介面層、網路層、傳輸層和應用層的順序來寫,希望大家可以多多支援。

計算機網路概述

什麼是計算機網路

  計算機網路主要由一些通用的、可程式設計的硬體互連而成,通過這些硬體,可以傳送不同型別的資料,並且可以支援廣泛和日益增長的應用。計算機網路的不是軟體概念,還包含硬體裝置,計算機網路不僅僅是資訊通訊,還可以支援廣泛的應用。

計算機網路的分類

  按網路的作用範圍,可以分為廣域網(WAN)、都會網路(MAN)、區域網(LAN),其範圍如下:

分類 英文 範圍 區域
廣域網 WAN(Wide Area Network) 幾十到幾千公里 跨省、跨國
都會網路 MAN(Metro. Area Network) 5KM-50KM 城市間
區域網 LAN(Local Area Network) 1KM以內 地區內

  按網路的使用者,可以分為公用網路和專用網路

計算機網路的層次結構

  為了使不同計算機廠家生產的計算機能夠相互通訊,以便在更大的範圍內建立計算機網路,國際標準化組織(ISO)在1978年提出了"開放系統互聯參考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它將計算機網路體系結構的通訊協議劃分為七層,自下而上依次為:物理層(Physics Layer)、資料鏈路層(Data Link Layer)、網路層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、表示層(Presentation Layer)、應用層(Application Layer)。其中第四層完成資料傳送服務,上面三層面向使用者。

  OSI欲成為全球計算機都遵循的標準,由於OSI在市場化過程中困難重重,TCP/IP在全球範圍成功執行,使得OSI最終並沒有成為廣為使用的標準模型。可能是OSI的專家缺乏實際經驗,OSI標準制定週期過長,按OSI標準生產的裝置無法及時進入市場,OSI模型設計的並不合理,一些功能在多層中重複出現等原因造成的。除了標準的OSI七層模型以外,常見的網路層次劃分還有TCP/IP四層協議以及TCP/IP五層協議,它們之間的對應關係如下圖所示:

計算機網路的效能指標

bit Byte KB MB GB TB PB EB
名字 位元位 位元組 千位元組 兆位元組 吉位元組 太位元組 拍位元組 艾位元組
比例 - 8bits 1024B 1024KB 1024MB 1024GB 1024TB 1024PB
常見裝置 閘電路 - 暫存器 快取記憶體 記憶體/硬碟 硬碟 雲硬碟 資料倉儲

  計算機網路中的資料傳輸速率單位是:bps=bit/s。為什麼電信拉的100M光纖,測試峰值速度只有12M每秒?因為網路常用單位為(Mbps),100M/s = 100Mbps = 100Mbit/s= (100/8)MB/s=12.5MB/s
  計算機網路的效能指標有時延和往返時間RTT。時延包括髮送時延、排隊時延、傳播時延和處理時延。\(傳送時延 = \frac{資料長度(???)}{傳送速率(???/?)}\),傳送速率(???/?)受限於計算機網路卡;\(傳播時延 = \frac{傳輸路徑距離}{傳播速率(???/?)}\),傳播速率受限於傳輸介質;排隊時延是指資料包在網路裝置中等待被處理的時間;處理時延是指資料包到達裝置或者目的機器被處理所需要的時間,總時延 = 傳送時延 + 排隊時延 + 傳播時延 + 處理時延。RTT(Route-Trip Time)是評估網路質量的一項重要指標,RTT表示的是資料包文在端到端通訊中的來回一次的時間,通常使用ping命令檢視RTT。

物理層概述

物理層的作用

  啟用、維持、關閉通訊端點之間的機械特性、電氣特性、功能特性以及過程特性。該層為上層協議提供了一個傳輸資料的可靠的物理媒體。簡單的說,物理層確保原始的資料可在各種物理媒體上傳輸。物理層記住兩個重要的裝置名稱,中繼器(Repeater,也叫放大器)和集線器。常見的傳輸資料的物理媒體分為有限傳輸和無線傳輸,有線傳輸如:雙絞線、同軸電纜以及光纖等,無線傳輸如紅外線、鐳射等。即主要是用來連線不同的物理裝置,傳輸位元流。記住物理層中資料傳輸的基本單位是位元(bit)

通道的基本概念

  通道是往一個方向傳送資訊的媒體,一條通訊電路包含一個接收通道和一個傳送通道。但傳送和接收會不會衝突?衝突了怎麼辦呢?所以通道分為:單工通訊通道、半雙工通訊通道和全雙工通訊通道。單工通訊通道只能一個方向通訊,沒有反方向反饋的通道,例如有線電視、無線電收音機等等;半雙工通訊通道是指雙方都可以傳送和接收資訊,但不能雙方同時傳送,也不能同時接收;全雙工通訊通道是指雙方都可以同時傳送和接收資訊。
  如果兩個電腦需要進行通訊,則在他們之間會有一條通訊電路,通訊電路里面就可能有傳送通道和接收通道, 當有很多臺計算機進行連線時,就會有很多傳送通道和接收通道了,並且在很多時候,它們也不是處於活躍的狀態,很多時候都是處於關機狀態,這樣就會導致通道的利用效率並不高,因此就提出了分用和複用技術。通過該技術提高通道的利用率。

  常見的分用-複用技術有分頻多工、分時多工、波長分波多工和碼分複用等。

資料鏈路層概述

  資料鏈路層在物理層提供的服務的基礎上向網路層提供服務,其最基本的服務是將源自網路層來的資料可靠地傳輸到相鄰節點的目標機網路層。為達到這一目的,資料鏈路必須具備一系列相應的功能,主要有:如何將資料組合成資料塊,在資料鏈路層中稱這種資料塊為幀(frame),幀是資料鏈路層的傳送單位;如何控制幀在物理通道上的傳輸,包括如何處理傳輸差錯,如何調節傳送速率以使與接收方相匹配;以及在兩個網路實體之間提供資料鏈路通路的建立、維持和釋放的管理。資料鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:實體地址定址、資料的成幀、流量控制、資料的檢錯、重發等。

封裝成幀

  “幀”是資料鏈路層資料的基本單位,傳送端在網路層的一段資料前後新增特定標記形成“幀”,接收端根據前後特定標記識別出“幀”。

  幀首部和尾部是特定的控制字元(特定位元流)。如果資料裡面恰好有這些位元流咋辦?例如幀首部的位元流是SOH: 00000001 幀尾部的位元流是EOT: 00000100,然後在傳輸的資料中出現了與幀首部或者幀尾部相同的位元流,此時應該如何處理?

透明傳輸

  “透明”在計算機領域是非常重要的一個術語,“一種實際存在的事物卻又看起來不存在一樣”,“即是控制字元在幀資料中,但是要當做不存在的去處理”

差錯檢測

  物理層只管傳輸位元流,無法控制是否出錯,資料鏈路層負責起“差錯監測”的工作

奇偶校驗碼

  如果傳輸的位元流中1的個數是奇數,奇偶校檢位就是1,如果傳輸的位元流中1的個數是偶數,奇偶校校檢位就是0。如果經過傳輸後得到的位元流中的1的個數是偶數,但奇偶校檢位是1,則說明位元流發生了錯誤。

通過這種方法進行差錯檢測的話,如果出錯兩位,奇偶校驗碼就校測不到錯誤。

迴圈冗餘校驗碼CRC

  一種根據傳輸或儲存的資料而產生固定位數校驗碼的方法,檢測資料傳輸或者儲存後可能出現的錯誤,生成的數字計算出來並且附加到資料後面。模“2”除法是二進位制下的除法,與算術除法類似,但除法不借位,實際是“異或”操作。

  迴圈冗餘校驗碼CRC: 1.選定一個用於校驗的多項式G(x),並在資料尾部新增r個0;2.將新增r個0後的資料,使用模“2”除法除以多項式的位串;3.得到的餘數填充在原資料r個0的位置得到可校驗的位串。

例1:使用CRC計算101001的可校驗位串
第一步:選定一個用於校驗的多項式G(x),並在資料尾部新增r個0
\(G(x) = x^3 + x^2 + 1 = 1*x^3 + 1*x^2 + 0*x^1 + 1*x^0\) \(\Rightarrow\) 二進位制位串:1101,最高階為3
由於最高階為3,則在資料末尾新增三個0:\(1101 \Rightarrow 1101 000\)
第二步:將新增r個0後的資料,使用模“2”除法除以多項式的位串

第三步:得到的餘數填充在原資料r個0的位置得到可校驗的位串
由第二步可知,餘數為 001,替換後得到:\(101001 000 \Rightarrow 101001 001\)
最後:接收端接收的資料除以G(x)的位串,根據餘數判斷出錯,餘數為零,則接受到的資料沒有出錯,否則,接收到的資料就是有問題的。

  CRC的錯誤檢測能力與位串的階數r有關,資料鏈路層只進行資料的檢測,不進行糾正。資料鏈路層會直接將錯誤的資料丟棄掉。這裡的多項式G(x)並不是隨便寫的,我們可以從維基百科看到一些常用的G(x)

MTU

  最大傳輸單元MTU(Maximum Transmission Unit),資料鏈路層的資料幀也不是無限大的,資料幀長度受MTU限制,MTU受限於底層物理電路的硬體特性,資料幀過大或過小都會影響傳輸的效率。乙太網MTU一般為1500位元組。路徑MTU由鏈路中MTU的最小值決定。

乙太網協議

  在瞭解乙太網協議之前,我們需要先知道MAC地址,MAC地址是實體地址,或者說是硬體地址,每一個裝置都擁有唯一的MAC地址,MAC地址共48位,使用十六進位制表示,例如:30-B4-9E-ED-85-CA,檢視本機所有物理裝置的MAC地址:ipconfig /all。在瞭解什麼是MAC地址後,再來看看乙太網協議是什麼。
  乙太網(Ethernet)是一種使用廣泛的區域網技術,乙太網是一種應用於資料鏈路層的協議,使用乙太網可以完成相鄰裝置的資料幀傳輸。
乙太網的資料格式:

目的地址 源地址 型別 幀資料 CRC
佔用的位元組數 6 6 2 46~1500 4

MAC地址表:是一個具體的對映

MAC地址 硬體介面
31-B4-9E-ED-85-CA 介面1
32-B4-9E-ED-85-CB 介面2
33-B4-9E-ED-85-CC 介面3
... ...

MAC地址表實際上是由路由器所具有的,當我們的MAC地址表中,如果MAC地址表中每個MAC地址都能對映到具體的硬體介面,相鄰的多臺計算機進行網路通訊時,資料鏈路層的工作步驟如下:

A通過網路卡發出資料幀,資料幀到達路由器,路由器取出前6位元組,路由器匹配MAC地址表,找到對應的網路介面,路由器往該網路介面傳送資料幀。

如果MAC地址表中C的MAC地址對映不到具體的硬體介面:

E檢查MAC地址表,發現沒有C的資訊,E將廣播A的資料包到除A以外的埠,E將收到來自B、C的回應,並將地址記錄。
由於乙太網協議只能完成相鄰裝置的資料幀傳輸,那如何實現跨裝置傳輸資料呢?這就需要我們去學習網路層中的知識了。

總結:計算機網路學習的核心內容就是網路協議的學習。網路協議是為計算機網路中進行資料交換而建立的規則、標準或者說是約定的集合。因為不同使用者的資料終端可能採取的字符集是不同的,兩者需要進行通訊,必須要在一定的標準上進行。一個很形象地比喻就是我們的語言,我們大天朝地廣人多,地方性語言也非常豐富,而且方言之間差距巨大。A地區的方言可能B地區的人根本無法接受,所以我們要為全國人名進行溝通建立一個語言標準,這就是我們的普通話的作用。同樣,放眼全球,我們與外國友人溝通的標準語言是英語,所以我們才要苦逼的學習英語。

相關文章