ARP
背景:
源端设备给目的端设备发送数据时,必须知道目的端设备的IP地址(由网络层来提供),同时也需要目的地址的MAC地址,这样IP数据报文封装成帧才能通过数据链路进行发送。ARP协议就是通过目的地址来获取目的MAC地址用的。
目标:
-
掌握ARP的工作原理
-
理解ARP缓存表的作用
ARP
-
TCP/IP协议簇之一
-
通过目标IP地址获取目标MAC地址,实现链路可达性。
-
数据链路层
-
数据包封装:
-
-
ARP数据包格式
-
-
-
局限性:不能穿越路由器,不能被转发到其他广播域。
-
ARP报文
-
Hardware Type 硬件地址类型,一般都是以太网
-
Protocol Type 表示三层协议地址类型,一般为IP
-
Operation Code 指定了ARP报文的类型
-
ARP Request
-
ARP Reply
-
-
Source Hardware Address 指的是发送ARP报文的设备MAC地址
-
Source Protocol Address 指的是发送ARP报文的设备IP地址
-
Destination Hardware Address 接受者MAC地址
-
该字段在ARP Request报文中
-
-
Destination Protocol Address 接受者的IP地址
-
-
ARP工作过程
-
-
只知道IP地址不行,还需要知道MAC地址
-
原理:通过ARP协议,网络设备可以建立IP地址和MAC地址之间的映射。网络设备通过网络层获取到目的IP地址后,判断MAC地址是否已知
-
-
ARP缓存
-
-
ARP缓存表
-
设备:网络设备
-
作用:存放IP和MAC地址的关联信息
-
应用:
-
同一网络
-
设备在发送数据前,会查找ARP缓存表
-
缓存表中不存在,则会发送ARP Requset报文获取它。(有时效)
-
在有效期内,设备可以直接从表中查到目的MAC地址进行数据封装。时效后,自动删除
-
-
不同网络
-
源设备会在ARP缓存表中查找网关的MAC地址,然后将数据发送给网关,网关再把数据发送给目地设备
-
-
-
-
-
ARP请求
-
-
实例:主机A中无主机C的MAC地址,如何发送:
-
发送ARP Request来获取目的MAC地址
-
ARP Requset报文封装在以太帧里,由于目的MAC地址是空,则自动为FF-FF-FF-FF-FF-FF(广播地址)
-
该网络中所有设备包括网关都会接受到此报文。
-
网关阻止报文发送到其他网络。
-
-
-
-
-
ARP响应(同一网段内)
-
-
主机收到ARP Requset报文
-
是本机的IP地址
-
主机会将ARP报文中的源MAC地址和源IP地址记录在自己ARP缓存表中。
-
-
不是本机的IP地址
-
不会影响该报文
-
-
-
通过ARP Reply报文进行响应
-
-
主机C向A回应ARP Reply报文。
-
Operation Code设为Reply
-
单播传送
-
-
主机A收到后,将其IP和MAC地址存入自己的ARP缓存表内
-
-
-
ARP代理(不同网段)
-
-
主机A的APR Request报文通过广播的方式发送到路由器,但路由器并不会转发,所以ARP代理就是收到这个请求,将报文转发到主机B。
-
流程
-
启动ARP代理
-
路由器收到请求后,查找路由表
-
如果存在主机B的路由表项,路由器将会使用自己的G0/0/0接口的MAC地址来回应此ARP Request。
-
如果不存在主机B的路由表?那就不会处理此报文
-
-
主机A收到ARP Reply后,将路由器的G0/0/0/0接口MAC地址作为目的MAC地址进行数据转发。
-
-
-
免费ARP(探测IP地址是否冲突)
-
-
-
主机被分配的IP或者变更后,必须检测此IP是否在此网络里是唯一的,避免地址冲突。主机发送ARP Requset报文进行地址冲突检测
-
主机将自己的IP地址封装为目的地址,此网络中的所有主机包括网关都会收到此报文,当已经被使用,就会收到Reply报文,以此来检测IP地址冲突。
-
-
-
提问:
-
网络设备在什么情况下会发送ARP Requset
ARP缓存表中没有目标MAC地址时 -
网络设备什么时候会产生免费ARP?
IP地址被分配时或者被更改时。