【TCP/IP】ARP

ARP(地址解析协议)用于将IP地址转换为物理地址,如MAC或DLCI,以便在多路访问网络中进行数据交换。在以太网、多点帧中继和DMVPN中,ARP起到关键作用。ARP请求是广播,应答是单播。代理ARP允许设备代为响应不在同一广播域的请求,而免费ARP则用于检测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帧的格式:

以太网目的地址:目的MAC地址

以太网源地址:源MAC地址

帧类型:值为0x0806  ARP

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

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

硬件地址长度:MAC地址的长度,值为6

协议地址长度:IP地址的长度,值为4

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的主机会将自己的AMC地址和目标的IP地址对源计算机进行应答。

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

    当把内部服务器发布在公网上时,做一对一NAT映射(IP,非端口),映射的还不是外网口的接口的IP地址(NAT地址池)时,必须在外网接口上开启代理ARP。否则,外部客户无法解析到内网服务器的MAC地址,客户发送的请求就会超时。

尽量不要使用代理ARP,有时候会造成网络不通,例如:TCP/IP路由卷一里面Jeff写的实验

免费ARP:指主机发送ARP查找自己的IP地址。告诉整个广播域,目前这个IP对应的MAC地址是什么。看看广播域内有没有别的主机使用自己的IP,如果有,则提示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来刷新缓存了


### ARP协议的作用及其工作机制 #### ARP协议的作用 ARP(Address Resolution Protocol)协议是TCP/IP协议栈中网络层的重要组成部分,主要用于将IP地址解析为对应的物理地址(如以太网中的MAC地址)。由于IP协议在传输数据时,最终需要依赖链路层的物理地址进行通信,因此ARP协议的作用在于建立IP地址与物理地址之间的映射关系[^1]。 在局域网中,当一个设备需要向另一个设备发送数据时,它必须知道目标设备的物理地址。ARP协议通过广播请求和单播响应的方式,获取目标IP地址对应的物理地址,从而确保数据能够在本地网络中正确传输。 #### ARP协议的工作机制 当主机A需要向同一局域网中的主机B发送数据时,其工作流程如下: 1. 主机A首先检查本地ARP缓存表,查看是否已经缓存了主机B的IP地址与MAC地址的映射关系。如果存在,则直接使用该MAC地址进行通信。 2. 如果ARP缓存中没有主机B的条目,主机A会向本地网络广播一个ARP请求报文,询问“谁拥有IP地址X.X.X.X?”。该请求包含主机A的IP地址和MAC地址。 3. 局域网中所有主机都会接收到该ARP请求,但只有IP地址匹配的主机B会响应。主机B向主机A发送一个ARP响应报文,其中包含其MAC地址。 4. 主机A收到响应后,将主机B的IP地址和MAC地址存入本地ARP缓存,以便后续通信时直接使用,减少广播流量。 5. 最终,主机A使用主机B的MAC地址封装以太网帧,并将数据发送出去。 ARP协议的这种工作机制确保了在本地网络中可以动态地发现设备的物理地址,避免了手动配置的复杂性。 #### ARP缓存管理 ARP缓存表存储了最近解析的IP地址与MAC地址的映射信息。为了提高效率,缓存表中的条目通常具有生存时间(TTL),过期后会被删除,以便重新获取最新的地址信息。缓存的典型生存时间通常为几分钟,具体取决于操作系统和网络配置。 #### ARP协议的安全性问题 虽然ARP协议在局域网通信中至关重要,但它也存在安全风险。例如,ARP欺骗(ARP Spoofing)攻击可以通过伪造ARP响应,将攻击者的MAC地址与合法主机的IP地址绑定,从而实现中间人攻击。为了解决这一问题,许多网络设备和操作系统支持ARP防护机制,如静态ARP绑定、ARP监控和动态检测等。 ### 示例:ARP缓存查看命令(Windows/Linux) ```bash # Windows系统查看ARP缓存 arp -a # Linux系统查看ARP缓存 arp -n ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值