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地址編碼。不是所有類型網路鏈路層都這樣玩的


推薦閱讀:
相关文章