IP和MAC的深入理解

最开始学习计算机网络编程时,对于IP和MAC地址是很容易弄混的这里对上一篇文章进行一个补充讲解:https://blog.csdn.net/2301_79383371/article/details/156130050?fromshare=blogdetail&sharetype=blogdetail&sharerId=156130050&sharerefer=PC&sharesource=2301_79383371&sharefrom=from_linkhttps://blog.csdn.net/2301_79383371/article/details/156130050?fromshare=blogdetail&sharetype=blogdetail&sharerId=156130050&sharerefer=PC&sharesource=2301_79383371&sharefrom=from_link

IP 地址和 MAC 地址确实完全不在同一层,而且它们分工极为明确。这一点如果理解透了,后面的路由转发逻辑就迎刃而解了。

1. 分层定位:井水不犯河水

根据我们之前讲的 TCP/IP 模型(或 OSI 模型):

  • IP 地址 :属于 第三层 ------ 网络层 (Network Layer)
    • 核心职责: 地址管理与路由选择
    • 性质: 它是逻辑地址,是软件层面的配置。就像你的"家庭住址",如果你搬家了,地址会变。
    • 作用域: 全局有效(Global)。它负责把数据从地球的一端送到另一端。
  • MAC 地址 :属于 第二层 ------ 数据链路层 (Data Link Layer)
    • 核心职责: 互连设备之间传送和识别数据帧
    • 性质: 它是物理地址(硬件地址)。就像你的"指纹"或"身份证号",通常烧录在网卡上,出厂即固定,不可更改(大部分情况)。
    • 作用域: 局部有效(Local)。它只在同一个局域网(两根网线连接的设备之间)起作用,一旦跨过路由器,MAC 地址就没有意义了。

2. 为什么要设计两套地址?(深度思考)

你可能会问:"为什么不直接用 MAC 地址全球通信?或者直接用 IP 地址在局域网通信?搞两套不麻烦吗?"

这是一个非常经典的架构设计问题。

  • 理由一:屏蔽硬件差异(解耦合) 如果网络层直接绑定 MAC 地址,那么每当你更换网卡(比如从 WiFi 换到有线,或者换了一块新网卡),你的"全球身份"就变了,所有因特网上的路由器都要更新关于你的记录。 有了 IP 层,操作系统可以将不变的 IP (逻辑层)映射到可变的 MAC (物理层)。IP 负责软件逻辑,MAC 负责硬件适配。
  • 理由二:路由效率(层级 vs 扁平)
    • IP 地址是有结构的: 192.168.1.5 包含了"网络号"(192.168.1) 和"主机号"(5)。路由器只需要知道"要把数据送往 192.168.1 这个网段",而不需要记录每一台主机的具体位置。这大大减小了路由表的大小。
    • MAC 地址是扁平的: 它是厂商编号+序列号,没有地域或网络结构的概念。如果全球都用 MAC 路由,路由表会有几十亿条记录,路由器瞬间就会崩溃。

3. 数据传输中的"变与不变"

这是最关键的结论,也是我们在上一阶段和下一阶段都要验证的铁律:

IP 地址在整个路由过程中,一直不变。 Mac 地址一直在变。

我们可以用一个生动的比喻来理解:

  • IP 地址 = 最终目的地(如:去北京故宫)。 不管你现在是坐火车、坐飞机还是骑车,你的目的地永远是"北京故宫",这个信息写在你的额头上(IP 头),不能变
  • MAC 地址 = 下一程的交通工具票据(如:这张票是给火车检票员的)。
    • 从你家出发,你打了一辆出租车。此时你的 MAC 目标是"出租车司机"(网关路由器)。
    • 到了车站,你换了高铁。此时 MAC 目标变成了"高铁检票口"(下一个路由器)。
    • 到了北京,你骑共享单车。此时 MAC 目标变成了"单车"(最终主机)。
    • 每一程,你都要把旧的"票"(旧 MAC 头)扔掉,换一张新"票"(新 MAC 头)。
相关推荐
lunzi_082616 分钟前
【学习笔记】《Python编程 从入门到实践》第8章:函数定义、参数传递与模块导入
笔记·python·学习
凡人叶枫29 分钟前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
云栖梦泽34 分钟前
玩转RK3506SDK
linux·嵌入式硬件
智慧光迅AINOPOL1 小时前
校园在线巡课系统方案:督导全覆盖
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案
Java面试题总结1 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器
酉鬼女又兒1 小时前
零基础入门计算机网络:网络层核心任务、三大关键问题、两种服务类型与 TCP/IP 网际层协议体系全解析
服务器·网络·网络协议·tcp/ip·计算机网络·php·求职招聘
Urbano2 小时前
工装制作全流程科普:从面料到自动化生产
网络·人工智能
kong@react2 小时前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
2401_868534782 小时前
网规笔记 | 真题解析:2018年11月软考网规-网络安全案例分析
网络
Gauss松鼠会2 小时前
【GaussDB】GaussDB重要通信参数汇总
服务器·网络·数据库·sql·性能优化·gaussdb·经验总结