网站优化方案怎么写,安阳专业seo地址,安徽省校园网站建设,页面跳转失败字节大佬含泪吐血总结系列之 ARP 协议详解(网络层) 原文地址#xff1a;https://github.com/Snailclimb/JavaGuide 文章目录 字节大佬含泪吐血总结系列之 ARP 协议详解(网络层)MAC 地址ARP 协议工作原理同一局域网内的 MAC 寻址不同局域网内的 MAC 寻址 每当我们学习一个新的…字节大佬含泪吐血总结系列之 ARP 协议详解(网络层) 原文地址https://github.com/Snailclimb/JavaGuide 文章目录 字节大佬含泪吐血总结系列之 ARP 协议详解(网络层)MAC 地址ARP 协议工作原理同一局域网内的 MAC 寻址不同局域网内的 MAC 寻址 每当我们学习一个新的网络协议的时候都要把他结合到 OSI 七层模型中或者是 TCP/IP 协议栈中来学习一是要学习该协议在整个网络协议栈中的位置二是要学习该协议解决了什么问题地位如何三是要学习该协议的工作原理以及一些更深入的细节。
ARP 协议可以说是在协议栈中属于一个偏底层的、非常重要的、又非常简单的通信协议。
开始阅读这篇文章之前你可以先看看下面几个问题
ARP 协议在协议栈中的位置 ARP 协议在协议栈中的位置非常重要在理解了它的工作原理之后也很难说它到底是网络层协议还是链路层协议因为它恰恰串联起了网络层和链路层。国外的大部分教程通常将 ARP 协议放在网络层。ARP 协议解决了什么问题地位如何 ARP 协议全称 地址解析协议Address Resolution Protocol它解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中总是需要知道下一跳物理上的下一个目的地该去往何处但 IP 地址属于逻辑地址而 MAC 地址才是物理地址ARP 协议解决了 IP 地址转 MAC 地址的一些问题。ARP 工作原理 只希望大家记住几个关键词ARP 表、广播问询、单播响应。
MAC 地址
在介绍 ARP 协议之前有必要介绍一下 MAC 地址。
MAC 地址的全称是 媒体访问控制地址Media Access Control Address。如果说互联网中每一个资源都由 IP 地址唯一标识IP 协议内容那么一切网络设备都由 MAC 地址唯一标识。 可以理解为MAC 地址是一个网络设备真正的身份证号IP 地址只是一种不重复的定位方式比如说住在某省某市某街道的张三这种逻辑定位是 IP 地址他的身份证号才是他的 MAC 地址也可以理解为 MAC 地址是身份证号IP 地址是邮政地址。MAC 地址也有一些别称如 LAN 地址、物理地址、以太网地址等。 还有一点要知道的是不仅仅是网络资源才有 IP 地址网络设备也有 IP 地址比如路由器。但从结构上说路由器等网络设备的作用是组成一个网络而且通常是内网所以它们使用的 IP 地址通常是内网 IP内网的设备在与内网以外的设备进行通信时需要用到 NAT 协议。 MAC 地址的长度为 6 字节48 比特地址空间大小有 280 万亿之多 2 48 2^{48} 248MAC 地址由 IEEE 统一管理与分配理论上一个网络设备中的网卡上的 MAC 地址是永久的。不同的网卡生产商从 IEEE 那里购买自己的 MAC 地址空间MAC 的前 24 比特也就是前 24 比特由 IEEE 统一管理保证不会重复。而后 24 比特由各家生产商自己管理同样保证生产的两块网卡的 MAC 地址不会重复。
MAC 地址具有可携带性、永久性身份证号永久地标识一个人的身份不论他到哪里都不会改变。而 IP 地址不具有这些性质当一台设备更换了网络它的 IP 地址也就可能发生改变也就是它在互联网中的定位发生了变化。
最后记住MAC 地址有一个特殊地址FF-FF-FF-FF-FF-FF全 1 地址该地址表示广播地址。
ARP 协议工作原理
ARP 协议工作时有一个大前提那就是 ARP 表。
在一个局域网内每个网络设备都自己维护了一个 ARP 表ARP 表记录了某些其他网络设备的 IP 地址-MAC 地址映射关系该映射关系以 IP, MAC, TTL 三元组的形式存储。其中TTL 为该映射关系的生存周期典型值为 20 分钟超过该时间该条目将被丢弃。
ARP 的工作原理将分两种场景讨论
同一局域网内的 MAC 寻址从一个局域网到另一个局域网中的网络设备的寻址。
同一局域网内的 MAC 寻址
假设当前有如下场景IP 地址为137.196.7.23的主机 A想要给同一局域网内的 IP 地址为137.196.7.14主机 B发送 IP 数据报文。 再次强调当主机发送 IP 数据报文时网络层仅知道目的地的 IP 地址并不清楚目的地的 MAC 地址而 ARP 协议就是解决这一问题的。 为了达成这一目标主机 A 将不得不通过 ARP 协议来获取主机 B 的 MAC 地址并将 IP 报文封装成链路层帧发送到下一跳上。在该局域网内关于此将按照时间顺序依次发生如下事件 主机 A 检索自己的 ARP 表发现 ARP 表中并无主机 B 的 IP 地址对应的映射条目也就无从知道主机 B 的 MAC 地址。 主机 A 将构造一个 ARP 查询分组并将其广播到所在的局域网中。 ARP 分组是一种特殊报文ARP 分组有两类一种是查询分组另一种是响应分组它们具有相同的格式均包含了发送和接收的 IP 地址、发送和接收的 MAC 地址。当然了查询分组中发送的 IP 地址即为主机 A 的 IP 地址接收的 IP 地址即为主机 B 的 IP 地址发送的 MAC 地址也是主机 A 的 MAC 地址但接收的 MAC 地址绝不会是主机 B 的 MAC 地址因为这正是我们要问询的而是一个特殊值——FF-FF-FF-FF-FF-FF之前说过该 MAC 地址是广播地址也就是说查询分组将广播给该局域网内的所有设备。 主机 A 构造的查询分组将在该局域网内广播理论上每一个设备都会收到该分组并检查查询分组的接收 IP 地址是否为自己的 IP 地址如果是说明查询分组已经到达了主机 B否则该查询分组对当前设备无效丢弃之。 主机 B 收到了查询分组之后验证是对自己的问询接着构造一个 ARP 响应分组该分组的目的地只有一个——主机 A发送给主机 A。同时主机 B 提取查询分组中的 IP 地址和 MAC 地址信息在自己的 ARP 表中构造一条主机 A 的 IP-MAC 映射记录。 ARP 响应分组具有和 ARP 查询分组相同的构造不同的是发送和接受的 IP 地址恰恰相反发送的 MAC 地址为发送者本身目标 MAC 地址为查询分组的发送者也就是说ARP 响应分组只有一个目的地而非广播。 主机 A 终将收到主机 B 的响应分组提取出该分组中的 IP 地址和 MAC 地址后构造映射信息加入到自己的 ARP 表中。 在整个过程中有几点需要补充说明的是
主机 A 想要给主机 B 发送 IP 数据报如果主机 B 的 IP-MAC 映射信息已经存在于主机 A 的 ARP 表中那么主机 A 无需广播只需提取 MAC 地址并构造链路层帧发送即可。ARP 表中的映射信息是有生存周期的典型值为 20 分钟。目标主机接收到了问询主机构造的问询报文后将先把问询主机的 IP-MAC 映射存进自己的 ARP 表中这样才能获取到响应的目标 MAC 地址顺利的发送响应分组。
总结来说ARP 协议是一个广播问询单播响应协议。
不同局域网内的 MAC 寻址
更复杂的情况是发送主机 A 和接收主机 B 不在同一个子网中假设一个一般场景两台主机所在的子网由一台路由器联通。这里需要注意的是一般情况下我们说网络设备都有一个 IP 地址和一个 MAC 地址这里说的网络设备更严谨的说法应该是一个接口。路由器作为互联设备具有多个接口每个接口同样也应该具备不重复的 IP 地址和 MAC 地址。因此在讨论 ARP 表时路由器的多个接口都各自维护一个 ARP 表而非一个路由器只维护一个 ARP 表。
接下来回顾同一子网内的 MAC 寻址如果主机 A 发送一个广播问询分组那么 A 所在的子网内所有设备接口都将会捕获该分组因为该分组的目的 IP 与发送主机 A 的 IP 在同一个子网中。但是当目的 IP 与 A 不在同一子网时A 所在子网内将不会有设备成功接收该分组。那么主机 A 应该发送怎样的查询分组呢整个过程按照时间顺序发生的事件如下 主机 A 查询 ARP 表期望寻找到目标路由器的本子网接口的 MAC 地址。 目标路由器指的是根据目的主机 B 的 IP 地址分析出 B 所在的子网能够把报文转发到 B 所在子网的那个路由器。 主机 A 未能找到目标路由器的本子网接口的 MAC 地址将采用 ARP 协议问询到该 MAC 地址由于目标接口与主机 A 在同一个子网内该过程与同一局域网内的 MAC 寻址相同。 主机 A 获取到目标接口的 MAC 地址先构造 IP 数据报其中源 IP 是 A 的 IP 地址目的 IP 地址是 B 的 IP 地址再构造链路层帧其中源 MAC 地址是 A 的 MAC 地址目的 MAC 地址是本子网内与路由器连接的接口的 MAC 地址。主机 A 将把这个链路层帧以单播的方式发送给目标接口。 目标接口接收到了主机 A 发过来的链路层帧解析根据目的 IP 地址查询转发表将该 IP 数据报转发到与主机 B 所在子网相连的接口上。 到此该帧已经从主机 A 所在的子网转移到了主机 B 所在的子网了。 路由器接口查询 ARP 表期望寻找到主机 B 的 MAC 地址。 路由器接口如未能找到主机 B 的 MAC 地址将采用 ARP 协议广播问询单播响应获取到主机 B 的 MAC 地址。 路由器接口将对 IP 数据报重新封装成链路层帧目标 MAC 地址为主机 B 的 MAC 地址单播发送直到目的地。