網絡-數據鏈路層小結


數據鏈路的作用

1、封裝成幀:在每個網絡層數據報經鏈路傳送之前,幾乎所有的鏈路協議都要將其用鏈路層幀封裝起來;
2、鏈路接入:媒體訪問控制協議(MAC)協議規定了幀在鏈路上傳輸的規則;
3、可靠交付:鏈路層保證無差錯的經鏈路層移動每個網路層數據幀;
4、差錯檢驗和糾正
5、流程可畫爲如下:

這裏寫圖片描述


MAC地址

1、MAC地址用於識別數據鏈路中互連的節點;數據一般都是先到目標所在的局域網,再通過查詢mac地址來匹配到對應主機;
2、MAC地址全球唯一,任何一個網絡的MAC地址都不會重複;
3、一個MAC地址長48比特,也就是6字節。

以太網幀格式

以太網幀本地的前端是以太網的首部,總共14個字節。分別是6字節的目標MAC地址,6字節的源MAC地址以及2個字節的上層協議類型,該字段以便把收到的MAC幀的數據上交給上一層的這個協議(包含IP,ARP,PARP);在幀頭後緊跟着的是數據,數據字段所容納的最大數據範圍爲46~1500字節,加上首尾,有效長度爲64~1518字節(首部6+6+2,尾部4字節)。幀尾部是一個幀校驗序列,長4個字節。

這裏寫圖片描述

關於數據的大小,規定最小爲46字節,最大爲1500字節,ARP和RARP的數據包不夠46字節,需要在後面補填充位;而1500又稱爲以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU,若一個數據包從以太網發送到撥號鏈路上,數據包大小超過MTU,則需要對數據進行分片處理。
關於幀尾部的校驗,可以檢查幀是否有損壞。比如在傳輸過程中出現干擾,就可能影響發送數據導致亂碼位的出現,此時就可通過FCS的值將受到噪聲干擾的錯誤幀丟棄。

關於MAC幀中上層協議字段的作用,可參考下圖:

這裏寫圖片描述

以太網驅動程序首先根據MAC幀中的「上層協議」字段確定上層使用的到底是什麼協議,然後再交給相應的協議處理。

地址解析協議ARP

作用:
在局域網中,網絡中實際傳輸的是「幀」,幀裏面是有目標主機的MAC地址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得的呢?它就是通過地址解析協議獲得的。所謂「地址解析」就是主機在發送幀之前將目標主機的IP地址轉換成目標主機的MAC地址的過程。ARP協議的基本功能就是通過目標主機的IP地址,查詢目標主機的MAC地址,以保證通信的順利進行。協議又稱做服務,ARP協議也即ARP服務,提供把IP地址轉換成MAC地址的服務!
每個主機都設有一個ARP告訴緩存,裏面有所在的局域網中的各主機和路由器的IP地址到硬件地址的映射表;通過arp -a可查看,需要注意的是緩存表中的過期時間一般爲20分鐘,若20分鐘內沒有使用該表項, 則該表項失效。
發送數據流程:

場景一:源A和目的B節點均位於相同的網絡中

爲了發送數據報,該源必須向它的適配器不僅提供IP數據報,而且還有B的MAC地址;由於在ARP之前,只能在IP數據報中獲得B的IP地址,通過ARP協議查看緩存表中是否有匹配到的B的MAC地址,如果有的話,發送適配器將構造一個包含目的地的MAC地址的鏈路層幀,並把該幀發送進局域網;
但是若A的ARP緩存表中沒有匹配到B的MAC地址,則此時A端構造一個包含發送和接收IP地址及MAC地址的ARP查詢分組,並且在鏈路層中封裝該分組,用廣播地址作爲幀的目的地址,並將該幀傳輸進子網中。此時當前子網中的所有其他適配器收到,並判斷自己所對應的IP地址是否與ARP分組中的目的IP地址匹配,與之匹配的節點發送回一個帶有所希望映射的響應ARP分組。然後A更新自己的ARP表,併發送IP數據報。
需要注意的是:查詢ARP報文是在廣播幀中發送的,而響應ARP報文是在一個標準幀中發送!整個過程圖示如下:

這裏寫圖片描述


場景二:源和目的不在同一個子網

當主機A在封裝數據包時檢測到目標主機並不在本網段,在這時,數據包不能把目標主機的MAC地址順利封裝進去,那麼就用到另一種方法,那就是網關,主機A在準備發向主機B的數據中,封裝好自己的IP地址和MAC地址,同時也封裝好目標主機B的IP地址,數據包封裝到這裏,主機A就利用上面得到同網段目標主機B的方法去請求得到網關的MAC地址,同樣也是用ARP去廣播,因爲網關必須和本機在同一網段,理所當然,網關能夠收到這個ARP請求並能正確迴應給主機A,這時主機A在數據包中封裝好自己的IP地址和MAC地址,同時也封裝好目標主機B的IP地址和網關的MAC地址,把數據包從網卡發出去,因爲目標MAC是網關的,所以網關收到這個數據包後,發現目標MAC是自己,而目標IP卻是別人,所以它不可以再往上打開這個數據包,它要做的工作就是把這些數據包發給下一跳路由器(如果網關自身就是一臺路由器的話),如果網關是一臺普通PC,那麼它就發給路由器,讓路由器把這些數據包正確傳輸到遠程目標網絡,到達遠程網絡後,它們的網關再將數據包發給數據包中的目標IP,即源主機A苦苦尋找的目標主機B,從而真正結束不同網絡之間的通信,迴應的數據包也是用同樣的方法到達目的地,在這裏,還需要注意的是,當網關把數據包發給下一跳路由器時,這個數據包必須由網關把目標MAC改成下一跳路由器的MAC地址(通過ARP得到),而源端MAC改成發出端口的MAC地址,否則下一跳路由器收到目標MAC不是自己的數據包,會丟棄不予理睬,下一跳路由器再發給下一跳路由器同樣要把目標MAC地址改爲下一跳路由器的MAC地址再發出去!