如果没有:ARP进程在本局域网上
广
播
发
送
一
个
A
R
P
请
求
分
组
color{blue}广播发送一个ARP请求分组
广播发送一个ARP请求分组。收到
A
R
P
响
应
分
组
color{blue}ARP响应分组
ARP响应分组后,将得到的
I
P
地
址
到
硬
件
地
址
的
映
射
color{blue}IP地址到硬件地址的映射
IP地址到硬件地址的映射写入ARP高速缓存。
H1 --> H3: H1广播,然而H3并不和H1在同一局域网内,因此不能直接响应H1的ARP请求。但是路由器R1却知道H3在哪里,虽然H1不知道H3在哪里,但是R1知道啊!因此R1就立马给H1一个ARP回应,表示我R1能替你去交付信息给H3,你去不了网2,我可以去,你只需要将数据发送到我的左接口就可以了。(这里另外需要说明的是,R1的左接口是属于网1的,右接口属于网2)这个行为也就是ARP一个典型的代理工作,最终实现将数据从H1转发到H3。
但
是
在
这
个
过
程
中
,
H
1
所
借
助
的
映
射
关
系
:
I
P
地
址
是
H
3
的
,
M
A
C
地
址
是
路
由
器
R
1
的
左
端
口
color{blue}但是在这个过程中,H1所借助的映射关系:IP地址是H3的,MAC地址是路由器R1的左端口
但是在这个过程中,H1所借助的映射关系:IP地址是H3的,MAC地址是路由器R1的左端口。显然这两个并不是实际上的对应关系,但是他可以在H1所在的网络中实现一次数据交付。然后到了路由器R1之后,路由器R1要将数据发出去的时候,也需要进行一次广播询问,而它通过
R
1
的
右
端
口
color{red}R1的右端口
R1的右端口在网2中问:“H3你在哪儿呀?我这里有一封你的信。”当这个H3收到这个询问的时候,就给R1的右端口进行回复:“我在这儿呢!你把信发给我就行。”它们之间也形成了联系。
H1 --> H4: 同样,参考发送给H3的过程。R1的左端口会收到这个请求,那么他的表中会记录到,我不能直接去网3,因为网3不是连接在我这个路由器上的,但是我知道网3怎么去,但是我只要把这个交给R2,最终就可以去网3了。因此,在知道H1要去H4之后,R1就给H1一个回应:我知道怎么去H4,你把信给我就行了,我会尽最大努力给你交付的。从左端口接收到信后,R1就通过右端口在网2上问:“H4在不在我这个网2上,如果在就把这封信收了,如果不在那么谁能替我转交给H4谁就把这封信收了。” 这时,R2发现这封信所找的H4所在网3就在它的右端口上,那么它就回复给R1的右端口说:“你只要从你的右端口将信发给我的左端口就行,我替你交”。那么R1就直接给R2,之后就不管了。R2接收到信后,发现信是从H1到H4的,而这个H4就在我的网络内,因此,它的右端口就进行最后一次广播:“H4在哪里,这里有你的一封信,你快给我一个回答。” 于是H4就发出回答。这一次回答所得到的MAC地址,才是真正的H4的IP地址对应的真实的MAC地址。最后R2就知道了,
I
P
地
址
是
:
H
1
−
−
>
H
4
;
M
A
C
地
址
是
:
M
A
C
(
R
2
右
端
口
的
)
−
−
>
M
A
C
(
H
4
的
)
color{red}IP地址是:H1 --> H4;MAC地址是:MAC(R2右端口的) --> MAC(H4的)
IP地址是:H1−−>H4;MAC地址是:MAC(R2右端口的)−−>MAC(H4的)。