ARP协议
ARP协议,全程地址解析协议,它解决的是网路层地址和链路层地址之间的转换问题,因为一个IP数据包在物理上传输的过程总是需要知道下一挑该去往何处,但IP地址属于逻辑地址,而MAC地址才是物理地址,ARP协议解决了IP地址转MAC地址的一些问题
MAC地址:网络上各接口的唯一标识。
工作原理
ARP协议工作核心:ARP表
每个网络设备都维护一个ARP表,表中记录了某些其他网络设备的IP-MAC的映射关系,该映射关系以<IP, MAC, TTL>三元组形式存储,其中,TTL为该映射关系的生存周期,超过该时间,该条目就会被丢弃
ARP工作原理分两种场景讨论:
-
同一局域网内的MAC寻址
-
从一个局域网到另一个局域网中的网络设备的寻址
同一局域网MAC寻址
假设,主机A想给同一局域网内的主机B发送IP数据报文
当主机发送IP数据报文时,只知道目的地的IP地址,不知其MAC地址,ARP协议就是解决这一问题的
主机A通过ARP协议来获取主机B的MAC地址,并将IP报文封装成链路层帧,发送到下一跳,过程如下:
-
主机 A 检索自己的 ARP 表,发现 ARP 表中并无主机 B 的 IP 地址对应的映射条目
-
主机 A 将构造一个ARP查询分组 (用于查询目标主机MAC地址的报文),并将其广播到所在的局域网中。
ARP 分组是一种特殊报文,ARP 分组有两类,一种是查询分组,另一种是响应分组,它们具有相同的格式。均包含发送和接收的IP地址、发送和接收的MAC地址。
其中,ARP查询分组包含发送主机的IP地址和MAC地址,以及接收主机的IP地址,但没有接收主机的MAC地址(因为这是我们要查询的),而是一个特殊值
FF-FF-FF-FF-FF-FF即广播地址
-
主机A将构造的查询分组广播到局域网中,局域网中的每个设备都会收到该分组,并检查分组中接收方的IP地址是否是自己的IP地址,如果是,则表示查询到主机B,否则丢弃
-
主机B确定是对自己的查询后:
-
将主机A的IP地址和MAC地址记录到自己的ARP表中
-
会构造一个ARP响应分组,以单播的形式发送给主机A,告知自己的MAC地址
响应报文包含主机B的IP地址和MAC地址,以及主机A的MAC地址,也就是报文的目的地址

-
-
主机A最后会接收到主机B的响应,提取出该分组中的IP地址和MAC地址,构造映射关系,记录到自己的ARP表中
-
之后主机A就可以给主机B发送数据包了
-
如果主机 B 的 IP-MAC 映射信息已经存在于主机 A 的 ARP 表中,那么主机 A 无需广播,只需提取 MAC 地址并构造链路层帧发送即可。
-
ARP 表中的映射信息是有生存周期的,典型值为 20 分钟。
-
目标主机接收到了问询主机构造的问询报文后,将先把问询主机的 IP-MAC 映射存进自己的 ARP 表中,这样才能获取到响应的目标 MAC 地址,顺利的发送响应分组
总结来说,ARP 协议是一个广播问询,单播响应协议
跨区域网寻址
当发送主机和接收主机不在同一个子网内时,就无法通过ARP协议直接获取接收主机的MAC地址,因为ARP协议不能跨网络使用,此时就需要路由器协助获取。
首先需要明确的是,路由器是有多个接口的,每个接口各自维护一个ARP表。工作流程如下:
-
主机 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 所在子网相连的接口上,此时,该帧就转移到目的主机所在的子网了
-
路由器接口查询 ARP 表,期望寻找到主机 B 的 MAC 地址
-
路由器接口如未能找到主机 B 的 MAC 地址,将采用 ARP 协议,广播问询,单播响应,获取到主机 B 的 MAC 地址
-
路由器接口将对 IP 数据报重新封装成链路层帧,目标 MAC 地址为主机 B 的 MAC 地址,单播发送,直到目的地

1680

被折叠的 条评论
为什么被折叠?



