題記:既生亮何生瑜。
摘要:標題雖然是為了解釋有了 IP 地址又碌,為什么還要用 MAC 地址九昧,但是本文的重點在于理解為什么要有 IP 這樣的東西。本文對讀者的定位是知道 MAC 地址是什么毕匀,IP 地址是什么铸鹰。
一開始時,網(wǎng)絡(luò)中的機器并不多皂岔。大家都連到同一個集線器就可以了蹋笼,就可以實現(xiàn)互通。這時躁垛,機器 A 發(fā)消息到機器 B 剖毯,消息頭里附上機器 B 的MAC,集線器收到消息后就廣播給所有連到集線器的機器教馆。
機器 C 收到消息逊谋,發(fā)現(xiàn)消息里的 MAC 地址和自己的不一樣,就丟棄土铺。機器B發(fā)現(xiàn)消息里的 MAC 地址和自己一樣胶滋,就收到下并解析板鬓。
這樣機制帶來問題很明顯:首先每次廣播,給所在網(wǎng)絡(luò)帶來不必要的浪費究恤。所以俭令,就出現(xiàn)了交換機。它能識別消息里的目標 MAC 地址后部宿,直接就消息丟到機器 B 所連接的端口中抄腔。另一個角度,交換機必須記住所有的 MAC 地址和端口之間的關(guān)系窟赏。
這樣的機制在網(wǎng)絡(luò)規(guī)規(guī)模小的時候是高效的妓柜。但是當網(wǎng)絡(luò)規(guī)模擴大到全球的時候,不可能讓一臺交換機記錄下全球這么多的網(wǎng)絡(luò)設(shè)備涯穷,也不可能讓全球的機器連接到一臺交換機上棍掐。
那如果是多臺交換機呢?
想像一下拷况,你是斯坦福的學(xué)生作煌,你的電腦 x 的網(wǎng)絡(luò)直連的是學(xué)校的交換機,而學(xué)校的交換機又連美國國家網(wǎng)絡(luò)交換機赚瘦。而美國國家網(wǎng)絡(luò)交換機又直接的是中國國家網(wǎng)絡(luò)交換機粟誓,中國服務(wù)器 y 直連的是中國國家交換機。
你想訪問中國的服務(wù)器 y 中的資源起意。你了解到服務(wù)器 y 的 MAC 地址是00:0C:29:01:00:12鹰服,所以你在消息里附上這個 MAC 地址。
學(xué)校交換機收到消息后揽咕,拿到 MAC 地址后就愣了悲酷,這是要發(fā)給誰啊亲善?因為中國服務(wù)器 y 并不是直連學(xué)校交換機的设易。這時,學(xué)校交換機有一個選擇蛹头,就是收到不明的 MAC 地址時顿肺,一律轉(zhuǎn)發(fā)給默認端口。斯坦福交換機就將消息轉(zhuǎn)給美國國家交換機渣蜗。
美國國家交換機同樣發(fā)愣了屠尊,因為沒有這條 MAC 地址對應(yīng)的端口。它又直接向默認端口:中國國家網(wǎng)絡(luò)交換機袍睡。
中國國家網(wǎng)絡(luò)交換機收到消息知染,發(fā)現(xiàn)自己記錄了 MAC 地址 對應(yīng)的是服務(wù)器 y。就直接將你這位斯坦福學(xué)生的消息轉(zhuǎn)發(fā)到服務(wù)器 y 所連接的端口。
最終块攒,我們的服務(wù)器 y 終于收到來自美國斯坦福學(xué)生的資源訪問請求缎玫。
那么外恕,我們的服務(wù)器 y 如何將相應(yīng)的資源返回給學(xué)生呢瓦宜?將消息中的源MAC 地址作為響應(yīng)消息的目標 MAC 地址發(fā)送給中國國家交換機不就可以了矫限?同樣的機制法绵,只不過是把源地址和目標地址反一下凭戴。
這下涧狮,我們是不是完美實現(xiàn)使用交換機組建美國網(wǎng)絡(luò)和中國網(wǎng)絡(luò)的互通?
但是美國和中國并不能代表全世界么夫。其他國家也需要加入這個大網(wǎng)絡(luò)者冤。當日本國家交換機也接入美國國家交換機后,斯坦福學(xué)生的消息從學(xué)校到達美國國家交換機后就需要進行廣播所有直連自己的端口了档痪,因為這時涉枫,它沒有對外的所謂默認端口了。這里有點燒腦腐螟,容各位同學(xué)一點時間思考愿汰。
也就是說,當兩個網(wǎng)絡(luò)互接時乐纸,MAC 地址 + 交換機還能解決問題廣播問題衬廷,但是兩個以上的網(wǎng)絡(luò)互連時,MAC 地址 + 交換機就沒有辦法解決廣播問題了汽绢。
這時吗跋,我們面臨的問題就是無法使用現(xiàn)有的技術(shù)—— MAC 地址 + 交換機——解決多網(wǎng)絡(luò)互連的問題了。所以宁昭,需要發(fā)明一種新的技術(shù)跌宛。
而 IP 協(xié)議就是就是解決此問題的一項技術(shù)。
事實上久窟,IP協(xié)議的產(chǎn)生并不只是為解決上述的“廣播問題”秩冈。還解決了很多其他網(wǎng)絡(luò)傳輸過程會遇到的問題,比如一次傳輸?shù)南⑦^大時斥扛,如何對消息進行分組等問題入问。
小結(jié)
由于歷史原因,MAC 地址及相關(guān)技術(shù)先出現(xiàn)稀颁,但是后來發(fā)現(xiàn)它并不能解決所有(已知)的問題芬失,所以,先驅(qū)們發(fā)明了 IP 地址及相關(guān)技術(shù)來解決匾灶。
另一個角度棱烂,個人認為,由于 MAC 地址沒有辦法表達網(wǎng)絡(luò)中的子網(wǎng)的概念阶女,而 IP 地址可以颊糜。如果網(wǎng)絡(luò)互換設(shè)備(比如路由器)能從目標 MAC 地址中分析出目標網(wǎng)絡(luò)哩治,而不是只是目標主機,IP 地址還會出現(xiàn)嗎衬鱼?
有另一個有趣的問題:如果歷史反過來业筏,一開始就使用的是 IP 地址,而不是 MAC 地址鸟赫,我們現(xiàn)在的網(wǎng)絡(luò)世界會怎么樣蒜胖?
[未完]