目錄
數據鏈路層介於物理層和網絡層之間,在物理層提供的服務的基礎上向網絡層提供服務。數據鏈路層解決的是在局域網內點到點的問題。
數據鏈路層的作用
兩個設備(同⼀種數據鏈路節點)之間進行數據傳遞。
以太網
以太網是⼀種技術標準,既包含了數據鏈路層的內容, 也包含了⼀些物理層的內容。例如:規定了網絡拓撲結構、訪問控制方式、傳輸速率等。
以太網幀格式
理解MAC地址
MAC地址:
- 用於識別同一數據鏈路中互聯的節點(識別連接到同一傳輸介質上的設備 / 標識同一鏈路中不同計算機的一種識別碼)
- 長度爲48位,即6字節。一般用16進制數字加上冒號的形式來表示,例如08:00:27:03:fb:19.
- Mac地址在網卡出廠時就確定了,不能修改。MAC地址通常是唯一的。
理解ARP協議
ARP協議:從分組數據包的IP地址中解析出物理地址(MAC地址)的協議。(建立了主機IP地址和MAC地址的映射關係)
它不是⼀個單純的數據鏈路層的協議,是介於數據鏈路層和網絡層之間的一個協議。
原理:以目標IP地址爲線索,用來定位下一個應該接收數據分包的網絡設備對應的MAC地址。如果目標主機不在同一個鏈路上, 可以通過ARP查找下一跳路由器的MAC地址。(ARP只適用於IPv4)
工作機制:ARP是藉助ARP請求與ARP響應兩種類型的包確定MAC地址的。
總結:從一個IP地址發送ARP請求包以瞭解其MAC地址,目標地址將自己的MAC地址填入其中的ARP響應包返回到IP地址,由 此可以通過ARP從IP地址獲得MAC地址,實現鏈路內的IP通信。
理解MTU
MTU意爲最大傳輸單元 (相當於發快遞時對包裹尺寸的限制),是指一種通信協議的某一層上所能通過的最大數據報大小,以字節爲單位。大部分網絡設備的MTU都是1500。
- 以太網幀中的數據長度規定最小46字節,最大1500字節。ARP數據包的長度不夠46字節,就要在後面補填充位。
- 如果一個數據包從以太網路由到撥號鏈路上,數據包長度大於撥號鏈路的MTU了,就需要對數據包進行分片。分片是在網絡層進行的。
- 不同的數據鏈路層標準的MTU是不同的。在Linux下,MTU的值爲1500。
一、MTU對IP協議的影響
由於數據鏈路層MTU的限制,對於較大的IP數據包要進行分片。將較大的IP包分成多個小包,並給每個小包打上標籤。每個小包IP協議頭的16位標識(id)都是相同的。每個小包的IP協議頭的3位標誌字段中,第2位置爲0,表示允許分片,第3位來表示結束標記(當前是否是最後一個小包,是的話置爲1,否則置爲0)。到達對端時再將這些小包按序重組,拼裝到一起返回給傳輸層。一旦這些小包中任意一個小包丟失,接收端的重組就會失敗,但IP層不會負責重新傳輸數據。分片和組裝都是在網絡層進行。
二、MTU對UDP協議的影響
UDP攜帶的數據一旦超過1472(1500-20(IP首部)-8(UDP首部)),那麼就會在網絡層分成多個IP數據報。這多個IP數據報有任意一個丟失,都會引起接收端網絡層重組失敗,這就意味着,如果UDP數據報在網絡層被分片,整個數據被丟失的概率就會大大增加。
三、MTU對TCP協議的影響
和UDP一樣,TCP的一個數據報也不能無限大,還是要受制於MTU。TCP的單個數據報的最大消息長度,稱爲MSS。
TCP在建立連接過程中,通信雙方會進行MSS協商。最理想的情況,就是MSS的值正好是在IP不會被分片處理的最大長度,即1460(1500-20(IP首部)-20(TCP首部))。雙方在發送SYN的時候,會在TCP頭部寫入自己能支持的MSS值,然後雙方得知對方的MSS值之後,選擇較小的作爲最終的MSS。MSS的值在TCP首部的40字節變長選項中。
注:Linux下,使用ifconfig命令,即可查看IP地址、MAC地址和MTU等。