目录
一、链路层寻址地址
1、MAC 地址分配
2、MAC 地址识别
二、ARP 地址解析协议
1、ARP 地址解析协议
2、ARP:两个主机位于同一个局域网
3、ARP:发送数据报到子网以外
4、ARP 自举
5、ARP 攻击
一、链路层寻址地址
每个节点有网络层地址和链路层地址
① 网络层地址:节点在网络中分配到的一个唯一地址,即 IP地址。用于把分组送到目的 IP 网络,在 IPv4 中 IP 地址的长度为 32 比特。
② 链路层地址:又称 MAC 地址、物理地址和局域网地址。用于在同一个网络中把数据帧从一个节点传送到另一个节点。
- MAC 地址的长度通常为 6 字节
- MAC 地址的每个字节用 16 进制表示
- MAC 地址是节点的网卡本身所带的唯一地址
- 网卡的 MAC 地址是永久的,生产时固化在其 ROM 里
局域网中的每个网卡都有唯一的局域网地址。
1、MAC 地址分配
由专门的机构 IEEE 管理物理地址空间,IEEE 负责分配六个字节中的前三个字节。
MAC 地址是平面结构:带有同一网卡的节点,在任何网络中都具有同样的 MAC 地址。
IP 地址具有层次结构:当节点移动到不同网络时,节点的 IP 地址发生改变。
类比你分别处于成都和北京,你所在地的邮编发生了变化,但你的身份证号始终不变。
2、MAC 地址识别
在广播信道的局域网中,一个节点发送的帧,在信道上广播传输,其它节点都会收到该帧。而大多数情况下,一个节点只向某个特定的节点发送,因此需要有网卡负责 MAC 地址的封装和识别。
① 发送适配器:将目的 MAC 地址封装到帧中并发送,所有其它适配器都会收到该帧。
② 接收适配器:检查帧的目的 MAC 地址是否与自己的 MAC 地址相匹配:
- 匹配:接收该帧,取出数据报,并传递给上层。
- 不匹配:直接丢弃该帧。
接收适配器会接收的 MAC 地址有:
- 单播:目的 MAC 地址与自己的 MAC 地址匹配
- 组播:目的 MAC 地址与自己所在组的 MAC 地址匹配
- 广播:目的 MAC 地址为全 1 地址
广播帧:发送给所有节点的帧,其目的 MAC 地址为全 1 地址,即 FF-FF-FF-FF-FF-FF 。
二、ARP 地址解析协议
回顾一:节点的 3 种不同地址表示。
应用层的主机名、网络层的 IP 地址、链路层的 MAC 地址
实际在链路上传输时,根据 MAC 地址确定相应的节点。
回顾二:地址之间的转换
通信时需要进行地址转换:主机名 => IP 地址 => MAC 地址
- DNS:将主机名解析为 IP 地址,为在因特网中任何地方的主机解析主机名。
- ARP:将 IP 地址解析为 MAC 地址,只为在同一个局域网中的节点解析 IP 地址。
1、ARP 地址解析协议
ARP 表:局域网中的每个节点(主机、路由器)都有这个表。
- 每台主机仅有一个 IP 地址、一个网络适配器和一个 ARP 模块
- 路由器的每个接口都有一个 IP 地址、一个网络适配器和一个 ARP 模块
网卡保存 IP 地址和 MAC 地址之间的临时映射关系
𝐴𝑃𝑅 表为某些局域网节点进行 𝐼𝑃/𝑀𝐴𝐶 地址映射:
- <𝐼𝑃 𝑎𝑑𝑑𝑟𝑒𝑠𝑠; 𝑀𝐴𝐶 𝑎𝑑𝑑𝑟𝑒𝑠𝑠; 𝑇𝑇𝐿>
- 𝑇𝑇𝐿:存活时间,地址映射将被删除的时间,通常为 20min
2、ARP:两个主机位于同一个局域网
主机 A 希望发送数据报给主机 B,但 B 的 MAC 地址不在 A 的 ARP 映射表中。
① 主机 A 广播 ARP 查询分组:
局域网中的所有节点都会收到 ARP 查询分组。
② 主机 B 收到 ARP 查询分组,发现目的 IP 地址是自己的 IP 地址,于是返回自己的 MAC 地址给主机 A,即包含有 B 的 MAC 地址的帧发送给主机 A 。这个过程是单播,因为 B 已经在 A 的 ARP 查询分组中获得了 A 的 MAC 地址。
③ 主机 A 在它的 ARP 表中缓存 IP-to-MAC 地址对,直到信息超时被删除,除非有更新信息。
现在主机 A 可以向主机 B 愉快地发送消息了!注意:在同一子网中,目的 MAC 地址就是你最终想要到达的目的地,不要想着路由器的 MAC 地址了,那是不同子网中的情况!
3、ARP:发送数据报到子网以外
示例一
主机 A 的网络层从传输层接收到报文段,使用子网掩码与目的 IP 地址(IPB)相与,发现与源 IP 地址(IPA)的子网号不同,因此立即知道主机 B 在不同的子网中。因此在链路层封装帧的时候,目的 MAC 地址填入网关路由器 R1 的左端口的 MAC 地址。
从上图可以看出,MAC 地址永远指示的是当前链路源和目的的 MAC 地址。对于 IP 地址,当不使用 NAT 地址转换时,源和目的的 IP 地址始终不变;当使用 NAT 地址转换时,源的 IP 地址将会改变。
示例二
初始时,主机 A 也不知道 R 左端口的 MAC 地址,所以发送目的 IP 为 IPRL 的 ARP 查询分组,最终获得 RL 的 MAC 地址。此外,R 也不知道主机 B 的 MAC 地址,因此也会发送目的 IP 为 IPB 的 ARP 查询分组,最终获得 B 的 MAC 地址。
4、ARP 自举
ARP 自举:主机在上电时自发广播自己的 IP 地址和 MAC 地址。
虽然有 ARP 自举,但是由于主机 C 上电时主机 A 和 B 还未上电,因此 A 和 B 没有办法保存 C 的 IP 地址和 MAC 地址,所以在日后还是需要进行 ARP 请求。
5、ARP 攻击
攻击方式:主机 B 持续向 R 广播 “我的 IP 地址是 IPA,我的 MAC 地址是 MB”,从而使发给主机 A 的帧全部发给了 B,虽然并不会影响主机 A 向外发送帧。
解决方法:将 IP 地址和 MAC 地址进行绑定。