电脑之家 - 专业计算机基础知识与电脑技术学习网站
分类导航

路由器|交换机|网络协议|网络知识|

服务器之家 - 电脑之家 - 网络技术 - 网络知识 - 戏说不是胡说:高铁换乘之 IP 地址与 MAC 地址

戏说不是胡说:高铁换乘之 IP 地址与 MAC 地址

2021-11-08 23:36飞天小牛肉小牛肉 网络知识

当数据包到达局域网后,完全可以直接送到对应的 IP 地址主机,为什么还要询问一下对应 IP 主机的 MAC 地址?

戏说不是胡说:高铁换乘之 IP 地址与 MAC 地址

一个邮递员拿着地址详细到教室的一封信,收件人是小明,教室里没有重名的,邮递员问 “小明的学号是多少?”,小明站起来回答 “12345”,然后小明坐下,然后邮递员说 “学号 12345 的过来拿信”,小明站起来去拿信。好像有点多此一举?

问题:

当数据包到达局域网后,完全可以直接送到对应的 IP 地址主机,为什么还要询问一下对应 IP 主机的 MAC 地址?

或者换种问法:

既然有了 IP 地址用来唯一标识这台计算机了,那还需要 MAC 地址干啥?

首先,我来简单的解释下 MAC 地址所属的数据链路层和 IP 地址所属的网络层的用途:

两个计算机在计算机网络之间进行通信,不可能就一条数据链路,对吧,它会经过很多条数据链路,也可能还要经过很多的通信子网,那么网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。

然后,需要明白的是,一台计算机向网络中的另一台计算器进行通信的时候,需要知道的其实就是三个地址:

  • 起点地址
  • 下一跳的地址
  • 终点地址

IP 地址负责起点地址和终点地址,下一跳的地址由 MAC 地址负责。

结合这两点,我们来归纳下数据链路层和网络层的关系:

通俗来说,数据链路层的作用很简单,它是无脑的,只负责在两个相邻节点之间传送数据,它并不知道它所传送的数据最终目的地是哪。而网络层便是它的大脑,网络层负责指定起点地址和目的地址,并告诉数据链路层该走哪条路线。

看下图,网络层告知了 1-2-3 路线,那么数据链路层就会根据 MAC 地址依次找到 1、2、3,并在他们之间传输数据:

戏说不是胡说:高铁换乘之 IP 地址与 MAC 地址

1)网络层指定了从哪个主机(「源 IP 地址」)发送到哪个主机(「目的 IP 地址」)。源 IP 地址和目标 IP 地址在传输过程中是不会变化的

2)而数据链路层则是根据 MAC 地址在一个接一个的区间中进行传输的,每个区间内的出发地址即「源 MAC 地址」,每个区间内的目的地址即「目的 MAC 地址」。显然,随着数据的传输,源 MAC 地址和目的 MAC 地址会不断的发生变化

再举个形象点的例子:

我们把数据链路层看作一个乘坐高铁从苏州到南京,再在南京转乘到北京,再在北京转乘到西藏的旅客(一个没脑子的机器人),那么网络层就相当于每个车站的工作人员,在数据链路层这个没脑子的机器人每次转乘时,网络层就会为其购买一张标有下一个 MAC 地址的车票。因此,即使数据链路层(旅客)不知道往哪走也没有关系,工作人员(网络层)会给你做出指引:

戏说不是胡说:高铁换乘之 IP 地址与 MAC 地址

如果没有 MAC 地址,仅仅只有 IP 地址,能不能完成这些事情?

从理论上来说,如果 IP 地址够用,交换机也支持根据 IP 地址进行转发,我们只需要在 IP 数据报中加一个 “下一跳 IP 地址” 的字段就行了,MAC 地址确实并不是必要的。

But,从宏观来说,IP 地址只管上层建筑即路线规划,底层具体走的逻辑交给 MAC 地址来做,这样其实才符合 TCP/IP 协议体系这种分层的理念!

所以,这种设计并非多次一举,而是为了符合最根本的设计理念。

原文链接:https://mp.weixin.qq.com/s/MaRA8zPZkmbGsPdueUNvrA

延伸 · 阅读

精彩推荐