ARP 协议超详细讲解
前言网络设备有数据要发送给另一台网络设备时必须要知道对方的网络层地址即IP地址。IP地址由网络层来提供但是仅有IP地址是不够的IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP 协议Address Resolution Protocol 地址解析协议协议来实现的。ARP 协议Address Resolution Protocol 地址解析协议它是网络层和数据链路层之间的 “桥梁”也是我们理解局域网通信的关键。一、为什么需要 ARP 协议网络设备之间传输数据要经过分层封装网络层会给数据加上 IP 地址源 IP、目的 IP但数据最终要通过数据链路层的帧在物理网络中传输而数据帧必须包含目的 MAC 地址才能准确送达。简单说IP 地址相当于设备的 “网络身份证”告诉数据 “要去哪台设备”MAC 地址相当于设备的 “物理身份证”告诉数据 “在局域网里怎么找到这台设备”。ARP 协议的核心作用根据目的 IP 地址获取对应的目的 MAC 地址让数据能完成帧的封装顺利在数据链路层传输。二、ARP 协议的核心工作过程为了方便理解我们用一个经典场景举例主机 AIP10.0.0.1/24MAC00-01-02-03-04-AA主机 CIP10.0.0.3/24MAC00-01-02-03-04-CC主机 A 要给主机 C 发送数据此时知道目的 IP但不知道目的 MACARP 协议开始工作。整个过程分为ARP 请求和ARP 响应两步核心记住请求广播响应单播。1.第一步ARP 请求广播主机 A 在自己的ARP 缓存表中查询 10.0.0.3 对应的 MAC发现没有记录于是发送ARP 请求报文数据链路层封装源 MAC 主机 A 的 MAC目的 MACFF-FF-FF-FF-FF-FF广播地址这意味着局域网内所有设备都会收到这个报文ARP 报文内容源 IP10.0.0.1源 MAC00-01-02-03-04-AA目的 IP10.0.0.3目的 MAC00-00-00-00-00-00未知操作类型 Request请求。局域网内的主机 B、C 都会收到这个广播但只有主机 C 发现目的 IP 和自己的 IP 一致会处理这个请求其他设备直接丢弃。2.第二步ARP 响应单播主机 C 处理 ARP 请求后会做两件事再发送ARP 响应报文主机 C 先把主机 A 的 IP 和 MAC 对应关系写入自己的 ARP 缓存表动态方便后续给主机 A 发数据发送 ARP 响应报文数据链路层封装目的 MAC 主机 A 的 MAC单播ARP 报文内容为源 IP10.0.0.3源 MAC00-01-02-03-04-CC目的 IP10.0.0.1目的 MAC 主机 A 的 MAC操作类型 Reply响应。3.最终结果主机 A 收到 ARP 响应后将主机 C 的 IP 和 MAC 对应关系写入自己的 ARP 缓存表此时主机 A 已经获取到目的 MAC就能完成数据帧的封装给主机 C 发送数据了。三、ARP 缓存表是什么有什么用1. 核心定义ARP 缓存表是设备本地的一张临时映射表记录了局域网内其他设备的IP 地址 - MAC 地址对应关系分为动态条目和静态条目本文重点讲动态。2. 关键作用避免每次通信都发送 ARP 请求提高通信效率。比如主机 A 第一次和主机 C 通信后缓存表中有了对应记录后续短时间内再次通信直接查缓存表即可无需再广播请求。3. 查看方式Windows/Linux 通用在命令行中输入以下命令就能查看本地的 ARP 缓存表查询结果会显示Internet AddressIP 地址、Physical AddressMAC 地址、Type类型动态 Dynamic / 静态 Static。4. 重要特性动态 ARP 条目有过期时间一般几分钟过期后会被自动删除目的是为了适应局域网内设备的 IP/MAC 变更比如设备重启、更换网卡保证缓存表的准确性。四、ARP 协议的两个重要扩展ARP 代理 免费 ARP除了基础的请求和响应ARP 还有两个非常实用的扩展功能也是面试中常考的点新手小伙伴先理解核心作用即可。1. ARP 代理跨网段通信的 “中间人”核心场景位于不同网络的设备在未配置网关的情况下想要相互通信就需要 ARP 代理。工作原理ARP 代理一般由路由器实现路由器作为两个网段的 “中间人”代替目的设备回应 ARP 请求网段 1 的主机 A 想给网段 2 的主机 B 发数据发送 ARP 请求查询主机 B 的 MAC连接两个网段的路由器收到请求后发现目的 IP 属于另一个网段于是以自己的 MAC 地址作为响应发送 ARP Reply 给主机 A主机 A 将路由器的 MAC 写入缓存表后续给主机 B 的所有数据都会先发送到路由器再由路由器转发到网段 2 的主机 B。简单说ARP 代理让跨网段设备 “以为” 对方就在同一局域网实际由路由器完成数据转发。2. 免费 ARPIP 地址冲突检测核心作用探测当前局域网内自己的 IP 地址是否被其他设备占用是设备开机或配置 IP 后自动执行的操作。工作原理免费 ARP 是一种特殊的 ARP 请求报文有两个关键特征源 IP 目的 IP 本机的 IP 地址目的 MAC 广播地址FF-FF-FF-FF-FF-FF局域网内所有设备都能收到。结果判断如果局域网内没有其他设备使用该 IP则没有设备响应本机确定 IP 可用如果有设备使用该 IP则该设备会发送 ARP 响应本机就能检测到IP 地址冲突并给出提示。五、核心问题看完上面的内容我们回答两个核心问题也是理解 ARP 的关键1. 网络设备什么时候会发送 ARP Request当设备需要给其他设备发送数据知道目的 IP但在 ARP 缓存表中没有找到对应的目的 MAC 地址时就会发送 ARP 请求广播。2. 网络设备什么时候会产生免费 ARP设备开机初始化、手动配置 / 修改 IP 地址后会自动发送免费 ARP用于探测 IP 地址是否冲突。注意ARP 报文不能穿越路由器不能被转发到其他广播域这也是为什么局域网内的 ARP 请求是广播却不会影响其他网段的设备 —— 路由器会直接丢弃 ARP 广播报文保证了各广播域的独立性也避免了网络中出现大量 ARP 广播风暴。六、总结ARP 协议通过 “请求广播响应单播” 的方式实现 IP 地址到 MAC 地址的解析ARP 缓存表提高通信效率ARP 代理实现跨网段无网关通信免费 ARP 检测 IP 冲突且 ARP 报文无法跨广播域传输。对于新手来说先理解ARP 的核心工作过程和ARP 缓存表的作用就足够了后续学习 TCP/IP 协议栈、局域网故障排查时会对 ARP 有更深入的理解。如果这篇文章对你有帮助欢迎点赞 收藏后续会持续更新网络基础系列内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2473286.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!