數據鏈路層(以太網、MTU、ARP協議)

數據鏈路層

認識以太網

"以太網" 不是一種具體的網絡, 而是一種技術標準; 既包含了數據鏈路層的內容, 也包含了一些物理層的內容. 例如: 規定了網絡拓撲結構, 訪問控制方式, 傳輸速率等;
例如以太網中的網線必須使用雙絞線; 傳輸速率有10M, 100M, 1000M等;以太網是當前應用最廣泛的局域網技術; 和以太網並列的還有令牌環網, 無線LAN等;

以太網幀格式

在這裏插入圖片描述
源地址和目的地址是指網卡的硬件地址(也叫MAC地址), 長度是48位,是在網卡出廠時固化的;
幀協議類型字段有三種值,分別對應IP、ARP、RARP;
幀末尾是CRC校驗碼

認識MAC地址

MAC地址用來識別數據鏈路層中相連的節點;
長度爲48位, 及6個字節. 一般用16進制數字加上冒號的形式來表示(如08:00:27:03:fb:19)
在網卡出廠時就確定了, 不能修改. mac地址通常是唯一的(虛擬機中的mac地址不是真實的mac地址, 可能會衝突; 也有些網卡支持用戶配置mac地址).

對比理解MAC地址和IP地址

IP地址描述的是路途總體的 起點 和 終點;
MAC地址描述的是路途上的每一個區間的起點和終點;

MTU

MTU相當於發快遞時對包裹尺寸的限制. 這個限制是不同的數據鏈路對應的物理層, 產生的限制.

以太網幀中的數據長度規定最小46字節,最大1500字節,ARP數據包的長度不夠46字節,要在後面補填充位;最大值1500稱爲以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU;如果一個數據包從以太網路由到撥號鏈路上,數據包長度大於撥號鏈路的MTU了,則需要對數據包進行分片(fragmentation);不同的數據鏈路層標準的MTU是不同的;

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協議的影響

TCP的一個數據報也不能無限大, 還是受制於MTU. TCP的單個數據報的最大消息長度, 稱爲MSS(MaxSegment Size);
TCP在建立連接的過程中, 通信雙方會進行MSS協商.
最理想的情況下, MSS的值正好是在IP不會被分片處理的最大長度(這個長度仍然是受制於數據鏈路層的MTU).
雙方在發送SYN的時候會在TCP頭部寫入自己能支持的MSS值.
然後雙方得知對方的MSS值之後, 選擇較小的作爲最終MSS.
MSS的值就是在TCP首部的40字節變長選項中(kind=2);

ARP協議

ARP不是一個單純的數據鏈路層的協議, 而是一個介於數據鏈路層和網絡層之間的協議;

ARP協議的作用

ARP協議建立了主機 IP地址 和 MAC地址 的映射關係.
在網絡通訊時,源主機的應用程序知道目的主機的IP地址和端口號,卻不知道目的主機的硬件地址;
數據包首先是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件地址與本機不符,則直接丟棄;因此在通訊前必須獲得目的主機的硬件地址;

ARP協議的工作流程

在這裏插入圖片描述
源主機發出ARP請求,詢問“IP地址是192.168.0.1的主機的硬件地址是多少”, 並將這個請求廣播到本地網段(以太網幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播);
目的主機接收到廣播的ARP請求**,發現其中的IP地址與本機相符,則發送一個ARP應答數據包給源主機,將自己的硬件地址填寫在應答包中;**每臺主機都維護一個ARP緩存表,可以用arp -a命令查看。緩存表中的表項有過期時間(一般爲20分鐘),如果20分鐘內沒有再次使用某個表項,則該表項失效,下次還要發ARP請求來獲得目的主機的硬件地

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章