133 lines
3.3 KiB
Markdown
133 lines
3.3 KiB
Markdown
|
|
# MAC 与 ARP
|
||
|
|
|
||
|
|
## MAC
|
||
|
|
|
||
|
|
MAC 一般指 **MAC 地址**,不是我们平时说的一种独立协议。
|
||
|
|
|
||
|
|
MAC 地址的主要作用是:
|
||
|
|
- 在二层网络中唯一标识网卡或接口
|
||
|
|
- 让交换机能够根据目的 MAC 地址进行转发
|
||
|
|
|
||
|
|
常见特点:
|
||
|
|
- MAC 地址长度为 48 位,通常写成 12 个十六进制数
|
||
|
|
- 前 24 位一般表示厂商标识,后 24 位一般由厂商分配
|
||
|
|
- 二层交换机维护 **MAC 地址表**,记录“某个 MAC 地址对应哪个接口”
|
||
|
|
|
||
|
|
交换机转发数据帧时的大致过程:
|
||
|
|
1. 先学习源 MAC 地址,并记录进入接口
|
||
|
|
2. 查看目的 MAC 地址是否在 MAC 地址表中
|
||
|
|
3. 如果表中有记录,就从对应接口转发
|
||
|
|
4. 如果表中没有记录,就进行泛洪
|
||
|
|
|
||
|
|
## ARP
|
||
|
|
|
||
|
|
ARP 是 **地址解析协议**,作用是把 **IP 地址解析为 MAC 地址**。
|
||
|
|
|
||
|
|
ARP 的核心用途:
|
||
|
|
- 主机已知目标 IP 地址,但不知道目标 MAC 地址时,先通过 ARP 查询
|
||
|
|
- 查询到 MAC 地址后,再封装二层帧并发送数据
|
||
|
|
|
||
|
|
要注意:
|
||
|
|
- ARP 不是“基于 MAC 的协议”,而是“根据 IP 找 MAC 的协议”
|
||
|
|
- ARP 不是用来路由的
|
||
|
|
- 二层交换机转发主要看 **MAC 地址表**
|
||
|
|
- 主机或三层设备在发送数据前,往往先通过 **ARP 表** 找到下一跳或目标主机的 MAC 地址
|
||
|
|
|
||
|
|
ARP 工作过程大致如下:
|
||
|
|
1. 主机先查看本地 ARP 表中有没有目标 IP 对应的 MAC
|
||
|
|
2. 如果没有,就发送 ARP Request 广播
|
||
|
|
3. 目标主机收到后,返回 ARP Reply 单播
|
||
|
|
4. 发送方学到对方的 MAC 地址,并写入 ARP 表
|
||
|
|
5. 后续数据通信就可以正常封装并发送
|
||
|
|
|
||
|
|
## MAC 地址表与 ARP 表的区别
|
||
|
|
|
||
|
|
MAC 地址表:
|
||
|
|
- 维护设备:二层交换机
|
||
|
|
- 作用:记录 MAC 地址与接口的对应关系
|
||
|
|
- 用途:决定二层帧从哪个端口转发
|
||
|
|
|
||
|
|
ARP 表:
|
||
|
|
- 维护设备:主机、路由器、三层交换机
|
||
|
|
- 作用:记录 IP 地址与 MAC 地址的对应关系
|
||
|
|
- 用途:发送数据前完成二层封装
|
||
|
|
|
||
|
|
## 一句话理解
|
||
|
|
|
||
|
|
- **MAC 地址表解决“帧往哪一个接口走”**
|
||
|
|
- **ARP 表解决“这个 IP 对应哪个 MAC”**
|
||
|
|
|
||
|
|
## 常见问题
|
||
|
|
|
||
|
|
### 1. 为什么同网段通信需要 ARP
|
||
|
|
|
||
|
|
因为发送方虽然知道对方 IP,但真正发二层数据帧时,还需要知道对方的 MAC 地址。
|
||
|
|
|
||
|
|
### 2. 为什么跨网段通信也会用到 ARP
|
||
|
|
|
||
|
|
因为主机把数据交给网关时,实际封装的是 **网关接口的 MAC 地址**,所以仍然要先解析网关的 MAC。
|
||
|
|
|
||
|
|
### 3. ARP 广播会不会很多
|
||
|
|
|
||
|
|
会。ARP 请求是广播报文,所以网络里主机很多时,ARP 广播也会增多。
|
||
|
|
|
||
|
|
## 常见厂商命令
|
||
|
|
|
||
|
|
### 华为
|
||
|
|
|
||
|
|
查看 MAC 地址表:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
display mac-address
|
||
|
|
```
|
||
|
|
|
||
|
|
查看 ARP 表:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
display arp
|
||
|
|
```
|
||
|
|
|
||
|
|
查看接口简要信息:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
display interface brief
|
||
|
|
```
|
||
|
|
|
||
|
|
查看某个 VLAN 的 MAC 学习情况:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
display mac-address vlan 10
|
||
|
|
```
|
||
|
|
|
||
|
|
### 思科 Cisco
|
||
|
|
|
||
|
|
查看 MAC 地址表:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
show mac address-table
|
||
|
|
```
|
||
|
|
|
||
|
|
查看 ARP 表:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
show arp
|
||
|
|
```
|
||
|
|
|
||
|
|
或:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
show ip arp
|
||
|
|
```
|
||
|
|
|
||
|
|
查看接口状态:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
show ip interface brief
|
||
|
|
```
|
||
|
|
|
||
|
|
## 复习时容易写错的点
|
||
|
|
|
||
|
|
- MAC 地址不是“身份协议”,更准确地说是二层地址
|
||
|
|
- ARP 不是“绑定设备 IP 与 MAC 方便二层交换时的路由”,更准确地说是“把 IP 解析为 MAC,方便后续二层封装与转发”
|
||
|
|
- 交换机转发数据帧主要依据 MAC 地址表,不是 ARP 表
|