csharp
复制代码
1).MAC地址也叫物理地址, 可以将它想象成每个网络设备的全球唯一的身份证号码
a.唯一性: 理论上, 全世界每个网卡(比如你电脑, 手机里的wifi模块)的mac地址都是独一无
二的
b.物理固化: 这个地址通常是在生产网卡时就被"烧录"在硬件里, 一般不能改变
c.格式: 通常是一串像这样的十六进制数: 00-1A-2B-C3-4D-5E, 前一半是厂商代码, 后一
半是设备序列号
d.mac地址工作在数据链路层, 可以将它理解为在同一个小区(局域网)里使用的地址
csharp
复制代码
2).ARP协议
a.ARP协议就是一个专门用来通过ip地址查询对应mac地址的协议, 它的工作场景严格限制在同
一个局域网内, 不能用它去查一个外国的网站的mac地址, 就像你不能在自己小区里大喊来找到
一个住在另一个城市的人
b.举例说明ARP协议的工作原理
你的电脑(A)想和同一个局域网里的另一台电脑(B)通信, A知道B的IP地址, 但不知道B的MAC地
址
步骤1: 查"本地通讯录"(ARP缓存表)
A首先会查看自己本地的"ARP缓存表", 看看之前有没有和B通信过, 已经记录下了B的IP和MAC
对应关系; 如果有, 直接使用, 流程结束
步骤2: 如果没找到, 就"大声喊话"(广播ARP请求)
如果缓存里没有, A就会在局域网里"大声喊话"(发送一个广播帧), 这个广播所有在这个局域网
内的设备都能听到
这个"喊话"的内容大概是:
喂!喂!全体注意!我是IP地址为192.168.1.10的, 我的MAC是AA-AA-AA-AA-AA-AA; 我想
问一下, IP地址是192.168.1.20的那位, 你的MAC地址是什么? 请告诉我
步骤3: 目标"举手应答"(单播ARP回复)
局域网里所有设备都听到了这个广播, 其他设备(比如C、D)一看, 问的不是自己, 就忽略这个请
求; 只有IP地址是192.168.1.20的设备B会举手应答, 它会向A发送一个单播的回复, 内容是
"你好A!我就是IP 192.168.1.20,我的MAC地址是 BB-BB-BB-BB-BB-BB"
步骤4: 记录到"通讯录"并开始通信
A收到了B的回复, 高兴地把IP: 192.168.1.20 -> MAC: BB-BB-BB-BB-BB-BB这个对应关
系记录到自己的ARP缓存表里(这样下次就不用再喊了)
现在, A知道了B的MAC地址, 就可以把数据包封装好, 准确地发送给B了