TCP/IP——ARP地址解析

一、ARP

ARP:地址解析协议,根据IP地址获取物理地址
在这里插入图片描述

在硬件层次上进行数据交换,必须知道目的端的硬件地址才能发送数据,ARP就是根据IP地址请求目的物理地址。

在多路访问的网络ARP是非常重要的,但在点对点链路中可以不使用ARP。

在多路访问的网络最经典的有以太网、多点帧中继、DMVPN的MGRE。在这种多路访问的网络里面,知道对方的逻辑IP地址是无法直接发送数据包的,需要一个协议来映射这个逻辑IP地址到硬件地址。比如:

在以太网里面,有ARP映射IP地址到MAC;

在多点帧中继网络里面,有反向ARP映射逻辑IP地址到DLCI;

在DMVPN里面的MGRE网络,有NHRP来映射逻辑的隧道口的IP地址到全局可路由的IP地址
在这里插入图片描述
点对点的链路不使用ARP
目的地址FFFFFFFFFFFFFFFFFF,广播
ARP的请求时是广播
ARP的应答时是单播,直接送到请求端主机的

二、ARP帧的格式

在这里插入图片描述
以太网目的地址:目的MAC地址

以太网源地址:源MAC地址

帧类型:值为0x0806 ARP

硬件类型:指硬件地址的类型,值为1表示以太网地址

协议类型:指要映射的协议地址类型,值为0x0800表示IP地址

硬件地址长度:MAC地址的长度,值为6,以字节为单位,MAC地址48位

协议地址长度:IP地址的长度,值为4,以字节为单位,IP地址32位

Op:操作类型,1为ARP请求、2为ARP应答、3为RARP请求、4为RARP应答

发送端以太网地址:发送者的MAC地址

发送端IP地址:发送者的IP,已得知

目的以太网地址:接收者的以太网的MAC地址,请求时此处是未知的,全写0

目的IP地址:接收者的IP地址

ARP的请求是二层广播,回应是单播

如果一个no ip routing 的设备没有路由能力也不配置网关,访问任何地址都会直接做ARP请求,有路由能力的设备,只会对直连网络做ARP请求,非直连网络不会解析,会走路由。

如果两个直连设备都是no ip routing 的设备,IP地址随便配,互相都可以ping通,比如:R1:1.2.3.4 R2:6.7.8.9 可以ping通,原因就是因为:no ip routing的设备会直接做ARP请求。

三、代理ARP

如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么链接这两个网络的路由器可以回答该请求,这个过程就叫做ARP代理。
对于没有配置缺少网关的计算机要和其它网络中的计算机实现通信,代理ARP的主机会将自己的MAC地址和目标的IP地址对源计算机进行应答。

代理ARP只响应那些在自己路由表里能找到的网段,解决不是在同一广播域间主机的通信。

当把内部服务器发布在公网上时,做一对一NAT映射(IP,非端口),映射的还不是外网口的接口的IP地址(NAT地址池)时,必须在外网接口上开启代理ARP。否则,外部客户无法解析到内网服务器的MAC地址,客户发送的请求就会超时。
尽量不要使用代理ARP,有时候会造成网络不通,例如:TCP/IP路由卷一里面Jeff写的实验

四、免费ARP

免费ARP指主机发送ARP查找自己的IP地址。告诉整个广播域,目前这个IP对应的MAC地址是什么。看看广播域内有没有别的主机使用自己的IP,如果有,则提示IP冲突。
自己ARP询问自己“我的IP对应的MAC地址是多少”,不需要任何人回应,不回应就OK,
看有没有重复的IP,有人回应说明冲突。
如果主机收到某个IP地址的ARP请求,而且它已经在接收者的高速缓存中,那么就要用ARP请求中的发送端硬件地址对高速缓存中相应的内容进行更新。

攻击:非法主机通过发送ARP回应报文,将网关的MAC地址发送给其它PC,刷新被攻击的主机的MAC,现实MAC地址欺骗。没有缓存也会学习。

非法主机通过发送免费ARP,将网关的MAC地址发送给其它PC,刷新被攻击的主机的MAC,实现MAC地址欺骗。但是免费ARP攻击,有种情况,被攻击的主机不会中招,那就是被攻击主机以前就没有网关的MAC地址缓存,所以不会刷新也不会学习。

使用冷备时,需要使用到免费ARP。当一台设备A挂掉,手动开启另一台设备B,两台设备IP地址相同,MAC地址不同。由于下联PC端的缓存还在,IP地址映射的还是设备A,此时无法通信,当设备B向PC发送免费ARP时,PC会刷新ARP缓存,指向B,此时就可以通信了。如果没有免费ARP来刷新设备B的ARP缓存,就需要等PC相应的ARP缓存条目过期,然后PC端会重新向网络中发送ARP请求报文获取设备B的MAC地址,这个时间会很长。

使用热备时,HSRP,两台路由器,一台ip地址是.1,MAC地址是A、一台IP地址是.2,MAC地址是B。工作时,首先它们先虚拟出一个ip地址是100和一个MAC地址是C。下面的PC会指.100为网关MAC映射为C,两个路由器谁是主用谁就会使用虚拟出来的IP地址和MAC地址,如果主用坏了备用会快速切换过来,也没有必要去发送免费ARP来刷新缓存了

猜你喜欢

转载自blog.csdn.net/weixin_44233369/article/details/87549781