博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如果重新设计网络,有没有可能合并IP地址跟MAC地址?
阅读量:5163 次
发布时间:2019-06-13

本文共 1114 字,大约阅读时间需要 3 分钟。

前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一?
 
现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一跳的mac地址”做对照,确定了要往哪边扔;网卡在接收数据的时候,也会看看这个数据包中记录的目标MAC地址是不是自己,只接收自己的。
 
MAC地址是数据链路层使用到的,IP地址是网络层使用到的。MAC地址是硬件的物理属性,在网卡上固定不变,IP地址是逻辑属性。
所以,因为网络分层的设计,很自然的就想到要使用两个不同的“地址”。那么,这里有没有可能让两个层次使用同一个东西呢?数据链路层也可以直接采用IP就够了?这就相当于是一个可变的MAC地址,毕竟接收端可能是笔记本,会到处跑。
 
假设只采用IP,那么为了保证数据正确到达某台电脑,IP地址就需要跟某个接收端绑定,一旦发生变化,就需要接收端告诉网络,我是某某IP,这个还好,毕竟现在路由在转发数据包时,也是根据mac跟IP绑定来转发,有定时刷新机制。这样子路由表里头就是IP集合跟下一步要转发的目标路由IP的映射关系,
这里说的IP,就不是当前网络世界的虚拟属性了,它就既有物理属性又有逻辑属性,代表了网络层的逻辑属性,又代表了物理网卡。没有mac地址跟ip地址的映射,想想是不是简化了很多?
 
假设只采用mac地址,由于mac地址的值跟它所处网络位置是没有关联的,不像IP地址那样前几位相同的往某个路由转发就好,所以如果只用mac地址,就需要路由器记录着的映射关系是:下一步路由mac地址:该路由内的所有接收端mac地址,路由转发时,需要遍历比较所有的接收端mac地址,确定下一步的走向。明显,会导致逻辑变得非常复杂,性能也很低下。假设处于一个小的局域网内,那么只使用mac地址,没有问题,但涉及到很广阔的网络,就不行了。
 
如果把IP跟MAC合二为一,那么就相当于网卡上的mac地址是一个动态变化的值,它来自运营商分配的IP。有问题吗?目前以我的理解应该可以。不知道高手怎么看?
我看到网络上的很多回答,都有预设前提的错误,譬如:有一本书介绍必须有mac时,就先预设了“主机通过mac地址标识”,而没有从根本上考虑,也许主机使用IP地址标识的,mac地址根本不存在。
 
以上只是胡思乱想。
也许IP+MAC组合是因为历史原因,IP可以统一所有的各种物理网络,而MAC可能只是物理网络的一种。
分层是有好处的,有句名言:计算机领域的任何难问题,都可以通过增加一个分层解决。用在这里挺合适的。
 

转载于:https://www.cnblogs.com/cswuyg/p/3815787.html

你可能感兴趣的文章
中心点放大
查看>>
青春是条不归路
查看>>
区分类型(分类)
查看>>
JVM之参数分配详解
查看>>
jvm死锁解决
查看>>
bcdiv bcmul
查看>>
winsock 服务器代码(不建议win服务器listen防火墙会禁止外部访问的)
查看>>
无限滑动
查看>>
阿里云产品术语和docker
查看>>
干货100+ 最超全的web开发工具和资源大集合
查看>>
事件DOMContentLoaded和load的区别
查看>>
repeater灵活运用、repeater的commmand用法、如何不用repeater展示数据
查看>>
MySQL计算销售员昨日各指标综合得分_20161206
查看>>
Django ORM 多表操作
查看>>
centos6.5下使用yum完美搭建LNMP环境(php5.6) 无脑安装
查看>>
linux中的 tar命令的 -C 参数,以及其它一些参数(转)
查看>>
BZOJ 1572 [Usaco2009 Open]工作安排Job:贪心 + 优先队列【先放再更新】
查看>>
APN 推送
查看>>
Python的垃圾回收机制
查看>>
Cocos Creator 组件-动作Action
查看>>