天天看點

資料鍊路層之以太網、MAC、MTU詳解

作用

之前介紹了網絡中各層的作用,可見連結​​這裡寫連結内容​​

我們都知道,在資料鍊路層,資料不再是以比特流的形式傳輸,而是分割成一個一個的幀再進行傳輸。也就是說,資料鍊路層是為網絡層提供資料傳送服務的,這種服務要依靠本層具備的功能來實作,它的各種機制可以讓資料的傳輸更準确可靠。

我們今天學習更多關于資料鍊路層的細節,讓我們對其更加了解。

認識以太網

以太網不是一種具體的網絡,而是一種技術标準;既包含了資料鍊路層的内容,也包含了一些實體層的内容。

例如: 規定了網絡拓撲結構,通路控制方式, 傳輸速率等;

以太網是目前應用最廣泛的區域網路技術; 和以太網并列的還有令牌環網, 無線LAN等。

以太網幀格式

如下:

資料鍊路層之以太網、MAC、MTU詳解

解釋:

1. 源位址和目的位址是指網卡的硬體位址(也叫MAC位址),長度是48位,是在網卡出廠時固化的

2. 幀協定類型字段有三種值,分别對應IP、ARP、RARP

3. 幀末尾是CRC校驗碼

認識MAC位址

  1. MAC位址用來識别資料鍊路層中相連的節點
  2. 長度為48位,及6個位元組。一般用16進制數字加上冒号的形式來表示(例如: 08:00:27:03:fb:19)
  3. mac位址在網卡出廠時就确定了,不能修改。mac位址通常是唯一的(虛拟機中的mac位址不是真實的mac位址, 可能會沖突; 也有些網卡支援使用者配置mac位址)

對比MAC位址和IP位址

(1)IP位址描述的類似于路途的起點和終點。比如北京-上海。

(2)MAC位址描述的是路途上的每一個區間的起點和終點。

比如,從北京到上海,我們肯定要經過很多站,這些XX站就可以看作是MAC位址。而北京、上海就是IP位址。

認識MTU

我們發送快遞時,對尺寸會有一定限制,發送資料也有一定的限制, 這個限制是不同的資料鍊路對應的實體層,産生的限制。

MTU是指資料鍊路層向網絡層發資料的最大傳輸單元。

1. 不同網絡類型的MTU是不同的

2. 以太網幀中的資料長度規定最小46位元組,最大1500位元組

3. ARP資料包的長度不夠46位元組,要在後面補填充位

那如果資料包的長度大于1500位元組呢?

如果一個資料包從以太網路由到撥号鍊路上,資料包長度大于撥号鍊路的MTU了,則需要對資料包進行分片(fragmentation)。

MTU對IP協定的影響

受到資料鍊路層的MTU的限制,對于較大的IP資料包需要進行分包。

過程如下:

1. 将較大的IP包分成多個小包,并給每個小包打上标簽(将每個小包IP協定頭的16位辨別(id) 設為相同)

2. 每個小包的IP協定頭的3位标志字段中,第2位置為0, 表示允許分片, 第3位來表示結束标記(目前是否是最後一個小包, 是的話置為1, 否則置為0)

3. 到達對端時再将這些小包進行順序重組,拼裝到一起傳回給傳輸層

4. 一旦這些小包中任意一個小包丢失, 接收端的重組就會失敗

IP層不會負責重新傳輸資料

為了友善了解,這是之前介紹IP的文章​​這裡寫連結内容​​

截取裡面的報頭如下:

資料鍊路層之以太網、MAC、MTU詳解

MTU對UDP協定的影響

我們回憶一下UDP協定,資料包在傳輸層需要加上8個位元組的UDP首部,在網絡層需要增加20個位元組的IP首部。是以:

一旦UDP攜帶的資料超過1472(1500 - 20(IP首部) - 8(UDP首部)),那麼就會在網絡層分成多個IP資料報。

這多個IP資料報有任意一個丢失,都會引起接收端網絡層重組失敗。

那麼這就意味着, 如果UDP資料報在網絡層被分片, 整個資料被丢失的機率就會大大增加。

MTU對于TCP協定的影響

TCP的一個資料報也受制于MTU。

TCP的單個資料報的最大消息長度,稱為 MSS(Max Segment Size)

TCP在建立連接配接的過程中, 通信雙方會進行MSS協商。

(最理想的情況下, MSS的值正好是在IP不會被分片處理的最大長度)

MSS協商的過程:

1. 雙方在發送SYN的時候會在TCP頭部寫入自己能支援的MSS值

2. 然後雙方得知對方的MSS值之後, 選擇較小的作為最終MSS

( MSS的值就是在TCP首部的40位元組變長選項中(kind=2))

MSS和MTU的關系

由上文的解釋,大家可能已經明白了:

資料鍊路層之以太網、MAC、MTU詳解

檢視

我們用ifconfig檢視一下:

ARP協定

繼續閱讀