作用
之前介紹了網絡中各層的作用,可見連結這裡寫連結内容
我們都知道,在資料鍊路層,資料不再是以比特流的形式傳輸,而是分割成一個一個的幀再進行傳輸。也就是說,資料鍊路層是為網絡層提供資料傳送服務的,這種服務要依靠本層具備的功能來實作,它的各種機制可以讓資料的傳輸更準确可靠。
我們今天學習更多關于資料鍊路層的細節,讓我們對其更加了解。
認識以太網
以太網不是一種具體的網絡,而是一種技術标準;既包含了資料鍊路層的内容,也包含了一些實體層的内容。
例如: 規定了網絡拓撲結構,通路控制方式, 傳輸速率等;
以太網是目前應用最廣泛的區域網路技術; 和以太網并列的還有令牌環網, 無線LAN等。
以太網幀格式
如下:

解釋:
1. 源位址和目的位址是指網卡的硬體位址(也叫MAC位址),長度是48位,是在網卡出廠時固化的
2. 幀協定類型字段有三種值,分别對應IP、ARP、RARP
3. 幀末尾是CRC校驗碼
認識MAC位址
- MAC位址用來識别資料鍊路層中相連的節點
- 長度為48位,及6個位元組。一般用16進制數字加上冒号的形式來表示(例如: 08:00:27:03:fb:19)
- 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的文章這裡寫連結内容
截取裡面的報頭如下:
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的關系
由上文的解釋,大家可能已經明白了:
檢視
我們用ifconfig檢視一下: