千家信息网

ARP协议

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,一:引入当网络设备要发送数据给另一台设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须包含
千家信息网最后更新 2025年12月01日ARP协议

一:引入

当网络设备要发送数据给另一台设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP协议来实现的。
ARP协议是TCP/IP协议簇中的重要组成部分,ARP能够通过目的IP地址发现目标设备的MAC地址,从而实现数据链路层的可达性。

二:ARP数据包的格式


注意:ARP报文不能穿越路由器,不能被转发到其他广播域。
各字段的含义:
Hardware Type表示硬件地址类型,一般为以太网
Protocol Type表示三层协议地址类型,一般为IP
Hardware Length和Protocol Length为MAC地址和IP地址的长度,单位是字节
OPeration Code制定了ARP报文的类型,包括ARP request 和ARP reply
Source Hardware Address 指的是发送ARP报文的设备MAC地址
Source Protocol Address 指的是发送ARP报文的设备IP地址
Destination Hardware Address指的是接收者MAC地址,在ARPrequest报文中,该字段值为0
Destination Protocol Address指的是接受者的IP地址

三:ARP的工作过程

ARP之简单请求应答
当两台计算机在同一个局域网通信,我们以ping命令为例,该命令使用的ICMP协议


PC1依据OSI模型①依次从上至下对数据进行封装,包括对ICMP Date加IP包头的封装,但是到了封装MAC地址的时候,②PC1首先查询自己的ARP缓存表,发现没有IP2和他的MAC地址的映射,这个时候MAC数据帧封装失败。我们使用ping命令的时候,是指定PC2的IP2的,计算机是知道目的主机的IP地址,能够完成网络层的数据封装,因为设备通信还需要对方的MAC地址,但是PC1的缓存表里没有,所以在MAC封装的时候填入不了目的MAC地址。

那么PC1为了获取PC2的MAC地址,③PC1要发送询问信息,询问PC2的MAC地址,询问信息包括PC1的IP和MAC地址、PC2的IP地址,这里我们想到一个问题,即使是询问信息,也是需要进行MAC数据帧的封装,那这个询问信息的目的MAC地址填什么呢,规定当目的MAC地址为ff-ff-ff-ff-ff-ff时,就代表这是一个询问信息,也即使后面我要说的广播。

PC2收到这个询问信息后,将这里面的IP1和MAC1(PC1的IP和MAC)添加到本地的ARP缓存表中,然后④PC2发送应答信息,对数据进行IP和MAC的封装,发送给PC2,因为缓存表里已经有PC1的IP和MAC的映射了呢。这个应答信息包含PC2的IP2和MAC2。PC1收到这个应答信息,理所应当的就获取了PC2的MAC地址,并添加到自己的缓存表中。

经过这样交互式的一问一答,PC1和PC2都获得了对方的MAC地址,值得注意的是,目的主机先完成ARP缓存,然后才是源主机完成ARP缓存。之后PC1和PC2就可以真正交流了。

ARP之广播请求单播回应

上图面的图解是不完全的ARP协议,因为在局域网里边不会只有两台主机,这里就要考虑如何在局域网众多主机里获得目的主机的MAC。

和上面的一样,刚开始PC1并不知道PC2的MAC地址,同样需要发送ARP请求,但是这个局域网里主机很多,怎么唯独获取PC2的MAC呢,①我们想到和一群陌生人交流一样,可以挨着询问一遍,这就是我们要说的广播,首先PC1广播发送询问信息(信息和上一张图介绍的一样),在这个普通交换机上连接的设备都会受到这个PC1发送的询问信息。

接下来②需要做的是,所有在这个交换机上的设备需要判断此询问信息,如果各自的IP和要询问的IP不一致,则丢弃,如图PC3、Route均丢弃该询问信息,而对于PC2判断该询问信息发现满足一致的要求,则接受,同样的写入PC1的IP和MAC到自己的ARP映射表中。

最后,③PC2单播发送应答信息给PC1,告诉PC1自己的IP和MAC地址。

四:ARP代理


上图中,主机A需要与主机B通信时,目的IP地址与主机的IP地址位于不同网络,但由于主机A未设置网关,所以他将会以广播的形式发送ARP Request报文,请求B的MAC地址,但是广播报文无法被路由器转发,所以主机B无法收到主机A的请求报文。
在路由器上启用代理ARP功能,就可以解决这个问题。启用代理后,路由器接收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器会将自己的G0/0/0接口的MAC地址回应该ARP Requestrian。主机A收到ARP Reply后,将一路有油漆的G0/0/0接口MAC地址作为目的MAC地址进行数据转发。
小结:1如果两台主机在同一个网段,则直接发送ARP Request报文就好。
2 如果在不同网段,(1)主机A设置了网关,ARP协议可以正常使用。
(2)主机A没有设置网关,这种情况下,我们要开启ARP代理,路由器来重新封装,转发报文

五: 免费ARP


主机A将ARP Request 广播报文中的目的IP地址字段设置为自己的IP地址,该网络中的所有主机都会接受到此报文。当目的IP地址已经被某一个主机或网管室友是,该主机或网关就会回应ARP reply 报文,通过这种方式主机A就能探测到IP地址冲突了。

地址 主机 信息 目的 报文 数据 封装 设备 路由 广播 缓存 网络 路由器 局域 局域网 时候 网关 代理 命令 字段 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 大班网络安全教案含反思 软件开发需要多大的u盘 我的世界服务器配置文件怎么修改 网络安全队长发言 华为软件开发云平台首页 php数据库教学视频 sql数据库学习心得 ctf网络安全比赛怎么玩 科乐美服务器连接错误 网络安全视频模版 计算机网络技术专业要学PS 内黄县网络安全和信息化委员会 株洲服务器软件工程师寒假班 湖北正规软件开发过程检测中心 梅州市网络安全 服务器代理加盟 服务器带外管理什么意思 twitter代理服务器 无线接入网络技术分为哪四个 网络安全靠自己手抄报获奖作品 服务器开机电源灯频闪频率 金山区信息软件开发管理方法 网络安全消息层面的要求特征 post可以传多大数据库 初学者建议学习什么数据库 查巴拉服务器海拔多少米 金蝶k3查看sql数据库账套 网络安全关机检查什么意思 数据库二级映像的定义及功能 网络安全及ehs安全保障
0