前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有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可能只是物理网络的一种。
分层是有好处的,有句名言:计算机领域的任何难问题,都可以通过增加一个分层解决。用在这里挺合适的。
 

如果重新设计网络,有没有可能合并IP地址跟MAC地址?的更多相关文章

  1. 网络协议 2 - IP 地址和 MAC 地址

    了解完网络协议,我们会发现,网络通信的五层模型里,有两个很重要的概念:IP 地址和 MAC 地址. 那么 IP 地址是怎么来的,又是怎么没的?MAC 地址与 IP 地址又有什么区别? 这回答上面问题前 ...

  2. 计算机网络之IP地址与MAC地址

    IP地址 IP地址(Internet Protocol Address): 缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址. 它为互联网 ...

  3. (转载)详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    郑重声明:原文转载于http://dengqi.blog.51cto.com/5685776/1223132 向好文章致敬!!! 一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理 ...

  4. 为什么同时需要IP地址和MAC地址

    每个以太网设备在出厂时都有一个唯一的MAC地址,为什么还需要为每台主机再分配一个IP地址?或者说每台主机都分配唯一的IP地址,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC ...

  5. 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  6. IP,IP地址,mac地址

    IP地址与IP是两个不同的概念.单独讲IP,是指IP协议 IP地址分为三类:单播地址(目的为单个主机):多播地址(目的端为同一组的所有主机):广播地址(目的端为网络上所有给定的主机) ip地址由网络和 ...

  7. 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dengqi.blog.51cto.com/5685776/1223132 一:M ...

  8. IP地址、MAC地址及端口

    概述: IP 是地址,有定位功能(网与网的通讯)     (在逻辑上唯一标识一台电脑)(网络层) MAC 是身份证,无定位功能(在子网干活)(在物理上唯一标识一台电脑) (链路层) 首先是如何查看ip ...

  9. 关于IP地址与MAC地址(网卡硬件地址)的区别小谈

    IP地址是指Internet协议使用的地址,而MAC地址是Ethernet协议使用的地址. IP地址与MAC地址之间并没有什么必然的联系,MAC地址是Ethernet NIC(网卡)上带的地址,为48 ...

  10. IP地址和MAC地址绑定的必要性

    计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...

随机推荐

  1. 11.写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

    //首先列出需要被操作的url     $url_path = "http://www.sina.com.cn/abc/de/fg.php?id=1";     方法一:     ...

  2. zTree插件之多选下拉菜单代码

    zTree插件之多选下拉菜单代码 css和js <!--ztree树结构--> <link rel="stylesheet" type="text/cs ...

  3. Material Design Lite,简洁惊艳的前端工具箱 之 布局组件。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...

  4. Android Studio 常见问题之Rendering Problems

    1.有时会出现下面的问题: 可以按如下解决 点击任何一项即可

  5. [Effective JavaScript 笔记]第65条:不要在计算时阻塞事件队列

    第61条解释了异步API怎样帮助我们防止一段程序阻塞应用程序的事件队列.使用下面代码,可以很容易使一个应用程序陷入泥潭. while(true){} 而且它并不需要一个无限循环来写一个缓慢的程序.代码 ...

  6. 在C#中??和?分别是什么意思?

    在C# 6.0中,引入了一个 ?. 的运算符,前面的代码可以改成如下形式: int? firstX = points?.FirstOrDefault()?.X; 从这个例子中我们也可以看出它的基本用法 ...

  7. python发送邮件方法

    1.普通文本邮件 #!/usr/bin/env python # -*- coding:utf-8 -*- import smtplib from email.mime.text import MIM ...

  8. Java虚拟机学习(2):垃圾收集算法

    跟踪收集器 跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC  Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC  Roots 没有 ...

  9. noi 2989 糖果

    题目链接:http://noi.openjudge.cn/ch0206/2989/ 首先,数据很大,直接用背包会re. 这里增加的是对%k 的余数维度.f[i][j] 表示前 i 种糖果取到总颗数模 ...

  10. (7) 深入了解Java Class文件格式(六)

    转载:http://blog.csdn.net/zhangjg_blog/article/details/21888943 经过前几篇文章, 终于将常量池介绍完了, 之所以花这么大的功夫介绍常量池, ...