链路层寻址与ARP
链路层寻址与ARP
概念
- 链路层地址:又称LAN地址,物理地址,MAC地址,是主机或路由器的适配器(即网络接口)具有的地址(所以具有多个网络接口的主机或路由器就具有多个MAC地址);
- 链路层交换机并不具有与它们接口相关联的MAC地址,它只承载数据报,透明的执行该项任务,因此主机或路由器不必明确地将帧寻址到其间的路由器;
- 当某适配器要向某些目的适配器发送一个帧时,发送适配器将目的适配器的MAC地址插入该帧中,并将该帧发送到局域网上;当适配器接收到一个帧时,将检查该帧中的目的MAC地址是否与它自己的MAC地址匹配,若匹配则解封并向上传递,否则丢弃。
链路层地址和网络层地址的区别
MAC地址的唯一且固定的,没有两块适配器具有相同的地址;
MAC地址具有扁平结构,且不论适配器到哪里用都不会变化;
网络层地址(IP地址)具有层次结构(即网络部分-主机部分),当主机移动时,主机的IP地址需要改变。
地址解析协议(ARP)
网络层地址->链路层地址
因为存在网络层地址和链路层地址,因此需要在它们之间进行转换。对于因特网来说,这个协议就是 ARP 协议。ARP的输入是 相同局域网里的任何IP地址,返回相应的MAC地址。
这个过程有点像DNS,DNS是输入主机名返回IP地址,DNS 和 ARP 协议的一个重要区别是,DNS 为因特网中任何地方的主机解析主机名,而 ARP 只为在同一个子网上的主机和路由器接口解析 IP 地址。
每台主机或路由器在其内存中具有一个 ARP表 (ARP table),这张表包含 IP 地址到 MAC 地址的映射关系。这张表中也包含了一个寿命 (TTL) 值。从一个表项放置到某 ARP 表中开始,一个表项通常的过期时间是 20 分钟。
使用ARP的过程
- 发送方向其适配器传递一个ARP查询分组(广播分组) 指示适配器用MAC广播地址来让所有子网中的适配器接收到;
- 与之匹配的一个适配器给查询主机发送一个带有所希望映射的响应ARP分组;
- 查询主机更新它的ARP表,并发送IP数据报.
ARP要注意的几个点
- 查询 ARP 报文是在广播帧中发送的,而响应 ARP 报文是在一个标准帧中发送的。
- ARP 是即插即用的。
也就是说一个 ARP 表是自动建立的,不需要系统管理员来配置。
并且如果某主机与子网断开连接,它的表项最终会从留在子网的结点的表中删除掉。 - 可以把 ARP 协议看成是跨越链路层和网络层边界两边的协议
ARP 帧封装在链路层帧中,因此在链路层之上。此外,一个 ARP 分组具有包含链路层地址的字段。
发送到子网外
主机必须把数据报首先发给第一跳路由器,因此发出的链路帧的 MAC 地址是路由器接口的 MAC 地址。
如何获得这个 MAC 地址呢?当然是通过 ARP 协议。
例子
一台路由器对它的每个接口都有一个IP地址,同时对每个接口也有一个ARP模块和一个适配器。图中路由器有两个接口,所以它有两个IP地址、两个ARP模块和两个适配器。
子网1的网络地址为 111.111.111/24,子网2的网络地址为 222.222.222/24;
若子网1的一台主机要向子网2的一台主机发送数据报要怎么办呢?
首先肯定发送方要向其适配器传递数据报和MAC地址才能发出去,但若是直接传的子网2的MAC地址,但是该帧被传到子网1的所有适配器处后都不会被传递到它的网络层,因为MAC地址不匹配,所以数据报被丢弃了。
因此对于该帧来说,适当的MAC地址是路由器接口111.111.111.110的适配器地址,这个流程知道了就有如下的过程:
- 子网1中发送方先通过ARP得知路由器的接口MAC地址,再将数据报通过MAC地址传到路由器;
- 路由器通过ARP知道子网2中接收方的MAC地址,传递过去。