协议学习-ARP Protocol

ARP协议介绍

ARP,Address Resolution Protocol,翻译为地址解析协议,用于不同网络层次之间的地址解析,如网络层IP到物理层MAC地址的解析。

ARP报文格式

在这里插入图片描述

硬件地址类型[ Linux-2.5.17/include/linux/if_arp.h ]:
在这里插入图片描述
操作码:REQUEST-1 REPLY-2
协议地址类型:EtherType定义的协议码。EtherType定义:https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml

ARP首部定义
在这里插入图片描述

ARP协议工作过程
发送ARP请求

当主机或者路由的ARP表项中没有某个协议地址的<协议地址,硬件地址>映射时,会向所在子网(路由器应该是相连的各个子网)广播ARP请求。

接收ARP请求

在这里插入图片描述

流程说明:

1、如果目的协议地址与本机地址不匹配,而且本机不存在发送方的<协议类型,协议地址>表项,本机是不会将发送方地址和接收方地址加入到进本地ARP表中的。

2、在返回REPLY响应报文时,目的物理地址是根据REQUEST报文中的发送方物理地址作为目的地址,而不是以太网帧中的源物理地址。

3、REQUEST包通过广播形式进行发送,REPLY包通过单播形式进行发送。

4、只有目的协议地址与本机协议地址匹配,才会进行响应。

ARP表项老化
为什么需要表项老化的特性?

答:虽然硬件地址不会发生改变,但是协议地址是可以改变。当协议地址被重新分配到另一个不同硬件地址的设备上时,之前缓存的错误表项可能会导致错误的路由信息从而可能导致硬件或者软件发生错误。

ARP表项更新以及老化的一些建议
  • 每当收到来自某个主机的包时,都会刷新对应主机协议地址的ARP表项老化时间(通过Hash或者索引来加速访问);如果在一段时间内没有收到来自某个主机的包,将会移除无用的ARP表项。

  • 尝试初始化与某个主机的连接,如果建立连接失败,则表明主机已经下线或者原来的表项不合法,该主机对应的表项可以移除。

  • 创建一个后台线程,通过对ARP表中的每个协议地址发送一个REQUEST报文,如果在短时间内没有收到REPLY报文,则视为可删除ARP表项。

  • 当协议地址与硬件地址的绑定关系发生改变时,新的协议地址绑定主机需要广播ARP REPLY包,从而更新子网中所有的ARP缓存。

一些问题
为什么不通过周期性广播ARP报文的方式进行ARP表项的维护?

答:在网络中,只有部分主机之间会进行通信,因此不需要每台主机都知道彼此的硬件地址。

在局域网怎么判断IP冲突?

答:通过广播携带本机IP的ARP请求,如果收到响应,说明该IP在局域网中存在冲突

拓展:这种主机发送ARP查找自己的IP地址,也被称为Gratuitous ARP Request(免费ARP请求)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子的木木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值