1. 程式人生 > >【計算機網路】資料鏈路層理解

【計算機網路】資料鏈路層理解

歡迎關注公眾號:

----------------------------------------------正文----------------------------------------------------

1、什麼是資料鏈路層?

資料鏈路層的基本知識

資料鏈路層使用的通道主要有以下兩種型別:

點對點通道:這種通道的通訊方式是一對一的通訊方式----------ppp協議

廣播通道:這種通道使用一對多的廣播通訊方式,對於這種方式需要遵循專用的共享通道協議來協調主機資料的傳送;  www.2cto.com  

鏈路:即使從一個結點到相鄰結點的一段物理線路。而中間沒有任何其他的交換結點。又稱為:物理鏈路

資料鏈路:因為當需要在一條線路上傳遞資料時,除了必須使用一條物理裝置時,還需要一些必要的通訊協議來控制資料的傳輸,若把實現這些協議的硬體和軟體的加到鏈路上,就叫做資料鏈路;最常用的是-----網路介面卡。一般介面卡都包含了資料鏈路層和物理層這兩層的功能----又稱為邏輯鏈路

點對點通訊
 

一、點對點的通道在資料鏈路層進行通訊的主要步驟如下:

   1>結點A的資料鏈路層把網路層交下來的IP資料報新增首部和尾部

   2>結點A把封裝好的幀發給結點B的資料鏈路層

   3>若結點B的資料鏈路層收到所謂幀無差錯,則從收到的幀中提取出IP資料報交給網上面絡層
 

二、資料鏈路層共同的問題:封裝成幀、透明傳輸、差錯控制

   1>封裝成幀:在一段資料的前後分別新增首部和尾部,這樣就構成了幀。首部與尾部的重要的作用是進行幀定界,此外還包含了許多必要的控制資訊。對於每一種資料鏈路層協議都規定了幀的資料部分的長度上限----最大傳送單元MTU。  www.2cto.com  

   對於幀的定界可以特殊的幀定界符:EOF、SOH

   2>透明傳輸:由於幀的界限是固定的界符,所以對於在傳輸的資料部分不允許任何8bit組合與界定符的ASCII一樣,否則惠出現定界錯誤。如果在傳輸的資料部分中有界符,則在界符的前面加一個轉移字元‘ESC’,而在接收端的資料鏈路層需要將轉義字元去掉。如果轉義字元出現在資料部分是,則在他前面新增“ESC”,接收端如果發現有兩個ESC 則刪除一個。

   3>差錯檢測:位元在傳輸過程中可能會產生差錯,1變為0,0變為 ------叫作差錯控制。在資料鏈路測一般使用的差錯控制是:CRC校驗。
 

三、PPP協議的特點

   1>滿足的要求:簡單、封裝成幀、透明性、多種網路層協議、多種型別鏈路、差錯控制、檢測連線狀態、最大的傳輸單元、網路層地址協商、資料壓縮協商

   2>不需要的特點:糾錯、序號、多點線路、半雙工或單雙工
 

四、PPP協議有三部分組成

    1>一個將IP資料報封裝到序列鏈路的方法。

    2>一個用來建立、配置和測試資料鏈路連線的鏈路控制協議LCP 

    3>一套網路控制協議NCP
 

五:PPP協議的格式

    PPP幀的首部和尾部分別分為4個欄位和3個欄位

    首部的第一個欄位和尾部的第二個欄位鬥志標誌段F,規定為0x7E。表示一個幀的開始或結束

    首部中的地址欄位A規定為0FF,控制欄位C規定為0x03

    首部的第四個欄位是2個位元組的協議欄位。當為0x0021時,PPP幀的資訊就是IP俗話舉報、若為0xC021則資訊欄位是PPP鏈路控制協議上LCP的資料,而0x8021表示這是網路層的控制資料

    尾部的第一個欄位(2個位元組)是使用CRC的幀檢驗序列FCS

CSMA/CD:CSMA/CD採用 IEEE_802.3 標準。
它的主要目的是:提供定址和媒體存取的控制方式,使得不同裝置或網路上的節點可以在多點的網路上通訊而不相互衝突。  www.2cto.com  
 

網橋:資料鏈路層擴充套件一臺玩要使用網橋。網橋工作在資料鏈路層,他根據MAC幀的目的地址對先收到的幀進行轉發和過濾。

網橋的好處:過濾通訊,增大吞吐量;擴大物理範圍;提高了可靠性;可互連不同的物理層、不同的MAC層何不同的速率;

虛擬網路VLAN:是由一些區域網網段構成的與實體地址無關的邏輯組。

http://www.2cto.com/net/201205/130788.html

2、既然ip地址可以定址到唯一的主機,為什麼還需要mac地址?

作者:不求東西
連結:https://www.zhihu.com/question/21546408/answer/28155896
來源:知乎
著作權歸作者所有,轉載請聯絡作者獲得授權。

一. 整體與區域性
資訊傳遞時候,需要知道的其實是兩個地址:

  • 終點地址(Final destination address)
  • 下一跳的地址(Next hop address)

IP地址本質上是終點地址,它在跳過路由器(hop)的時候不會改變,而MAC地址則是下一跳的地址,每跳過一次路由器都會改變。

這就是為什麼還要用MAC地址的原因之一,它起到了記錄下一跳的資訊的作用。

注:一般來說IP地址經過路由器是不變的,不過NAT(Network address translation)例外,這也是有些人反對NAT而支援IPV6的原因之一。

二. 分層實現
如果在IP包頭(header)中增加了”下一跳IP地址“這個欄位,在邏輯上來說,如果IP地址夠用,交換機也支援根據IP地址轉發(現在的二層交換機不支援這樣做),其實MAC地址並不是必要的。

但用MAC地址和IP地址兩個地址,用於分別表示實體地址和邏輯地址是有好處的。這樣分層可以使網路層與鏈路層的協議更靈活地替換,網路層不一定非要用『IP』協議,鏈路層也不一定非用『乙太網』協議。

這就像OSI七層模型,TCP/IP五層模型其實也不是必要的,用雙層模型甚至單層模型實現網路也不是不可以的,只是那樣做很蛋疼罷了。

三. 早期的『乙太網』實現
早期的乙太網只有集線器(hub),沒有交換機(switch),所以發出去的包能被乙太網內的所有機器監聽到,因此要附帶上MAC地址,每個機器只需要接受與自己MAC地址相匹配的包。

https://www.zhihu.com/question/21546408

3、網路中資料傳輸過程

我們每天都在使用網際網路,我們電腦上的資料是怎麼樣通過網際網路傳輸到到另外的一臺電腦上的呢?把自己的理解寫一下,可能有很多細節還沒有能的很清楚!希望在以後可以使之更加的完善!有不對的地方還請指正.
     我們知道現在的網際網路中使用的TCP/IP協議是基於,OSI(開放系統互聯)的七層參考模型的,(雖然不是完全符合)從上到下分別為 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層和物理層。其中資料鏈路層又可是分為兩個子層分別為邏輯鏈路控制層(Logic Link Control,LLC )和介質訪問控制層((Media Access Control,MAC )也就是平常說的MAC層。LLC對兩個節點中的鏈路進行初始化,防止連線中斷,保持可靠的通訊。MAC層用來檢驗包含在每個楨中的地址資訊。在下面會分析到。還要明白一點路由器是在網路層的,而網絡卡在資料鏈路層。
     我們知道,ARP(Address Resolution Protocol,地址轉換協議)被當作底層協議,用於IP地址到實體地址的轉換。在乙太網中,所有對IP的訪問最終都轉化為對網絡卡MAC地址的訪問。如果主機A的ARP列表中,到主機B的IP地址與MAC地址對應不正確,由A發往B資料包就會發向錯誤的MAC地址,當然無法順利到達B,結 果是A與B根本不能進行通訊。
     首先我們分析一下在同一個網段的情況。假設有兩臺電腦分別命名為A和B,A需要相B傳送資料的話,A主機首先把目標裝置B的IP地址與自己的子網掩碼進行“與”操作,以判斷目標裝置與自己是否位於同一網段內。如果目標裝置在同一網段內,並且A沒有獲得與目標裝置B的IP地址相對應的MAC地址資訊,則源裝置(A)以第二層廣播的形式(目標MAC地址為全1)傳送ARP請求報文,在ARP請求報文中包含了源裝置(A)與目標裝置(B)的IP地址。同一網段中的所有其他裝置都可以收到並分析這個ARP請求報文,如果某裝置發現報文中的目標IP地址與自己的IP地址相同,則它向源裝置發回ARP響應報文,通過該報文使源裝置獲得目標裝置的MAC地址資訊。為了減少廣播量,網路裝置通過ARP表在快取中儲存IP與MAC地址的對映資訊。在一次 ARP的請求與響應過程中,通訊雙方都把對方的MAC地址與IP地址的對應關係儲存在各自的ARP表中,以在後續的通訊中使用。ARP表使用老化機制,刪除在一段時間內沒有使用過的IP與MAC地址的對映關係。一個最基本的網路拓撲結構:


   如果中間要經過交換機的話,根據交換機的原理,它是直接將資料傳送到相應埠,那麼就必須保有一個數據庫,包含所有埠所連網絡卡的MAC地址。它通過分析Ethernet包的包頭資訊(其中包含不原MAC地址,目標MAC地址,資訊的長度等資訊),取得目標B的MAC地址後,查詢交換機中儲存的地址對照表,(MAC地址對應的埠),確認具有此MAC地址的網絡卡連線在哪個埠上,然後將資料包傳送到這個對應的埠,也就相應的傳送到目標主機B上。這樣一來,即使某臺主機盜用了這個IP地址,但由於他沒有這個MAC地址,因此也不會收到資料包。
   現在我們討論兩臺不在同一個網段中的主機,假設網路中要從主機PC-A傳送資料包PAC到PC-C主機中,如下圖所示:


    PC-A並不需要獲取遠端主機(PC-C)的MAC地址,而是把IP分組發向預設閘道器,由閘道器IP分組的完成轉發過程。如果源主機(PC-A)沒有預設閘道器MAC地址的快取記錄,則它會通過ARP協議獲取閘道器的MAC地址,因此在A的ARP表中只觀察到閘道器的MAC地址記錄,而觀察不到遠端主機的 MAC地址。在乙太網(Ethernet)中,一個網路裝置要和另一個網路裝置進行直接通訊,除了知道目標裝置的網路層邏輯地址(如IP地址)外,還要知道目標裝置的第二層實體地址(MAC地址)。ARP協議的基本功能就是通過目標裝置的IP地址,查詢目標裝置的MAC地址,以保證通訊的順利進行。
    資料包在網路中的傳送是一個及其複雜的過程,上圖只是一種很簡單的情況,中間沒有過多的中間節點,其實現實中只會比這個更復雜,但是大致的原理是一致的。
(1)PC-A要傳送資料包到PC-C的話,如果PC-A沒有PC-C的IP地址,則PC-A首先要發出一個dns的請求,路由器A或者dns解析伺服器會給PC-A迴應PC-C的ip地址,這樣PC-A關於資料包第三層的IP地址資訊就全了:源IP地址:PC-A,目的ip地址:PC-C。
(2)接下來PC-A要知道如何到達PC-C,然後,PC-A會發送一個arp的地址解析請求,傳送這個地址解析請求,不是為了獲得目標主機PC-C的MAC地址,而是把請求傳送到了路由器A中,然後路由器A中的MAC地址會發送給源主機PC-A,這樣PC-A的資料包的第二層資訊也全了,源MAC地址:PC-A的MAC地址,目的MAC地址:路由器A的MAC地址,
(3)然後資料會到達交換機A,交換機A看到資料包的第二層目的MAC地址,是去往路由器A的,就把資料包傳送到路由器A,路由器A收到資料包,首先檢視資料包的第三層ip目的地址,如果在自己的路由表中有去往PC-C的路由,說明這是一個可路由的資料包。
(4)然後路由器進行IP重組和分組的過程。首先更換此資料包的第二層包頭資訊,路由器PC-A到達PC—C要經過一個廣域網,在這裡會封裝很多廣域網相關的協議。其作用也是為了找下一階段的資訊。同時對第二層和第三層的資料包重校驗。把資料經過Internet傳送出去。最後經過很多的節點發送到目標主機PC_C中。
   現在我們想一個問題,PC-A和PC-C的MAC地址如果是相同的話,會不會影響正常的通訊呢!答案是不會影響的,因為這兩個主機所處的區域網被廣域網分隔開了,通過對發包過程的分析可以看出來,不會有任何的問題。而如果在同一個區域網中的話,那麼就會產生通訊的混亂。當資料傳送到交換機是,這是的埠資訊會有兩個相同的MAC地址,而這時資料會發送到兩個主機上,這樣資訊就會混亂。因此這也是保證MAC地址唯一性的一個理由。
   知識補充:
(1)閘道器的含義:是說這樣一種裝置:如果主機要發包,就往這個裝置傳送。也就是說此裝置要有路由功能或有去往外部網路的路徑。
在實際網路裡,閘道器一般由路由器或server充當。
(2)ARP(Address Resolution Protocol)是地址解析協議,ARP是一種將IP地址轉化成實體地址的協議。從IP地址到實體地址的對映有兩種方式:表格方式和非表格方式。ARP 具體說來就是將網路層(IP層,也就是相當於OSI的第三層)地址解析為資料連線層(MAC層,也就是相當於OSI的第二層)的MAC地址。ARP協議是通過IP地址來獲得MAC地址的。
(3)網路中需要唯一的MAC地址的理由:(a)IP地址的分配是根據網路的拓樸結構,而不是根據誰製造了網路設定。若將高效的路由選擇方案建立在裝置製造商的基礎上而不是網路所處的拓樸位置基礎上,這種方案是不可行的。(b)當存在一個附加層的地址定址時,裝置更易於移動和維修。例如,如果一個乙太網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網路移到另一個網路,可以給它一個新的IP地址,而無須換一個新的網絡卡。(c)無論是區域網,還是廣域網中的計算機之間的通訊,最終都表現為將資料包從某種形式的鏈路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。資料包在這些節點之間的移動都是由ARP,負責將IP地址對映到MAC地址上來完成的。
(4)標識網路中的一臺計算機,一般至少有三種方法,最常用的是域名地址、IP地址和MAC地址,分別對應應用層、網路層、物理層。網路管理一般就是在網路層針對IP地址進行管理,但由於一臺計算機的IP地址可以由使用者自行設定,管理起來相對困難,MAC地址一般不可更改,所以把IP地址同MAC地址組合到一起管理就成為常見的管理方式。
交換機和路由器的主要區別:
(1)、二者的工作層次不同
最初的的交換機是工作在OSI/RM開放體系結構的資料鏈路層,也就是第二層,而路由器一開始就設計工作在OSI模型的網路層。由於交換機工作在 OSI的第二層(資料鏈路層),所以它的工作原理比較簡單,而路由器工作在OSI的第三層(網路層),可以得到更多的協議資訊,路由器可以做出更加智慧的轉發決策。
(2)、二者的據轉發所依據的物件不同
交換機是利用實體地址或者說MAC地址來確定轉發資料的目的地址。而路由器則是利用不同網路的ID號(即IP地址)來確定資料轉發的地址。IP地址是在軟體中實現的,描述的是裝置所在的網路,有時這些第三層的地址也稱為協議地址或者網路地址。MAC地址通常是硬體自帶的,由網絡卡生產商來分配的,而且已經 固化到了網絡卡中去,一般來說是不可更改的。而IP地址則通常由網路管理員或系統自動分配。
(3)、傳統的交換機只能分割衝突域,不能分割廣播域;而路由器可以分割廣播域
由交換機連線的網段仍屬於同一個廣播域,廣播資料包會在交換機連線的所有網段上傳播,在某些情況下會導致通訊擁擠和安全漏洞。連線到路由器上的網段會被分配成不同的廣播域,廣播資料不會穿過路由器。雖然第三層以上交換機具有VLAN功能,也可以分割廣播域,但是各子廣播域之間是不能通訊交流的,它們之間的交流仍然需要路由器。
(4)路由器提供了防火牆的服務,而交換機則沒有
路由器僅僅轉發特定地址的資料包,不傳送不支援路由協議的資料包傳送和未知目標網路資料包的傳送,從而可以防止廣播風暴。
MAC地址的安全問題:
    我們為了防止IP地址被盜用,就通過簡單的交換機埠繫結(埠的MAC表使用靜態表項),可以在每個交換機埠只連線一臺主機的情況下防止修改MAC地址的盜用,如果是三層裝置還可以提供:交換機埠/IP/MAC 三者的繫結,防止修改MAC的IP盜用。一般繫結MAC地址都是在交換機和路由器上配置的。