ARP的一次请求与应答
?
ARP:????我們知道,網絡層和網絡層以上使用的是IP地址,但在實際網絡的鏈路上傳送數據幀時,數據包首先是被網卡接受到再去處理上層協議的,所以最終還是必須使用該網絡的硬件地址。但IP地址和下面的網絡的硬件地址之間由于格式不同而不存在簡單的映射關系(例如,IP地址有32位,而局域網的硬件地址是48位)。此外,在一個網絡上可能經常會有新的主機加進來,或撤走一些主機。更換網絡適配器也會使主機的硬件地址改變。地址解析協議(ARP)解決這個問題的方法是,在主機ARP高速緩存中應存放一個從IP地址到硬件地址的映射表,并且這個映射表還經常動態(tài)更新(新增或超時刪除)。
????每一臺主機都設有一個ARP高速緩存,里面有本局域網上的各主機和路由器的IP地址到硬件地址的映射表,這些都是該主機目前知道的一些地址。
?
以太網幀(RFC 894)格式:
?
?
其中的源地址和目的地址是指網卡的硬件地址(也叫MAC地址),長度是48位,是在網卡出廠時固化的。用ifcong命令看一下,“HWaddr 00:0C:28:0F:35:E3 ”部分就是硬件地址。幀協議類
型字段有三種值,分別對應IP、ARP、RARP。幀末尾是CRC校驗碼。
??
?以太網幀中的數據長度規(guī)定最小46字節(jié),最大1500字節(jié),ARP和RARP數據包的長度不夠46字節(jié),要在后面補填充位。最大值1500稱為以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU,如果一個數據包從以太網路由到撥號鏈路上,數據包長度大于撥號鏈路的MTU了,則需要對數據包進行分片(fragmentation)。ifcong命令的輸出中也有“MTU:1500”,MTU這個概念指數據幀中有效載荷的最大長度,不包括幀首部的長度。?
ARP數據報的格式如下:
?
?
源MAC地址、目的的MAC地址在以太網首部和ARP請求中各出現一次,對于鏈路層為以太網的情況是多余的,但如果鏈路層是其它類型的網絡則有可能是必要的。
?
硬件類型指鏈路層網絡類型,1為以太網,協議類型指要轉換的地址類型,0x0800為IP地址,后面兩個地址長度對于以太網地址和IP地址分別為6和4(字節(jié)),op字段為1表示ARP請求,op字段為2表示ARP應答。
?
?
例:請求幀如下(為了清晰在每行的前面加了字節(jié)計數,每行16個字節(jié)): ?
以太網首部(14字節(jié))
0000: ff ff ff ff ff ff ? 00 05 5d 61 58 a8 ? 08 06
ARP幀(28字節(jié))
0000: 00 01
0010: 08 00 ? 06 04 ?00 01 ?00 05 5d 61 58 a8 ?c0 a8 00 37
0020: 00 00 00 00 00 00 ? c0 a8 00 02?
填充位(18字節(jié))
0020: 00 77 31 d2 50 10?
0030: fd 78 41 d3 00 00 00 00 00 00 00 00?
以太網首部:目的主機采用廣播地址,源主機的MAC地址是00:05:5d:61:58:a8,上層協議類 ?
型0x0806表示ARP。 ?
ARP幀: 硬件類型0x0001表示以太網,協議類型0x0800表示IP協議,硬件地址(MAC地址)長度為6,協議地址(IP地址)長度為4,op為0x0001表示請求目的主機的MAC地址(arp),源主機MAC地址 00:05:5d:61:58:a8,源主機IP地址為c0 a8 00 37(192.168.0.55),目的主機MAC地址全0待填寫,目的主機IP地址為c0 a8 00 02(192.168.0.2)。
例:若當前鏈路層網絡類型為以太網,網絡層協議為IP協議,
? ? ? 以太網源地址為MAC1,源IP地址為IP1,
? ? ? 以太網目的地址為MAC2,目的IP地址為IP2.
則ARP請求幀應為: ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ARP應答幀:
????????以太網目的地址:ff ff ff ff ff ff ? ? ? ? ? ? ? ? 以太網目的地址:MAC1
????????以太網源地址:MAC1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 以太網源地址:MAC2
????????幀類型:0806 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 幀類型:0806
????????硬件類型:以太網(0001) ? ? ? ? ? ? ? ? ? ? ? ? ? ?硬件類型:以太網(0001)
????????協議類型:IP協議(0800) ? ? ? ? ? ? ? ? ? ? ? ?協議類型:IP協議(0800)
? ? ? ? 硬件地址長度:6? 個字節(jié) ? ? ? ? ? ? ? ? ? ? ? ? ? ?硬件地址長度:6個字節(jié)
????????協議地址長度: 4 個字節(jié) ? ? ? ? ? ? ? ? ? ? ? ? ? ?協議地址長度:4個字節(jié)
? ? ? ? op: 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? op:2
????????發(fā)送端以太網地址:MAC1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?發(fā)送端以太網地址:MAC2
????????發(fā)送端IP地址:IP1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 發(fā)送端IP地址:IP2
????????目的以太網地址:00 00 00 00 00 00 ? ? ? ? ? ?目的以太網地址:MAC1
????????目的IP地址:IP2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?目的IP地址:IP1
轉載于:https://www.cnblogs.com/zhangbing12304/p/10729737.html
總結
以上是生活随笔為你收集整理的ARP的一次请求与应答的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NAS组建日记(一):来块大硬盘先—HG
- 下一篇: ASIHTTPRequest 常用方法讲