网络基础——ARP和RARP

解析网络通信中的ARP与RARP:地址映射协议详解
本文详细介绍了ARP协议如何获取源目MAC和IP地址,包括其请求和应答报文的工作原理,以及免费ARP和ARP代理的概念。同时,也提到了RARP作为ARP的逆向,用于在只知道MAC地址不知IP地址的情况下寻找对应地址。

无论是同网段还是不同网段通信,想要实现该要求,都需要获得源目MAC地址、源目IP地址,而ARP和RARP正是用来解决这一问题的

ARP


背景

根据前言,我们可以发现要获得源目MAC地址、源目IP地址,下面我们来依次分析

源Mac地址:这里在解封装二层头部的时候,可以获得

目的Mac地址:发现没有办法获得

源IP地址:也是在解封装三层头部的时候,可以获得

目的IP地址:这里就是要通信的地址,难道会不知道吗

于是为了获得目的Mac地址,于是ARP协议诞生

相关名词 

ARP:中文名称是地址解析协议,通过Mac来解析获得IP地址

ARP请求报文:广播发送,里面封装自己的MAC地址、源目IP地址,用来获取目的MAC地址

ARP应答报文:单播发送,对应答报文进行回复,携带源目Mac地址,源目IP地址

ARP表项:是IP地址和MAC的一个映射表项,可以通过这个表项通信,老化时间为180S

工作原理 

  1. 首先是查看本地的设备上是否存在ARP映射表项,如果存在,那么就按照这个表项进行转发,如果不存在进行第二步
  2. 把自己的Mac地址以及源目IP地址封装在ARP请求报文中,广播发送到这个局域网中,如果是跨网段通信,需要使用ARP 代理,这里在类型会详细介绍
  3. 局域网中的设备发现是自己的Mac地址,那么就会把ARP请求报文接收,同时发送ARP应答报文,里面存在源目Mac地址、源目IP地址
  4. 收到应答报文后,会在设备形成ARP表项,在没老化之前,可以直接通告表项进行通信

类型 

  • 免费ARP:这是最为常见的ARP,也是必不可少的,它是起到一个地址冲突检测的作用、宣告一个新的MAC地址;例如DHCP中就是使用它。(特别注意的是在主机会存储,在路由器不会存储。原理我也不清楚,被它坑过)
  • ARP proxy:ARP代理,这就是在不同网段下使用的ARP,它的工作原理和同网段的大致相同,唯一不同的就是先把报文发送到网关设备上,后面由网关转发给下行设备
  • 这里我就想到了两种比较常用的,印象中应该还有,但是不影响

RARP 

RARP是ARP的反向,适用于特定的场景下,在现网中较少用到

背景 

会存在这样一种特殊的情况,那就是知道Mac地址,但是不知道IP地址,具体忘记是那种情况了,存在就对了,而这种技术就是为了解决这种情况

相关名词 

RARP请求报文:作用和ARP的一样

RARP应答报文:作用和ARP的一样

工作原理 

  1. 发送RARP请求报文,里面包含着自己的Mac地址,向网络中的服务器请求IP地址
  2. 服务器收到后,会查看RARP表项,如果存在对应的MAC地址,那么就分配IP地址
  3. 如果不存在,那就是MAC地址出现问题了,因为按理来说是一定会有一个回复的


 PS:ARP是最为常用的,而对于RARP来说,这个协议就基本没看过,要不是一个笔试,我都不知道这个东西,而且根据最新资料显示,在RARP上面,还有更新的技术

### ARP 协议与 RARP 协议的主要区别及应用场景 #### 1. **方向性差异** ARP(Address Resolution Protocol,地址解析协议)主要用于从已知的 IP 地址查找对应的 MAC 地址。这一过程通常发生在网络中的主机需要与其他设备通信时,例如当一台计算机要向另一台位于同一子网内的计算机发送数据包时,它会先利用 ARP 查找目标设备的物理地址[^2]。 相比之下,RARP(Reverse Address Resolution Protocol,反向地址解析协议)的作用正好相反——它是用来从已有的 MAC 地址找到相应的 IP 地址。这种需求较少见于常规客户端机器上,更多适用于那些无法预先设定静态 IP 地址的小型嵌入式系统或是无盘工作站等环境中[^3]。 #### 2. **应用广泛程度对比** 随着技术发展进步,在当今大多数情况下,每当涉及到由硬件层面上升至软件层面的身份映射问题时都会优先考虑采用 DHCP (Dynamic Host Configuration Protocol) 来动态分配IP地址而不是依赖传统的RARP方案解决此类难题因此后者实际上已经被前者完全替代不再单独作为独立解决方案推广普及开来使用频率极低几乎可以忽略不计了[^2]。 然而与此同时ARP却依旧保持高度活跃状态持续发挥重要作用特别是在局域内部署过程中不可或缺成为维持正常运转必不可少的一部分因为它能够有效减少管理员手动设置每台联网装置关联关系的工作负担从而提高整体效率降低成本开销等等诸多方面均体现出无可比拟的优势所在[^1]。 #### 3. **典型场景举例说明** - 对于ARP而言常见的例子包括但不限于如下几种情形: - 当用户尝试访问某个网站时浏览器发起DNS查询得到目的站点的具体位置即URL转换成IPv4数值形式之后紧接着就要依靠本地路由表决定下一步动作假设目的地处于同一个广播域之内那么必然涉及执行arp命令定位接收端确切坐标以便顺利完成整个传输流程。 - 至于RARP则相对比较简单明了一些特定类型的物联网节点可能不具备足够的存储容量保存完整的TCP/IP堆栈结构此时可以通过BOOTP服务器配合rarpd守护进程协助完成初始化阶段赋予临时可用的身份标识号直至后续条件成熟再切换回标准模式运行为止。 ```python # 示例 Python 脚本演示如何捕获并分析 ARP 数据包 from scapy.all import sniff, ARP def arp_monitor_callback(pkt): if isinstance(pkt, ARP): if pkt.op == 1: # who-has 请求 print(f"Request: {pkt.psrc} is asking about {pkt.pdst}") elif pkt.op == 2: # is-at 应答 print(f"Response: {pkt.hwsrc} has address {pkt.psrc}") sniff(prn=arp_monitor_callback, filter="arp", store=False) ``` 此脚本可用于实时监控网络上的 ARP 流量,帮助诊断潜在的安全威胁如中间人攻击等问题发生迹象及时采取应对措施加以防范化解风险隐患确保网络安全稳定可靠运作不受干扰破坏影响正常业务开展活动顺利推进下去[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值