IP 和 MAC 地址必须拆开,因为它们分工完全不同:IP 负责"全球寻路",MAC 负责"本地交付"。只用一种,网络就转不动。
📮 举个快递例子
你从合肥给北京朋友寄包裹:
-
IP 地址 = 收件地址"北京市海淀区xx路xx号",快递员(路由器)按它把包裹送到正确城市、小区,负责跨网络路径选择。 我要到北京天安门,先只用管 合肥到北京,不用管北京具体哪里
-
MAC 地址 = 朋友身份证号,包裹到小区后,保安(交换机)凭它把包裹交到具体人手上,负责同一网络内精准定位。 到了北京ip地址(高铁票)不要了,我要mac 地址找到具体人事物
寄件时,快递单写"地址+身份证号"两个信息,缺一不可:只有 IP 找不到具体人,只有 MAC 快递员不知往哪个城市送。
🔄 数据包怎么走
跨网络传输时,这两个地址轮流起作用:
-
数据包从合肥出发,IP 地址指明最终目的地北京。
-
每经过一个路由器,路由器看 IP 判断下一站方向,再用 ARP 协议把下一站 IP 换成对应 MAC 地址,把数据包封装成帧,交给交换机送过去。
-
途中每一跳 MAC 地址不断更换(M1→M2→M3),但 IP 地址始终不变,直到最后一跳用目标设备的 MAC 地址精准投递。
二、两台电脑在同一局域网通信
假设:
- 电脑A:IP 192.168.1.10,MAC AA:AA:AA:AA:AA:AA
- 电脑B:IP 192.168.1.20,MAC BB:BB:BB:BB:BB:BB
- 两者连接在同一台交换机上
当A想给B发消息时:
步骤1:A检查目标IP是否在同一网段?
- 192.168.1.20 与 自己同属 192.168.1.0/24 → 是!
- 结论:无需路由器,直接二层转发
步骤2:A需要知道B的MAC地址
- A查本地ARP缓存:有没有"192.168.1.20 → ?"的记录?
- 没有 → 发起 ARP广播:
"谁是192.168.1.20?请告诉我你的MAC地址!"
步骤3:B回应自己的MAC
- B收到ARP请求 → 回复:
"我是192.168.1.20,我的MAC是 BB:BB:BB:BB:BB:BB"
步骤4:A封装数据帧,发给交换机
- 数据包(IP层):源IP=192.168.1.10,目的IP=192.168.1.20
- 数据帧(链路层):源MAC=AA:AA:AA:AA:AA:AA,目的MAC=BB:BB:BB:BB:BB:BB
- 交换机根据目的MAC地址,精准转发到B的端口