866- IP 地址与 MAC 地址

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

问题:

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

或者换种问法:

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

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

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

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

IP 地址负责起点地址和终点地址,下一跳的地址由 MAC 地址负责。
结合这两点,我们来归纳下数据链路层和网络层的关系:

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

看下图,网络层告知了 1-2-3 路线,那么数据链路层就会根据 MAC 地址依次找到 1、2、3,并在他们之间传输数据:
在这里插入图片描述
1)网络层指定了从哪个主机(「源 IP 地址」)发送到哪个主机(「目的 IP 地址」)。源 IP 地址和目标 IP 地址在传输过程中是不会变化的

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

再举个形象点的例子:

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

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

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值