为什么有了MAC地址,还需要IP地址?

解释

搞懂这个问题,首先需要了解交换机的功能

交换机内部有一张MAC地址映射表,记录着MAC地址和端口的对应关系。

如果A要给B发送一个数据包,构造如下格式的数据结构:

到达交换机时,交换机内部通过自己维护的 MAC 地址表,发现目标 B 的 MAC 地址 bb-bb-bb-bb-bb-bb 映射到了端口 1 上,于是把数据从 1 号端口发给了 B。

但随着机器数量的增多,交换机的端口不够,此时只要将多个交换机连接起来,这个问题就轻而易举搞定。

此时,两个交换机将分别记录 A ~ H 所有机器的映射记录。

左边的交换机:

右边的交换机:

此时如果A 要发数据给 F(ff-ff-ff-ff-ff-ff),数据包首先到达左边的交换机,在左边的交换机上发现F的MAC地址映射到端口6上,然后数据通过端口6到达右边的交换机,在右边的交换机上发现F的MAC地址映射到端口3上,于是把数据从端口3发给了F。

然而,机器的数量骤增,交换机记录的映射表规模太大。

此时,找到一个设备(路由器)把两个交换机连接起来

左边的交换机只需要多一条路由器MAC地址和交换机端口号的映射关系即可。它只管发到路由器,剩下路由器怎么转发,左边的交换机不用管。

注意:路由器的每一个端口,都有独立的 MAC 地址;并且路由器至少有两个端口

这样的话,交换机就不用维护那么大的映射表了。

此时,想到两个问题:

  • 如何知道哪些数据需要发给路由器?

    这时候就要看主机IP地址,如果在一个子网内,那么数据将只经过交换机达到目的主机;如果不在一个子网内,就交给路由器去处理。

  • 主机怎么知道哪个是路由器?

    在主机上要设置默认网关。当检测到目的主机和自己不在一个网关时,就发给这个IP地址(路由器)

参考

有了 IP 地址,为什么还要用 MAC 地址? - 无聊的闪客的回答 - 知乎

相关推荐
陈希1231 小时前
Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位
linux·服务器·网络
国科安芯2 小时前
从遥控到自治:ASP4644S2B支撑星载电源健康管理与容错配电
网络·单片机·嵌入式硬件·安全·dcdc·低轨卫星·商业航天
|_⊙5 小时前
网络层协议 IP
服务器·网络·tcp/ip
无言听风雨丶5 小时前
Kubernetes Service Mesh 与 mTLS 实战:从网络可达走向零信任服务通信
网络·kubernetes·service_mesh
叼烟扛炮5 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
沫璃染墨7 小时前
从零入门计算机网络系列(十五):TCP可靠传输机制详解——从序号与确认应答到乱序处理
服务器·网络·c++·tcp/ip·tcp
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》本地 Ollama 部署与适配
开发语言·网络·c++·语言模型
流浪0019 小时前
计算机网络篇20:网络层——IP 协议的定位与 IPv4 报头字段,从 20 字节首部到 TTL 防环
tcp/ip·计算机网络·ttl·网络层协议·ip报头
zhengfei6119 小时前
CVE-2026-98432:Linux 内核 TCP 释放后重用漏洞,CVSS 9.8 但补丁覆盖极不均衡
linux·运维·tcp/ip
叼烟扛炮9 小时前
Linux 学习笔记(六十一):网络编程毕业设计——Reactor 反应堆模式
linux·网络·笔记·学习·课程设计