- 引言:
- IP协议设计目标是为跨越不同类型物理网络的分组交换提供互操作.由硬件交换的帧需要使用正确的硬件地址定位到正确的接口.否则无法传输数据.
- ARp地址接续是发现两个地址之间的映射关系的过程,对于使用IPv4的TCP/IP协议族,这是由运行的ARP来实现的.ARP是一个通用的协议,从这个意义上来看,它被设计为支持多种地址之间的映射.
-
- ARP提供从网络层地址到相关硬件地址的动态映射,我们使用动态这个属于是因为它会自动执行和随时间编发,而不需要系统管理员配置,也就是说,如果一台主机改变它的网卡,从而改变了它的硬件地址,ARP可以在一定延时之后继续正常运作,ARP操作通常与用户或系统管理员无关
- ARP帧格式
-
- 长度或类型
- ARP请求或应答的字段必须为0x0806
- 发送方的硬件地址,发送方的协议地址,目的硬件地址,目的协议地址
- 如字面意思,指相应方的IP地址和MAC地址
- 硬件类型
- 指出硬件地址类型,对于以太网,该值为1
- 协议类型
- 指映射的协议地址类型,对于IPv4地址,该值为0x0800
- 硬件大小和协议大小
- 分别指代硬件地址和协议地址的字节数,对于以太网中的IPv4地址的ARP请求或应答,两个值的大小分别为6和4
- Op
- 指该帧的操作类型
- 1:ARP请求
- 2:ARP应答
- 3:RARP请求
- 4:RARP应答
- 指该帧的操作类型
- 简单过程
- 当发出ARP请求时,将Op置为1表示该帧为一个ARP请求帧,并将目的硬件地址字段置为0(因为该字段就是我们发出ARP帧的最终目的,也就是查询IP对应的硬件地址,所以在发出时是未知的,所以置为0),其他字段进行填充后发出,当IP目标方接收到该帧时,将目的硬件地址填充,并交换发送地址和目的地址的数值,Op值填为2,生成应答.
- 长度或类型
- ARP缓存超时
- 一个完整的ARP缓存表内的每个条目都会有一个20分钟的计时,当超过这20分钟的计时时,该条目会被删除,如果需要重新链接,会重新发起ARP请求
- 20分钟为可设定时间,可以设置为永不删除,
- 每次使用条目后,该条目的计数时间会被重置,重置为设置时间,缺省值为20分钟
- 当链接到一个不完整条目,如发出ARP请求后没有接收到ARP应答的条目,该条目仅保存3分钟的时间.
- 代理ARP
- 代理ARP主要的目的是隐藏两个物理网络内的相互关系,因为路由器不会转发广播,所以当ARP请求发出时,当开启代理ARP的路由器发现请求的目的协议地址属于自己另一个子网时,会代替子网的主机进行应答,隐藏了两个主机
- 负面影响
- 增加了某一网段上ARP流量
- 主机需要更大的ARP table来处理IP地址到MAC地址的映射
- 安全问题,比如ARP欺骗(spoofing)
- 不会为不使用ARP来解析地址的网络工作
- 不能够概括和推广网络拓扑
- 免费ARP
- 免费ARP会将目的地址填充为自己当前的协议地址进行广播,目的是查询当前广播域是否存在与自己相同协议地址的主机,免费ARP的广播帧往往不会收到应答消息,收到后即表示广播域有一个系统配制出错,存在拥有相同IP的系统
- 当发送方的硬件地址被替换时,可以放松免费ARP,对当前广播域内的ARP表进行更新,当收到免费ARP时,会更新IP所关联的硬件地址
- 地址冲突检测(ACD)
- 分为ARP探测分组和ARP通告分组
- ARP探测分组是一个ARP请求分组,发送协议地址为0,目的协议地址填写为检测地址(候选地址,希望查询是否冲突的目标地址)用于查看一个候选IPv4是否被其他系统占用,
- ARP通告分组是用来通告当前广播域,发送方使用候选地址的意图.
- 分为ARP探测分组和ARP通告分组
- 由于ARP查询是在一个广播域内以以太网地址ff:ff:ff:ff:ff:ff进行广播,所以首先要知道所谓的广播域的边界是什么?
- 当一个主机发出广播消息时,能接受到该消息的所有集合称为一个广播域,通常以一个路由器(router)为分割的局域网内主机的集合就称为广播域
- 问题一:
- 当查询地址为外网IP时候,不在本地广播域,ARP该如何查询目标地址的物理地址?
- ARP仅为本地广播域的地址解析协议,由于路由器(router)的隔离,无法查询外部的物理地址.需要通过其他的协议或者方法.
- 当查询地址为外网IP时候,不在本地广播域,ARP该如何查询目标地址的物理地址?
- 问题二:
- 免费ARP有什么作用?
-
- 免费ARP会将目的地址填充为自己当前的协议地址进行广播,目的是查询当前广播域是否存在与自己相同协议地址的主机,免费ARP的广播帧往往不会收到应答消息,收到后即表示广播域有一个系统配制出错,存在拥有相同IP的系统
- 当发送方的硬件地址被替换时,可以放松免费ARP,对当前广播域内的ARP表进行更新,当收到免费ARP时,会更新IP所关联的硬件地址
- 问题三:
- ARP相关的攻击?
- ARP代理相关
- 由于ARP代理是隐藏两个网络之间的互相关系,所以,利用这点可以假扮主机,对不存在的ARP请求进行应答,将流量导出到错误的目的地
- 当一台主机被连接到多个网络,ARP条目被ARP表"遗漏"时,也会将流量引导到错误的网端上,linux可以修改/proc/sys/net/ipv4/conf/*/arp_filter 为1的值,可以解决该问题
- ARP缓存中对重要主机使用静态条目,目的是提高运行效率,可是,静态条目可以通过ARP应答进行更新,可以利用这点,将静态条目的物理地址更改成错误的地址.
- ARP代理相关
- ARP相关的攻击?