数据链路层(学习笔记)
首先要明確“數據鏈路”和“鏈路”這兩個概念:
??鏈路:從一個節點到相鄰節點的一段物理現路,其中間沒有任何的交換節點,所以可以說鏈路只是一條路徑的組成部分。
??數據鏈路:當需要在一條線路上傳送數據的時候,除了要有一條物理線路還需要一些必要的通信協議來控制這些數據的傳輸,把實現這些協議的軟硬件添加到鏈路上就形成了數據鏈路。其中最常使用網絡適配器來實現這些協議,一般都包括數據鏈路層和物理層的功能。
??數據鏈路層負責相鄰設備之間的數據傳輸,數據單元為幀,主要的設備是交換機,主要工作是將網絡層交下來的IP數據報添加首部和尾部封裝成幀,然后將封裝好的幀發送給接收方的數據鏈路層,接收方如果收到的幀是無差錯的,就從中提取IP數據報交付給網絡層,否則丟棄。
??所以在數據鏈路層的協議要解決三個問題:封裝成幀、透明傳輸和差錯控制。
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應答
總結
以上是生活随笔為你收集整理的数据链路层(学习笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scrapy-spiders(爬虫)
- 下一篇: 简单好用的 Linux/Windows