IPv4快枯竭了,于是提出了IPv6方案。

使用了6位元组网路地址。1. 这样看来,每台主机都可以固定唯一地址,或者干脆用MAC地址作为IP好了,这样不但实现了固定IP,也勉去了分派IP的机构;2. 既然地址都6个位元组,搞个变长地址也不是问题啊,例如可以1~32位元组,这样就可以直接使用主机名作为网路地址了。这样也勉去了那个让人操心的DNS了。这样,不就省去两张表了吗。

可是,IPv6为什么没有这么做?


答主这个思路,是一种理想情况下的设计。

你当然可以把 MAC 地址作为 IP,也可以搞变长的 IP。甚至一步到位,把通信的两台主机直接相连,那就连 IP 都不要了。(此处不适用无线通信)

软体设计中,分好多层是为了做抽象,抽象是为了解耦和复用。简单说就是为了互相不影响,互相不影响的目的是为了互相替换。

我给你举个例子。

你点了一份外卖,过了一会儿,快递员给你送到了。

你当然可以要求,必须指定的某个人送给你,而且必须是店里某个厨师做的,而且必须用某个地里产出的菜,而且必须走科技二路十字路口,而且必须5分钟送到。

这没什么不可以,就是有点贵。

省钱的方式是啥?

做抽象。

我们把你点外卖这个动作抽象为两个服务:外卖快递.service 和饭店.service。

饭店.service 负责做饭,他可以叫某个人做,也可以机器做,也可以从别的店买,可以在五星级酒店做,也可以在地下室小阴沟做,怎么做都行,对你来说,只要他能提供饭,他就叫饭店。

外卖快递.service 负责送饭,男人送可以,女人送也可以,骑车走路送都行,机器送也行,无人机空投也行,只要他能送到,他就叫外卖快递。

同样的,如果你在办公室上班,外卖快递.service 也对你做抽象。只要给了钱,指定一个可达的地方,就可以送。他不知道你是谁,甚至不知道是不是你们办公大楼的一条狗。他可以送到办公室,也可以送到坟头,甚至送到行进中的地铁车厢都没问题。钱给够,送火星都可以。在快递公司眼里,你叫 客户.client

注意,关键的来了。

快递.service 是可以复用的,你点外卖是这个人送,淘宝买东西也是这个人。特么的高中生跨学校递情书都是这个人。这个人什么都能送!也就是说,在你眼里他是外卖快递,在淘宝买家眼里他是淘宝快递,在高中生眼里他是情书快递。而且,他给你送的时候不止送你一个人,把你公司的20个人的饭都送了!瞬间一个快递.service变成20个快递.service。这个无所不能的快递用我们 IT 界的专业术语叫做:快递.微服务。

所以你看到了,指定 IP 地址为 MAC 地址就和指定某个快递员专门给你送快递一样,是低效的。虽然这样的话,就不需要快递公司了。

变长地址相当于,你非要把中山大学地址写成双鸭山,虽然没错,是不是增加了快递的成本呢?大家都这么搞,快递是不是要涨价?

你说,不仅变长,而且跳过 DNS,直接做地址。对,你当然可以跳过快递,让店家直接送饭给你。本来人家一天能做200份饭,现在因为要自己送,一天只能做5份了。要是你你乐意么?

过了一个月,快递公司研发出来无人机送快递,顶20个人,一台20万。而你只是个卖凉皮的,月收入3万,这个时候你咋办?


Mac可没有保证全世界不重复,实际上你可以自己随意改,只要同一子网内不重复即可。

IP地址是可以全世界导航的,Mac无法做到。

即便是有DNS,伺服器也尽量用固定IP,但伺服器硬体会换,但是IP可以不变。

你的笔记本Mac不会变,但是你会拿著全世界走,如果IP保持不变,别人不知道怎样找到你。


其实这个问题可以翻译成为什么在网路层新加一个IP逻辑地址,而不直接使用MAC地址或主机名进行网路中的唯一ID进行通信?

其实最主要的一点是为了方便路由器存储路由信息,IP是跟地域相关的地址标识。一整段连续的IP聚合成一个子网连接在路由器上,路由器上也只要针对这一个子网(x.x.x.x/x)存储一条路由信息,告诉报文,下一跳该往哪里走。

假设使用MAC地址进行转发,由于MAC地址只是跟设备相关,同一子网下主机的MAC地址可能毫无关联,这样无法做到聚合,那么路由器针对每个互联网上地址都需要一条路由信息,这个无论是在信息存储或者路由信息学习的难度都是无法想像的。

归结为一点就是设计IP是为了将连续的IP地址段做聚合,减少路由数目。


1、根据OSI参考模型MAC和IP不在一层,谁也不能取代谁,这是网路的基本公约。

ipv6 128比特,mac地址48比特。而且MAC地址中前24比特用来区别厂家,那么其实就只有24比特可用。

2、dns是干嘛的?

做域名解析。

为什么要解析?

因为访问百度的时候如果每次都输入ip,大家记不住。换成http://www.baidu.com就比较好记。


思考了一下,自己先来答一波~

如果网路地址使用MAC,那么伺服器换机器了,MAC就变了。如果网路地址使用主机名,那么想改主机名那就困难了。可是主机名要求可变且有意义。看来,IP互联协议的设计都是有道理的啊。欢迎大家一起学习,一起思考~

定址是个大问题


原因如下

1.各层做各层的事情,网路层的东西与链路层硬搅和到一堆干嘛?

2.实际上IPv6地址分配,也分有状态与无状态方式。了解下?

3.问题说到的MAC 48位地址编码,主要是指乙太网链路层MAC地址编码。不是所有类型网路链路层都这样玩的


推荐阅读:
相关文章