您好,登錄后才能下訂單哦!
工作原理:
在網(wǎng)絡(luò) 通訊時,源主機(jī)的應(yīng)用程序知道目的主機(jī)的IP地址和端口號,卻不知道目的主機(jī)的硬件地址,而數(shù)據(jù)包首先是被網(wǎng)卡接收到再去處理上層協(xié)議的,如果接收到的數(shù) 據(jù)包的硬件地址與本機(jī)不符,則直接丟棄。因此在通訊前必須獲得目的主機(jī)的硬件地址。ARP協(xié)議就起到這個作用。源主機(jī)發(fā)出ARP請求,詢問“IP地址是192.168.0.1的主機(jī)的硬件地址是多少”,并將這個請求廣播到本地網(wǎng)段(以太網(wǎng)幀首部的硬件地址填 FF:FF:FF:FF:FF:FF表示廣播),目的主機(jī)接收到廣播的ARP請求,發(fā)現(xiàn)其中的IP地址與本機(jī)相符,則發(fā)送一個ARP應(yīng)答數(shù)據(jù)包給源主機(jī), 將自己的硬件地址填寫在應(yīng)答包中。
每臺主機(jī)都維護(hù)一個ARP緩存表,可以用arp -a命令查看。緩存表中的表項有過期時間(一般為20分鐘),如果20分鐘內(nèi)沒有再次使用某個表項,則該表項失效,下次還要發(fā)ARP請求來獲得目的主機(jī)的硬件地址。試想一下如果沒有緩存,我們每發(fā)一個IP包都要發(fā)個廣播查詢地址,豈不是又浪費(fèi)帶寬又浪費(fèi)資源?而且我們的網(wǎng)絡(luò)設(shè)備是無法識別ARP包的真?zhèn)蔚?,如果我們按?/span>ARP的格式來發(fā)送數(shù)據(jù)包,只要信息有效計算機(jī)就會根據(jù)包中的內(nèi)容做相應(yīng)的反應(yīng).
ARP數(shù)據(jù)報格式
注意到 源MAC地址、目的MAC地址在以太網(wǎng)首部和ARP請求中各出現(xiàn)一次,對于鏈路層為以太網(wǎng)的情況是多余的,但如果鏈路層是其它類型的網(wǎng)絡(luò)則有可能是必要 的。硬件類型指鏈路層網(wǎng)絡(luò)類型,1為以太網(wǎng),協(xié)議類型指要轉(zhuǎn)換的地址類型,0x0800為IP地址,后面兩個地址長度對于以太網(wǎng)地址和IP地址分別為6和 4(字節(jié)),op字段為1表示ARP請求,op字段為2表示ARP應(yīng)答。
以太網(wǎng)首部:
字段 長度(Byte) 默認(rèn)值 備注
接收方MAC 6 廣播時,為 ff-ff-ff-ff-ff-ff
發(fā)送方MAC 6
Ethertype 2 0x0806 0x0806是ARP幀的類型值
ARP包:
字段 長度(Byte) 默認(rèn)值 備注
硬件類型 2 0x1 以太網(wǎng)類型值
上層協(xié)議類型 2 0x0800 上層協(xié)議為IP協(xié)議
MAC地址長度 1 0x6 以太網(wǎng)MAC地址長度為 6
IP地址長度 1 0x4 IP地址長度為 4
操作碼 2 0x1表示ARP請求包,0x2表示應(yīng)答包
發(fā)送方MAC 6
發(fā)送方IP 4
接收方MAC 6
接收方IP 4
填充數(shù)據(jù) 18 因為物理幀最小長度為64字節(jié),前面的42字節(jié)再加上4個CRC校驗字節(jié),還差18個字節(jié)
本機(jī)IP:192.168.0.1 (c0 a8 00 01)
本機(jī)MAC:00-50-56-c0-00-01
目標(biāo)IP:192.168.0.2 (c0 a8 00 02)
目標(biāo)MAC:00-0c-29-0b-42-7e
1、 Ping 目標(biāo)主機(jī)192.168.0.2時,本機(jī)發(fā)送的ARP數(shù)據(jù)包為
00000000 : ff ff ff ff ff ff 00 50 56 c0 00 01 08 06 00 01
00000010 : 08 00 06 04 00 01 00 50 56 c0 00 01 c0 a8 00 01
00000020 : 00 00 00 00 00 00 c0 a8 00 02
以太網(wǎng)數(shù)據(jù)包發(fā)送目的地:ff ff ff ff ff ff(全網(wǎng))
以太網(wǎng)數(shù)據(jù)包發(fā)送源:00 50 56 c0 00 01(本機(jī))
以太網(wǎng)數(shù)據(jù)包數(shù)據(jù)包內(nèi)容類型:08 06(ARP數(shù)據(jù)包)
ARP數(shù)據(jù)包類型:00 01(Request)
數(shù)據(jù)內(nèi)容:告訴IP為c0 a8 00 02的目標(biāo)主機(jī),本機(jī)的IP為c0 a8 00 01,MAC為
00 50 56 c0 00 01,請更新,并將你的MAC發(fā)送給我。
目標(biāo)主機(jī)回應(yīng)本機(jī)的ARP數(shù)據(jù)包為
00000000 : 00 50 56 c0 00 01 00 0c 29 0b 42 7e 08 06 00 01
00000010 : 08 00 06 04 00 02 00 0c 29 0b 42 7e c0 a8 00 02
00000020 : 00 50 56 c0 00 01 c0 a8 00 01
以太網(wǎng)數(shù)據(jù)包發(fā)送目的地:00 50 56 c0 00 01
以太網(wǎng)數(shù)據(jù)包發(fā)送源: 00 0c 29 0b 42 7e
以太網(wǎng)數(shù)據(jù)包數(shù)據(jù)包內(nèi)容類型:08 06(ARP數(shù)據(jù)包)
ARP數(shù)據(jù)包類型:00 02(Reply)
數(shù)據(jù)內(nèi)容:告訴MAC為 00 50 56 c0 00 01 的主機(jī),你的IP和MAC我已經(jīng)收到,我的MAC和IP為00 0c 29 0b 42 7e 和c0 a8 00 02,請保存更新。
2、 修改系統(tǒng)IP時(未發(fā)生IP沖突的情況下),發(fā)送的ARP數(shù)據(jù)包為
00000000 : ff ff ff ff ff ff 00 0c 29 0b 42 7e 08 06 00 01
00000010 : 08 00 06 04 00 01 00 0c 29 0b 42 7e c0 a8 00 03
00000020 : 00 00 00 00 00 00 c0 a8 00 03
以太網(wǎng)數(shù)據(jù)包發(fā)送目的地:ff ff ff ff ff ff(全網(wǎng))
以太網(wǎng)數(shù)據(jù)包發(fā)送源:00 0c 29 0b 42 7e(本機(jī))
以太網(wǎng)數(shù)據(jù)包數(shù)據(jù)包內(nèi)容類型:08 06(ARP數(shù)據(jù)包)
ARP數(shù)據(jù)包類型:00 01(Request)
數(shù)據(jù)內(nèi)容:告訴IP為c0 a8 00 03的主機(jī),本機(jī)的MAC和IP為00 0c 29 0b 42 7e 和c0 a8 00 03。由于網(wǎng)絡(luò)內(nèi)沒有c0 a8 00 03 主機(jī),所以此數(shù)據(jù)包將不會有回應(yīng),此時,局域網(wǎng)交換機(jī)將會刷新緩存,使你的IP和MAC對應(yīng)起來。
3、 修改系統(tǒng)IP時(發(fā)生IP沖突的情況下),發(fā)送的ARP數(shù)據(jù)包為
00000000 : ff ff ff ff ff ff 00 0c 29 0b 42 7e 08 06 00 01
00000010 : 08 00 06 04 00 01 00 0c 29 0b 42 7e c0 a8 00 01
00000020 : 00 00 00 00 00 00 c0 a8 00 01
以太網(wǎng)數(shù)據(jù)包發(fā)送目的地:ff ff ff ff ff ff(全網(wǎng))
以太網(wǎng)數(shù)據(jù)包發(fā)送源:00 0c 29 0b 42 7e
以太網(wǎng)數(shù)據(jù)包數(shù)據(jù)包內(nèi)容類型:08 06(ARP數(shù)據(jù)包)
ARP數(shù)據(jù)包類型:00 01(Request)
數(shù)據(jù)內(nèi)容:告訴IP為c0 a8 00 01的主機(jī),本機(jī)的MAC和IP為00 0c 29 0b 42 7e 和c0 a8 00 01。由于網(wǎng)絡(luò)內(nèi)已經(jīng)有c0 a8 00 01 主機(jī),將會發(fā)生沖突。這時將收到ARP Reply數(shù)據(jù)包。
接收的ARP數(shù)據(jù)包為
00000000 : 00 0c 29 0b 42 7e 00 50 56 c0 00 01 08 06 00 01
00000010 : 08 00 06 04 00 02 00 50 56 c0 00 01 c0 a8 00 01
00000020 : 00 0c 29 0b 42 7e c0 a8 00 01
以太網(wǎng)數(shù)據(jù)包發(fā)送目的地:00 0c 29 0b 42 7e
以太網(wǎng)數(shù)據(jù)包發(fā)送源:00 50 56 c0 00 01
以太網(wǎng)數(shù)據(jù)包數(shù)據(jù)包內(nèi)容類型:08 06(ARP數(shù)據(jù)包)
ARP數(shù)據(jù)包類型:00 02(Reply)
數(shù)據(jù)內(nèi)容:告訴MAC為00 0c 29 0b 42 7e的主機(jī),本機(jī)的MAC和IP為00 50 56 c0 00 01和 c0 a8 00 01。這時MAC 為42 7e c0 a8 00 01的主機(jī)收到這個包后,并知道他的IP與其它主機(jī)沖突了。
4、 偽造ARP數(shù)據(jù)包
向目標(biāo)MAC發(fā)送偽造的ARP Reply,告知一個假的信息,達(dá)到欺騙的目的。
本機(jī)真實IP為:192.168.0.1(c0 a8 00 01)
本機(jī)真實MAC為:00-50-56-c0-00-01
偽造的MAC為:11-11-11-11-11-11
欺騙目標(biāo):
IP為:192.168.0.2(c0 a8 00 02)
MAC:00-0c-29-0b-42-7e
偽造的數(shù)據(jù)包如下:
Packet length: 60
00000000 : 00 0c 29 0b 42 7e 11 11 11 11 11 11 08 06 00 01
00000010 : 08 00 06 04 00 02 11 11 11 11 11 11 c0 a8 00 01
00000020 : 00 0c 29 0b 42 7e c0 a8 00 02(剩余部分用0填補(bǔ))
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。