數據鏈路層(學習筆記)

首先要明確“數據鏈路”和“鏈路”這兩個概念:

  鏈路:從一個節點到相鄰節點的一段物理現路,其中間沒有任何的交換節點,所以可以說鏈路只是一條路徑的組成部分。
  數據鏈路:當需要在一條線路上傳送數據的時候,除了要有一條物理線路還需要一些必要的通信協議來控制這些數據的傳輸,把實現這些協議的軟硬件添加到鏈路上就形成了數據鏈路。其中最常使用網絡適配器來實現這些協議,一般都包括數據鏈路層和物理層的功能。
  數據鏈路層負責相鄰設備之間的數據傳輸,數據單元爲幀,主要的設備是交換機,主要工作是將網絡層交下來的IP數據報添加首部和尾部封裝成幀,然後將封裝好的幀發送給接收方的數據鏈路層,接收方如果收到的幀是無差錯的,就從中提取IP數據報交付給網絡層,否則丟棄。
  所以在數據鏈路層的協議要解決三個問題:封裝成幀、透明傳輸和差錯控制。

  1. 封裝成幀:在數據的首端和尾端添加首部和尾部封裝成幀,這樣可以判斷一個幀的完整性。
  2. 透明傳輸:雖然幀的開始(SOH)和結尾(EOT)是ASCLL碼不可打印的控制字符,但是他的二進制形式很有可能和數據中的二進制相同,造成幀提前結束,透明傳輸就是用來解決這一問題。在數據中出現控制字符前插入轉義自讀“ESC”,接收方接收到幀將這個轉義字符刪掉,然後發往網絡層。如果前面剛好有一個轉義字符,在插入一個轉義字符,然後刪掉最前面的。
  3. 差錯控制:爲了保證可靠性,使用CRC(循環冗餘校驗碼)。由於數據鏈路層不要求可靠傳輸,CRC只做到對幀的無差錯接收,只是爲了避免比特差錯,但是仍然會出現傳輸差錯(幀丟失、幀重複、幀失序)。
CRC校驗

  先在要發送的幀後面附加一個數(這個就是用來校驗的校驗碼,它是二進制序列),從而生成一個新幀發送給接收端。這個附加的數要使所生成的新幀能與發送端和接收端共同選定的某個特定數整除。到達接收端後,再把接收到的新幀除以這個選定的除數。因爲之前在發送端發送數據幀時就已通過附加一個校驗碼,做了“去餘”處理,所以結果應該是沒有餘數。如果有餘數,則表明該幀在傳輸過程中出現了差錯。

MTU

  MTU相當於發快遞時對包裹尺寸的限制,這個限制是不同的數據鏈路對應的物理層而產生。以太網幀中的數據長度規定最小46字節,最大1500字節,ARP數據包的長度不夠46字節,要在後面補填充位;最⼤大值1500稱爲以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU,不同的數據鏈路層標準的MTU也是不同的。如果數據包長度大於相應鏈路的MTU,則需要對數據包進分片。需要注意的是IPv4主機對其產生的數據執行分片,IPv4路由器對其轉發的數據也進行分片,然而IPv6只在數據產生的主機分片,其路由器對轉發的數據不進行分片

MTU對IP協議的影響

  由於數據鏈路層MTU的限制,對於較大的IP數據包就要進行分包。
  將較大的IP包分成多個小包,並給每個小包上打上標籤。每個小包的IP協議頭的16標識(ID)都是相同的。每個小包的IP協議頭的3位標誌字段中,第二位置爲0,標識允許分片,第3位來表示結束標記,如果當前是最後一個包置1,否則置0。到達對端是再將這些小包按順序重組,拼接到一起返回給傳輸層。這些小包中任意一個包丟失,接收端的重組就會失敗,但是IP層不會負責重新傳輸數據。

MTU對UDP協議的影響

  一旦UDP攜帶的數據超過1472(1500-20(IP首部)-8(UDP首部)),那麼就會在網絡層分成多個IP數據報。這些IP數據報中由任意的一個丟失了,都會引起接收端網絡層重組失敗,這就意味着如果UDP在網絡層備份片,整個數據被丟棄的概率就大大增加了。

MTU對TCP協議的影響

  TCP的一個數據報也不能無限大,還是會受到MTU的限制,TCP的單個數據報的最大消息長度被稱爲MSS,TCP在建立鏈接的過程中,通信雙方會進行MSS協商。在最理想的情況下,MSS的值真好使IP不會被分片處理的最大長度,但是這個長度仍然受數據鏈路層的MTU限制。雙方在發送SYN的時候會在TCP頭部寫入自己能支持的MSS值,然後雙方得知對方的MSS值後,選擇兩者最小的作爲最終的MSS。MSS的值就是在TCP首部的40自己變長選項。

MTU和MSS的關係

  MTU:最大傳輸單元,由硬件規定,比如說以太網的MTU位1500字節。
  MSS:最大分節大小,位TCP數據包每次傳輸的最大數據分段大小,一般由發送端向對端TCP通知對端在每個分節中能發送的最大TCP數據。
  MSS值 = MTU - IPv4 Header(20字節) - TCP Header(20字節)/UDP Header(8字節)

ARP協議

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

ARP協議的作用

  ARP協議建立了主機IP地址和MAC地址之間的映射關係。在網絡通信時,源主機的應用程序直到目的主機的IP地址和端口號,卻不知道目的主機的硬件地址。因爲數據包首先是被網卡接收到再去處理上層協議的,如果接受的數據包的硬件地址與本機不符合,直接丟棄,所以在銅鋅鉛必須先獲得目的主機的硬件地址

ARP協議的工作流程

在這裏插入圖片描述
  源主機發出ARP請求,詢問IP地址是172.168.0.1的主機的硬件地址是多少,並將這個請求廣播到本地網段,目的主機接收到廣播的ARP請求,發現其中的IP地址和本機相符,就發送一個ARP應答數據包給源主機,將自己的硬件地址信息填寫到應答包中。
  每臺主機都會維護一個ARP緩存表,緩存表中的表項中有過期時間,一般爲20分鐘,如果在這段時間中沒有再次使用某個表項,這個表項就失效,下次還需要發送ARP來獲取該表項目的主機的硬件地址
在這裏插入圖片描述

ARP數據報的格式

【數據報格式圖】
  源MAC地址、目的MAC地址在以太網首部和ARP請求中個出現一次,對於鏈路層爲以太網的情況是多餘的,但如果鏈路層是其他類型的網絡則有可能是必要的。
  硬件類型是指鏈路層網絡類型,1爲以太網
  協議類型指要轉換的地址類型,0x0800爲IP地址
  硬件地址長度隊醫以太網地址爲6字節
  協議地址長度對於IP地址爲4字節
  op字段爲1表示ARP請求,2爲ARP應答

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