为什么IP地址和MAC地址缺一不可?

前言: 最近在复习网络基础时,遇到这个问题,在看书和看别人的回答,自己思考了一下后总结下自己的观点吧。如有错,请及时指正,谢谢。后期自己如果感觉一些知识点不太清楚会再进行整理和修改。
借鉴自https://www.zhihu.com/question/21546408/answer/149670503

先大致了解下IP和MAC地址

引用自百度百科的介绍。
IP地址:

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

MAC地址:

MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址 [2] 。

IP地址负责标记发送方和接收方,而MAC地址负责传输过程中的分段传送,所以二者缺一不可。而怎么根据IP地址获取下一阶段的MAC地址呢?这个时候我们就需要通过ARP协议(以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址)来获取对端的MAC地址。这也是为什么需要ARP协议的原因。

疑问

明明IP地址和MAC地址都是唯一的,为什么还需要IP和MAC一起使用呢?

只使用MAC地址可行吗?

根据MAC地址的定义我们知道MAC地址是厂家刻录在网卡上的唯一编码,全球唯一,但是由于MAC地址是没有层级关系的,所以我们并不能根据MAC知道目标在哪?我们实际上发送信息时,是不是要将信息广播到所有计算机上来判断是否是该计算机,试想一下,每个人发信息给对方都会给全球的计算机发信息,是不是会造成网络很快瘫痪。而且如果不发广播信息的话那就需要将所有目标地址的信息记录下来,我们会发现路由器需要记住每个 MAC 地址所在的子网是哪一个(不然每一次收到数据包的时候路由器都要重新满世界地去找这个 MAC 地址的位置)。而世界上有 2的48次方个 MAC 地址,这就意味着即使我们给每个 MAC 地址只留 1 字节的储存空间,每个路由器也需要 256 TB 的内存!这显然是不可能实现的。

如果整个网络中的计算机数目很少,那么只使用MAC地址应该是可行的,但是随着网络和计算机的普及,现在计算机已经基本人手一台,这样的情况下再使用MAC定位机器位置就不太现实了。这方面的原因可能就是IP地址产生的原因之一吧。看下别人(知乎楼宇)对于IP产生原因的见解吧:

当年设计 IP 地址的目的是什么呢?当年设计出 IP地址这个东西,就是因为随着网络中的设备逐渐增多,人们发现路由(也就是寻找数据包从发送方到接收方的路径)变得越来越困难了。于是人们想了一个办法,就是把网络划分成很多个子网。这样,在路由的时候,路由器可以把其他子网看成一个整体来进行计算。对于目的地在其他子网的数据包,路由器只需要让数据包到达那个子网即可,而剩下的工作就由子网内部解决了。虽然这种方法只能让寻找到的路径接近最优而不保证最优,不过它大大减少了路由器的计算量,利大于弊,所以被采用了。

只使用IP地址呢?

IP地址是分层的,很容易确定目标计算机大致处于哪个子网,但是在局域网中,IP地址是动态分配的,可能下一次发送信息可能就不是上一次的计算机了,所以此时需要和MAC进行配合。且正在处于分配IP地址的过程中的计算机没有MAC地址的话,就无法区分,导致分配IP失败。

使用IP和MAC配合

先根据IP确定发送端和接收端的ip,再根据IP使用ARP确定下一跳的网络设备的MAC(如果不在同一个数据链路,这个网络设备就是路由器),最后到达接收端的子网时再确定最后一跳的MAC地址即确认了接收端了。

其他

对于路由器而言,每个路由器都需要有两个MAC地址,一个是负责收,一个负责发。
还有关于TTL:

TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。

为什么介绍这个名词呢?TTL的主要作用是避免IP包在网络中的无限循环和收发,节省了网络资源,并能使IP包的发送者能收到告警消息。最大值为255,具体值由发送端自己指定。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值