ARP帧、ARP过程、免费ARP、ACD的原理

ARP协议(地址解析协议)用于局域网中网络设备按IP地址查询对方的MAC地址,提供一种从网络地址(仅ipv4,ipv6用ND协议替代)到硬件地址(各种链路层协议使用的地址)的映射。

1、ARP过程

简单来说,对于即插即用的网络而言,网络中各个设备的IP地址甚至MAC地址都不是固定的,如果需要相互通信,这一时刻在网络的各个层次都要找到对应的正确的衔接口。主机、交换机等设备在转发数据报文时需要知道下一个处理报文的设备的物理地址,无论该报文目的地址是否为本网段(跨网段则发到网关设备,网关也有物理地址),这时就能用ARP协议发起通告。

和学校里面老师点名是一个道理:老师从广播通知所有学生,“请叫李小明的同学告诉我你的家庭地址,我是王老师,我在办公室1-1”,这里面王老师这个称呼就是Sender IP,李小明这个称呼就是Target IP,办公室1-1是Sender MAC,该通告报文中Target MAC字段是空的,全0,因为此时老师还不知道学生的住址;学生收到消息发现是叫的自己后,立刻前往办公室1-1报上自己的住址,即上个报文的想要的Target MAC(实际的ARP当然只是目标机回个报文而不是“前往”)。

再用计算机网络的专业术语复述上面的过程:

  1. 源主机上的应用程序需要建立一个与1.1.1.1地址设备的连接
  2. 假设主机发现目的地址与自己的IP地址在同一网段同一局域网,则需要得到对方的物理地址,假设使用以太网协议则需要知道MAC地址
  3. 源主机发起ARP过程,广播一个ARP Request报文,主要内容包含自己的MAC地址、自己的IP地址、希望响应的设备的IP地址
  4. 因为在同一广播域,目的主机收到ARP Request后解析,发现希望应答的IP地址是自己的IP地址,则回复一个ARP Reply,相比ARP Request报文多了Target MAC字段
  5. 源主机收到ARP Reply,记录MAC-IP表项(目的主机收到Request时可能也建立了表项,方便后面通信使用)
  6. 源主机得到设备1.1.1.1的物理地址,随后建立连接开始通信

设备上一般会有专门维护ARP表项的表,比如在Windows系统中可以在控制台输入arp –a查看ARP表项。ARP表项通常是有老化时间的,当然有的系统也支持配置ARP表项永远存在,一段时间内如果设备没有与某些地址的设备通信则ARP表项会被删除,下一次需要通信的时候会重新开始ARP过程。ARP表项老化操作也是即插即用网络的一种体现。

2、ARP帧

ARP帧、ARP过程、免费ARP、ACD的原理_第1张图片

帧类型及之前的部分是以太网帧的首部,是固定的部分,ARP协议的主要部分是帧类型以后:

·硬件类型:硬件地址的类型

·协议类型:映射的地址的类型,比如ipv4地址为0x0800

·硬件地址长度、协议地址长度:即物理地址长度和映射的地址的长度,单位1byte

·op:操作类型,有4种,ARP请求(1)、ARP应答(2)、RARP请求(3)、RARP应答(4)

·发送者硬件地址:源主机的物理地址

·发送者协议地址:源主机的IP地址

·目标硬件地址:目的主机的物理地址

·目标协议地址:目的主机的IP地址

3、免费ARP

这是一种特殊的ARP报文,但并不是在协议格式上特殊,而是免费ARP报文的发送者IP地址和目标IP地址是相同的。免费ARP主要希望达到两个目标:

·允许一台主机确定当前广播域中是否有与自己IP地址重复的设备,发送免费ARP的主机不希望收到免费ARP的回应ARP报文,如果收到了说明当前自己的IP地址会在局域网中产生地址冲突,会提示系统用户

·如果一台主机更换了MAC地址,IP地址不变,发送免费ARP可以让局域网内的其他设备更新自己的ARP表项

4、冲突地址检测ACD

虽然有免费ARP,但并没有解决多个主机可以使用同一IP地址的问题,在RFC5227中定义了ACD的概念,其中定义了两种ARP报文:ARP Probe和ARP Announcement。ARP Probe用于探测当前广播域是否有其他主机使用某个IP地址,与免费ARP的区别在于,ARP Probe报文的发送者IP地址字段是全0,这是为了避免ARP污染(因为ARP请求报文会在广播域内广播到每个主机上,所以主机收到带发送者IP地址的ARP报文后都会创建缓存表项,太多ARP报文会造成域内主机上的缓存浪费)。ARP Announcement报文用于通告域内主机自己的IP地址和MAC地址,特征是其目标硬件地址字段全0,该报文不希望某个特定的主机回应,只需要域内主机创建起ARP表项即可。所以ACD定义的两种报文其实也是免费ARP的两个功能的更完善的实现。

你可能感兴趣的:(WLAN,ARP,计算机网络)