ARP基本原理+代理arp實驗
01
ARP 是什么?
ARP【Address Resolution Protocol 】 ,即地址解析協(xié)議,負責(zé)把目的主機的IP 地址解析成目的MAC地址。當發(fā)送者 知道目的主機的IP地址之后, 就可以使用這個IP地址去解析對方的MAC地址。
為什么需要ARP?
在發(fā)送者給其他的網(wǎng)絡(luò)設(shè)備發(fā)送數(shù)據(jù)的時候, 是以數(shù)據(jù)幀的形式發(fā)送的,數(shù)據(jù)幀被網(wǎng)卡解析成電信號或者光信號傳遞到對端。
數(shù)據(jù)幀是由源MAC地址和目的MAC地址組成的,如果發(fā)送者只知道目的主機的IP地址, 不知道目的主機的MAC地址, 就不能把這個數(shù)據(jù)包轉(zhuǎn)化成數(shù)據(jù)幀發(fā)走,而ARP 協(xié)議就是負責(zé)地址解析的, 使用目的主機IP地址來解析對方的MAC地址。
如果發(fā)送者和接收者在同一個網(wǎng)絡(luò)內(nèi),arp解析的就是接收者的MAC地址。
如果發(fā)送者和接收者不在同一個網(wǎng)絡(luò)內(nèi), arp解析的就是這個網(wǎng)絡(luò)內(nèi)網(wǎng)關(guān)的接口MAC地址。
02
arp 工作流程
在網(wǎng)絡(luò)設(shè)備中會存在一個ARP緩存表,這個緩存表記錄著這個IP 地址和MAC地址的映射關(guān)系,可以在設(shè)備終端使用arp -a 來查看本地的arp 緩存表的緩存信息。

arp 協(xié)議的作用, 就是形成這個arp緩存表,那么,交換機是如何形成這個緩存表的呢?
設(shè)備需要解析一個IP地址時, 會發(fā)出一個arp 請求報文的廣播幀,2層報文中目的MAC地址為全F ,目的設(shè)備在收到ARP請求報文之后,會向源設(shè)備發(fā)送一個單播幀,該單播幀是一個ARP的應(yīng)答報文,該應(yīng)答報文中包含了目的設(shè)備的MAC地址。
下面配圖分析一下:
同一個網(wǎng)絡(luò)內(nèi)的ARP請求和應(yīng)答過程如下:
如圖:PC 1 只知道PC3 的IP地址是10.1.1.3, 但是不知道PC3的MAC, 現(xiàn)在想獲取PC3 的MAC地址:
1、發(fā)送者PC1:PC 1 會發(fā)送一個廣播幀, 源IP和源MAC是PC1, 目的IP是PC3,目的MAC為FF-FF-FF-FF-FF-FF, 這個幀是廣播發(fā)送的, 該網(wǎng)絡(luò)內(nèi)所有主機都會接收到,這個報文的載荷內(nèi)容是一個ARP請求報文,意思是我的MAC地址是MAC1,我想給10.1.1.3發(fā)送數(shù)據(jù), 誰是10.1.1.3, 請回復(fù)一下我。
2、非目的主機PC2:由于這個廣播幀網(wǎng)絡(luò)內(nèi)主機都可以收到,PC2 收到這個幀, 提取IP地址, 發(fā)現(xiàn), 它要找的IP地址是10.1.1.3, 我的IP地址是10.1.1.2, 這個數(shù)據(jù)包不是發(fā)給我的, 丟棄, 不回復(fù)。
3、 目的主機PC3:PC 3 收到這個廣播數(shù)據(jù)幀后,拆開數(shù)據(jù)幀, 提取IP地址, 發(fā)現(xiàn)和我本地IP地址是一樣的, 這個數(shù)據(jù)包就是發(fā)給我的, 然后再拆, 提取報文后, 了解到對方要請求我自己的MAC地址,然后就打包一個ARP的應(yīng)答報文,源IP和源MAC都是自己的,目的IP和目的MAC是對方的,單播的發(fā)送給接收者,這樣PC1 就有了PC3的MAC地址。
03
代理ARP
如果這兩個主機不在同一個網(wǎng)絡(luò)內(nèi), 被3層設(shè)備隔離了, 怎么通信呢?

目的IP地址與本機的IP地址位于不同網(wǎng)絡(luò), 由于主機A沒有配置網(wǎng)關(guān),所以它將會以廣播形式發(fā)送ARP Request報文,請求主機B的MAC地址。但是,廣播報文無法被路由器轉(zhuǎn)發(fā),所以主機B無法收到主機A的ARP請求報文,當然也就無法應(yīng)答。
在路由器上啟用代理ARP功能,就可以解決這個問題。
啟用代理ARP后, 主機A解析網(wǎng)關(guān)MAC 地址過程:
?1、主機A發(fā)送arp 請求網(wǎng)關(guān)MAC:? ?在電腦主機要先配置網(wǎng)關(guān)地址,主機A給主機B發(fā)送數(shù)據(jù),發(fā)現(xiàn)是不同網(wǎng)段的數(shù)據(jù)通信,而我本地是沒有這個關(guān)于B的ARP映射關(guān)系的,就會發(fā)送一個arp請求報文,解析網(wǎng)關(guān)MAC地址,源IP和源MAC地址都是主機A,目的IP是網(wǎng)關(guān)IP地址,目的MAC地址是全0。
2、網(wǎng)關(guān)回復(fù)自己的MAC 地址:網(wǎng)關(guān)收到這個arp請求報文后, 檢查目的主機是否可達,可達,就會把自己的MAC地址以arp reply報文回復(fù)給主機A,目的主機不可達就不回復(fù)。
3:主機A 給主機B 發(fā)送數(shù)據(jù):主機A收到這個arp應(yīng)答報文就會把網(wǎng)關(guān)MAC和網(wǎng)關(guān)的IP地址添加進arp表,A要給主機B發(fā)送數(shù)據(jù),需要先解析B的MAC地址,發(fā)送一個arp請求報文,源IP 和源MAC是A的信息,目的IP地址是B的IP地址,目的MAC是網(wǎng)關(guān)MAC。
4:?網(wǎng)關(guān)收到數(shù)據(jù)包后的處理:網(wǎng)關(guān)收到這樣的請求,會查找路由表,如果存在主機B的路由表項,路由器將會使用自己的G0/0/0接口的MAC地址來回應(yīng)該ARP request。主機A收到ARP reply后,將以路由器的G0/0/0接口MAC地址作為目的MAC地址進行數(shù)據(jù)轉(zhuǎn)發(fā)。
04
課后作業(yè):
實驗一:配置靜態(tài)ARP
命令:[Huawei]arp static 10.1.1.4 AA-BB-CC
查看結(jié)果:display arp all

實驗二 :?在華為交換機S5700配置 代理arp
實驗環(huán)境:S5700交換機上創(chuàng)建VLAN10 和VLAN20, 把這兩個PC放到不同的VLAN, 然后使用vlanif下配置IP 和代理arp功能
拓撲如下:

[SW1]display current-configuration?
#
sysname SW1
#
vlan batch 10 20 創(chuàng)建VLAN?
interface Vlanif10 進入這個VLAN的網(wǎng)關(guān)接口
?ip address 10.1.1.254 255.255.255.0
#
interface Vlanif20
?ip address 10.1.2.254 255.255.255.0
?arp-proxy enable
#
interface GigabitEthernet0/0/1
?port link-type access
?port default vlan 10
#
interface GigabitEthernet0/0/2
?port link-type access
?port default vlan 20
查看效果
1,?先不開啟arp代理,?PC1 ping PC2 , 發(fā)現(xiàn)是不通的

2,?分別進入這兩個vlanif 接口, 開啟代理arp功能

3,?檢查效果, 發(fā)現(xiàn) PC 1 和PC2 可以通信了,

4,?接下來進入vlnif 10, 關(guān)閉代理arp功能,

在PC1 和PC2 上使用 arp ?-d 來清理本地緩存的ARP表,檢查連通性。

可以發(fā)現(xiàn),關(guān)閉arp代理后, 主機就不可以解析到對方的MAC地址表,也就不能完成通信,
可以多次驗證檢驗效果。

以上就是今天分享的內(nèi)容。
END
