您好,登錄后才能下訂單哦!
一.數據鏈路層
數據鏈路層實現的是相鄰結點之間的邏輯鏈接,其使用的協議單元為數據幀。在兩個結點之間傳送數據時,數據鏈路層將網絡層交下來的IP數據報組裝成幀,在兩個相鄰節點間的鏈路上傳送幀。
數據鏈路層的三個基本問題:
1.封裝成幀,2.透明傳輸,3.差錯檢測
下來討論一下封裝成幀 :
封裝成幀就是在一段數據的前后分別添加首部和尾部,這樣就構成了一個幀。網絡層的IP數據報傳送到數據鏈路層就成為了幀的數據部分,在幀的數據部分前后分別加上頭部和尾部就構成了一個完整的幀。
二.以太網的MAC層
1.MAC 層的硬件地址
在局域網中,硬件地址又稱為物理地址或者MAC 地址。長度是48位,是在網卡出廠
時固化的。在LINUX 下用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。在生產適配器時,這6字節MAC地址已被固化在適配器的ROM中。因此實際上就是適配器地址或適配器標識符。
2.MAC幀的格式
其中目的地址和源地址就是MAC地址,幀協議類型字段有三種值,分別對應IP、ARP(地址解析)、RARP(逆地址解析)。幀末尾是CRC校驗碼。
以太網幀中的數據長度規定最小46字節,最大1500字節,ARP和RARP數據包的長度不夠46字節,要在后面補填充位。最大值1500稱為以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU,如果一個數據包從以太網路由到撥號鏈路上,數據包長度大于撥號鏈路的MTU了,則 需要對數據包進行分片(fragmentation)。LINUX下的ifconfig命令的輸出中也有“MTU:1500”。注意,MTU這 個概念指數據幀中有效載荷的最大長度,不包括幀首部的長度。
3.ARP數據報格式
在網絡通訊時,源主機的應用程序知道目的主機的IP地址和端口號,卻不知道目的主機的硬件地址,而數據包首先是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件地址與本機不符,則直接丟棄。因此在通訊前必須獲得目的主機的硬件地址。ARP協議就起到這個作用。
源主機發出ARP請求,詢問“IP地址是192.168.0.1的主機的硬件地址是多少”,并將這個請求廣播到本地網段(以太網幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播),目的主機接收到廣播的ARP請求,發現其中的IP地址與本機相符,則發送一個ARP應答數據包給源主機,將自己的硬件地址填寫在應答包中。
每臺主機都維護一個ARP緩存表,在LINUX下可以用arp -a命令查看。緩存表中的表項有過期時間(一般為20分鐘),如果20分鐘內沒有再次使用某個表項,則該表項失效,下次還要發ARP請求來獲得目的主機的硬件地址。
ARP數據報幀格式如下圖所示:
注意到源MAC地址、目的MAC地址在以太網首部和ARP請求中各出現一次,對于鏈路層為以太網 的情況是多余的,但如果鏈路層是其它類型的網絡則有可能是必要的。硬件類型指鏈路層網絡類型,1為以太網,協議類型指要轉換的地址類型,0x0800為IP地址,后面兩個地址長度對于以太網地址和IP地址分別為6和4(字節),op字段為1表示ARP請求,op字段為2表示ARP應答。
下面舉一個具體的例子:
主機1向主機2發送ARP請求:
主機2向主機1ARP應答:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。