返回列表 发帖

代理ARP(Proxy-ARP)


数据包在网络上寻址时,需要靠OSI七层模型中的第二层数据链路层地址和第三层网络层地址来完成,只要完成这两个地址的封装,数据包便能够发往目的地,也必须完成这两个地址的封装,数据包才能发往目的地。

在当前的网络中,第三层网络层地址就是IP地址,主机之间要通信,必须封装好双方的IP地址,这是无可争议的;IP地址在主机通信的过程中,不会因为网络设备或物理介质的改变而改变。而第二层数据链路层地址则会因为链路介质的不同而发生变化,并且在主机通信中,链路层地址会不断发生变化,因为链路层地址只在同一段介质中才有效,如果介质是多路访问类型,如以太网,则只在同一IP网段有效。 在这里需要讨论的是代理ARP,故介质默认为以太网。

如果通信的主机在同一网段,源主机则直接请求目标主机的二层链路地址(以太网为MAC地址),其它介质的网络同样也是直接请求目标主机的二层链路地址,只不过不叫MAC地 址;如果得不到二层链路地址的回复,数据包就不能完成封装,就不能发送。如果通信的主机不在同一网段,必须经过路由后才能到达目标的话,那么源主机就无法 直接请求目标主机的二层链路地址,因为请求是用广播发送的,所以,此时源主机就直接请求网关的二层链路地址,将数据包的目标地址封装为网关的二层链路地 址,从而将数据包交给网关处理,如果是路由器需要发送数据包到远程网络,同样的道理,路由器将数据包的二层目标地址封装为下一跳的二层链路地址,从而交给 下一跳路由器来处理。

当向网络中发送广播请求目标的二层链路地址时,如果收到的路由器有去往目标网络的路由,那么路由器将会使用自己接口的二层链路地址来回复数据源,声称自己的二层链路地址就是目标的二层链路地址,这就是路由器的代理ARP功能。主机收到路由器的回复后,便将数据包的目标二层链路地址封装为路由器的二层链路地址,从而将数据包发到路由器,因为路由器是有到目标网络的路由的,所以通信不会有问题。

不难发现,当主机需要将数据包发到远程网络时,因为开启了代理ARP的路由器会以自己的二层链路地址充当目标的二层链路地址,所以主机不需要配置网关,就能够将去往远程网络的数据包发到路由器,最终完成通信。

Re: 代理ARP(Proxy-ARP)

在抄书,

TOP

返回列表 回复 发帖