ARP协议

ARP协议

ARP协议为地址解析协议,当局域网中以太主机需要将以太网桢发送到另一台主机时,其需要知道另一台主机接口的MAC地址,而上层只提供了IP 地址,这时就需要ARP协议进行IP地址和MAC地址的映射,并且ARP协议提供32位IP地址和数据链路层使用的任何地址的映射,这里只说IP和MAC地址的映射。

ARP协议格式

在这里插入图片描述

下面数字单位均为字节,此ARP协议总共28个字节,为了满足以太网协议的最小长度会将长度填充到46个字节
硬件类型:硬件类型指的是后面发送端和目的端硬件地址类型,这里选择的是以太网地址其值为1
协议类型 :指后面发送端协议地址和目的端协议地址类型,0800指IP地址,和以太网协议地址值相同
硬件地址长度:指前面选择的硬件地址的长度,这里选择以太网地址其值为6字节
协议地址长度: 指前面选择的协议地址长度,IP地址长度为4个字节
op:操作字段其指出四个操作类型 ARP请求(值为1) ARP回复(值为2)RARP请求(值为3)RARP 回复(值为4)RARP为逆地址解析协议和ARP地址解析相反,它是通过硬件地址映射协议地址,其主要工作的无盘机上
做后四个字段会根据前面选择的类型和长度进行填充,此时目的以太网地址是未知的
当主机收到ARP请求后如果目的端IP地址和自己IP地址相同时他会将目的端以太网地址进行填充,随后将目的端和发送端地址分别进行交换,然后将op改为2 发送arp回复给对方。

ARP协议请求和应答

假设需要发送一个IP数据报,
首先需要判断对方主机是否和自己在同一个局域网中,如果在同一局域网中,即可直接发送,如果两个主机不在同一个网络中需要先进行IP选路确定下一跳路由器地址(其具体过程在网络层后面在IP协议时讲),两种结果都是需要将数据发送到局域网中,此时数据报在链路层进行封装时需要知道其48位以太网地址(假设链入层为以太网)此时就需要ARP协议提供32位IP地址到48位硬件MAC地址解析,其首先会在ARP高速缓存中查看(下面说明) 如果存在映射直接返回MAC地址,如果不存在,发送ARP请求,在发送时其以太网桢的目的地址为全1,即为广播地址,此时所有的在局域网中的主机和路由器均收到ARP请求,此时会根据目的端IP地址进行判断,如果和自己网卡IP相同,则回复ARP应答告诉对方IP地址,另外ARP应答发送到对方主机时以单播的形式发送,当主机收到ARP应答时主机会将此IP地址和MAC地址映射加入到ARP高速缓存中。然后发送引起此次ARP请求的IP数据报
通过tcpdump抓取得ARP请求和ARP应答
tcpdump -b arp 另外-i可以指定需要抓取的网卡
在这里插入图片描述
在tcpdump添加-n选项将通过点分十进制的方法打印主机IP
在这里插入图片描述

ARP高速缓存

在ARP高速缓存中放的是最近的IP地址和硬件地址的映射记录,每一项有生存时间TTL,即从加入arp高速缓存开始,当生存时间结束就会被删除,当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询,在Linux下可以通过arp -a查看arp高速缓存中的内容,也可以通过arp -s 添加映射项目,如果没有在命令末尾添加temp关键字,其添加的为永久性的静态项目,无生存时间。
在这里插入图片描述
ARP高速缓存可以提高通信效率,不过ARP高速缓存存在安全隐患,即容易受到ARP攻击,

免费ARP

免费ARP指ARP请求的发送端和目的端IP地址均为自己的IP地址,其作用主要有两点

  1. 可以通过发送免费ARP直到局域网中是否和自己设置了相同的IP地址即,当发送免费ARP请求后如果收到了回复就说明在本地还有和自己具有相同IP的主机,此时会在终端日志产生错误,警告管理员
  2. 当一台主机更换网卡之后,可以发送免费ARP告诉局域网中所有的主机自己新的MAC地址,因为是通过广播的方式,此时局域网中的主机收到这个ARP请求后会将此IP对应的MAC地址和自己ARP高速缓存中的MAC地址进行比较,如果不相同就会进行修改。

ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,进行发送伪造的免费ARP,或者发送伪造的ARP应答,主机接受到免费ARP或者ARP应答后就会进行修改自己的高速缓存表,导致通信被阻塞等问题

代理ARP

代理ARP主要针对没有配置缺省网关的路由器或者主机上,当主机需要访问其他网络时,网关收到ARP请求后,会将自己的MAC 地址发送给请求的主机,就是将一个主机作为对另一个主机ARP进行应答。

参考:《TCP/IP详解卷1:协议》 LawrenceBerkeley

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值