IPv4与MAC地址重复了吗?只用IPv6可以吗?

IP地址与MAC地址

本文主要围绕下面两个问题:
1. IP地址和MAC地址是否冗余了,仅用一个地址行不行
2. IPv6号称能够为地球上的每一粒沙子分配一个IP地址,那么能不能用它来实现仅用一个地址的网络呢?

首先对第一个问题进行分析,仅选择IP地址或者MAC地址的其中一个进行路由行不行呢。IPv4肯定是满足不了这个条件的,因为IPv4本来就不够分,现在这么多技术包括NAT、CIDR等等都是在为了能够在地址总量有限的情况下能够尽可能的重复利用IPv4地址。那么仅用MAC地址行不行呢,毕竟MAC地址有48位,在现有环境之下能够保证全球唯一性,那么取消掉32位的IP地址直接使用MAC地址行不行呢?

MAC地址常常因为其全球唯一性而被比喻为一个人的身份证号,路由的过程被比喻为送快递的过程,那么答案显而易见了,如果这个世界上的快递都只有收件人和发件人的身份证号码(假设世界上每一个人都被分配了一个唯一的身份证号码),快递员还怎么送快递呢?

所以说只使用MAC地址理论上是可行的但是不现实。事实上造成这个的原因是因为每一张网卡的MAC地址是厂家出厂的时候分配的,这张网卡日后有可能到达世界上任何一个角落,这就使得MAC地址和地域完全没有关系,而路由(route)的代价恰恰与地域距离紧密相关。试想一下每个路由器都要记录全球所有MAC地址在路由表中,那就是有2的48次方条记录,就算每条记录只有一个字节,那都会占用2的36次方tb的空间,更别说路由时候产生的开销了。
况且最重要的是,因特网一开始只是美国几个大学搞的东西,当时根本就没有想到会被全球范围内使用。因此现有的TCP/IP体系是逐步完善形成的,以及考虑到当时的历史环境和技术水平,使得同时采用IP地址和MAC地址是综合代价最小的方案。

那么退一步来说,如果我们重构全球互联网的体系,也就是将osi七层模型从头设计,能不能只使用一个地址呢?如果让你来当这个设计者,你会怎么想呢?

首先,这个地址肯定是要地域相关的,就是可聚合的(IPv6借过来的概念),简单来说就是一个地方的IP地址都要同一个前缀,范围越大前缀越短,比如中国就一个前缀,然后具体下去每个省每个地区再细分,这样才能实现可路由。其次,这个地址要足够的多,能够在可见的未来满足整个世界对ip地址的需求。其实上面两点,IPv6都满足了,各种可聚类的,单播任播多播等等很多概念都满足了,简直完美啊,那直接拿过来用不就得了?事实上,还有一个重要的问题我们没有解决,那就是设备移动导致的IP地址变更的问题。

用网购来打一个不太严谨的比喻,IP地址就像是你的收货地址,而MAC地址就是你的名字和个人手机号码,你有可能有多个收货地址但是收货人和手机号码基本上是唯一的,比如收货地址可能同时有家里、公司、学校等,但是收货人都是你自己。也就是说,IP地址是不断变更的,这是保证其灵活性和可聚合性的必要条件,而MAC地址则不然。

小到从家里到商场,大到从广州到北京,人的流动也会带来大量电子设备地域的变更,这样相应电子设备的IP地址就不可避免的要变更,因为IP地址是地域相关的,切换子网必然会导致IP地址的变化。假设某台设备在子网1下IP地址为A,现在它迁移到了子网2下,IP地址变成了B。那么它必须向大家通告这一情况,在只有一个地址的情况下,我们还要做验证身份的工作来确定这台设备就是原IP地址的拥有者。当然了,这一问题也不是不可解决,上面所举的例子也很局限,但是它也反映了单一地址带来的问题。

总之,单一地址的方案理论上是可行的,但是相应的代价太大。况且现有的ipv6支持和MAC地址的相互映射,就像是让MAC子层成为了IP层的一部分。总之,IP地址和MAC地址双地址并行的方案是目前来看互联网的最优解,而且其本身也在不断的进化之中。

你可能感兴趣的:(计算机网络)