Pinvon's Blog

所见, 所闻, 所思, 所想

地址解析协议 ARP

概述

ARP协议为IP地址到对应的硬件地址之间提供动态映射.

过程

假设网络中的计算机A要和计算机B交换数据, 首先A要得到B的IP与MAC之间的映射关系.

  1. A检查自己的高速缓存中的ARP表, 判断ARP表中是否已有B的IP和MAC之间的映射关系. 如果有, 则完成ARP地址解析; 如果没有, 则到第2步.
  2. A广播请求信息包, 数据包中含有A的IP和MAC的映射关系, 请求解析B的IP和MAC的映射关系.
  3. 同一个子网内的所有计算机都会接收到广播, 这些计算机将A的IP和MAC的映射关系存入各自的ARP表中.
  4. B发送ARP响应包, 通知自己的IP和MAC的映射关系.
  5. A收到B的响应包, 将B的IP和MAC的映射关系存入自己的ARP表中. 至此, 完成B的ARP地址解析.

注意, ARP不能通过IP路由器发送广播, 所以不能用来确定远程网络设备的硬件地址. 对于目标主机位于远程网络的情况, IP利用ARP确定默认网关(路由器)的硬件地址, 并将数据包发送到默认网关, 由路由器按它自己的方式转发数据包.

ARP请求报文是广播的, 局域网内所有主机都能收到, ARP应答报文是单播的, 只有发送ARP请求的主机才能收到.

ARP报文格式

1.png

ARP报文的长度不是固定的. 首先, 除了以太网之外, 还有其他的网络, 如令牌环等. ARP可以应用在任何网络上. 不同网络中, 物理地址长度是不一样的, 在以太网(MAC)中是6个字节.

超时计时器

当网络中某个IP地址对应的物理地址发生变化时, ARP高速缓存表中相应的条目就要更改, 如果这些条目到了超时时间后, 还没变化过, 就会被删除, 如果中间有发生变化, 则重新计时.

超时时间设置太短时, ARP高速缓存表中的条目频繁被删, 导致主机经常广播ARP报文, 通信太频繁. 如果超时时间设置太长, 则可能某主机的IP与MAC映射关系变化了, ARP高速缓存中的条目还未修改, 通信会出错.

漏洞

ARP协议建立在对局域网中主机全部信任的基础上. 即, ARP协议认为, 局域网中每个主机发送的ARP数据报文都是正确的.

再倒回去看一下工作过程: 源主机A通过在局域网中广播的方式, 得到目的主机B的IP和MAC地址映射关系, 并存入ARP缓存表. 缓存表中的数据在存活期内可更新. 如果主机C利用主机B的IP地址, 不停地发送应答报文, 那么源主机A就会根据收到的报文, 将缓存表中相应的数据修改成B的IP地址与C的MAC地址的映射, 这样主机A再给主机B发送消息, 就都会被发送到主机C了.

Comments

使用 Disqus 评论
comments powered by Disqus