常用ARP的作用

1.ARP的分类
大体可以分为四类:AARP(正向ARP),RARP(反向ARP),FARP(无故ARP)以及代理ARP。
1.1 AARP(正向ARP)
AARP是已知对端的IP,获取对端的MAC;在同一网段,PC1没有PC2的MAC,但已知对端的IP地址,将封装目标IP为PC2,目标MAC为全F(不存在该用户)的ARP请求包;该数据包为广播流量;交换机在收到一个数据帧时,永远先查看数据帧的源MAC,之后将该MAC的进入接口和地址记录于本地的MAC地址表中;之后在查看目标MAC,同时在本地MAC表中查询其对应的接口,若存在记录,单播流量到该流量;若没有记录将洪泛该数据,洪泛—流量除进入接口外的其他所有接口复制一份;广播行为就是强制交换机对流量进行洪泛。
1.2 RARP 反向ARP
RARP就是一直对端的MAC,获取对端的IP。多用于无盘工作站。
1.3 FARP 无故ARP
主要作用用于地址冲突监测。
主机有时会使用自己的IP地址作为目标地址发送ARP请求。这种ARP请求称为无故ARP,主要有两个用途:
  (1)检查重复地址(如果收到ARP响应表明存在重复地址)。
  (2)用于通告一个新的数据链路标识。当一个设备收到一个arp请求时,发现arp缓冲区中已有发送者的IP地址,则更新此IP地址的MAC地址条目。
  因为它不是经过其他主机的ARP请求广播后发出的ARP广播,所以叫无故ARP,也有人叫免费ARP。
1.4 代理ARP
为什么需要代理ARP?
ARP请求是个广播包,它询问的对象如果在一个局域网内,则就会收到应答。但是如果询问的对象不在同一个局域网内该如何处理?路由器就提供了代理ARP为这个问题提供了解决方案。
在这里插入图片描述
两台主机A和B处于不同的广播域,当A与B通信前,主机A发送ARP请求主机B的AMC地址时,因为路由器不转发广播包的原因,ARP请求只能到达路由器。此时如果路由器启动了代理ARP的功能,并且路由器知道主机B属于它连接的网络,那么路由器就用自己连接主机A接口的MAC代替主机B的MAC地址来对主机A进行ARP应答。主机A接收到ARP应答,但并不知道代理ARP的存在。当流量到达路由器后,解封装看三层目标IP则会找到主机B,与主机B正常通信。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ARP(Address Resolution Protocol,地址解析协议)是在TCP/IP网络中常用的一种协议,其功能是通过设备的MAC地址来解析IP地址。Linux上使用C语言来实现ARP功能可以通过socket编程来完成。 C语言中可以使用socket相关的函数来创建一个网络套接字,用于发送和接收ARP请求和响应。首先需要创建一个ARP请求的数据包,包括目的IP地址、源IP地址、以太网帧类型等信息,然后使用socket的sendto函数将数据包发送出去。接收ARP响应则需要创建一个监听的socket,使用recvfrom函数接收到ARP响应数据包后,可以解析数据包的内容,提取出目的IP地址和对应的MAC地址。 在Linux上,可以使用套接字的AF_PACKET类型来进行原始套接字编程,这样可以直接访问网络数据链路层,可以发送和接收以太网帧。通过设置套接字的协议为ETH_P_ARP,可以指定使用ARP协议。 具体的实现需要注意以下几个步骤: 1. 创建一个原始套接字,指定协议类型为ETH_P_ARP。 2. 构建一个ARP请求数据包,设置目的IP地址、源IP地址、以太网帧类型等字段。 3. 使用sendto函数发送ARP请求数据包。 4. 创建一个用于接收ARP响应的套接字。 5. 使用recvfrom函数接收到ARP响应数据包。 6. 解析数据包,提取目的IP地址和对应的MAC地址。 在Linux上,可以使用包含在net/if_arp.h头文件中的结构体来定义ARP请求和响应的数据包格式,将这些字段填充后,就可以使用socket的sendto和recvfrom函数进行发送和接收。 需要注意的是,使用C语言实现ARP功能需要一定的网络编程基础和对TCP/IP协议栈的理解,同时需要理解以太网帧的格式和地址解析协议的工作原理。对于初学者来说,可能需要借助一些网络编程的教程和参考资料来进行学习和实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫酷的腿毛!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值