在我們的家庭網(wǎng)絡(luò)中,有許多的網(wǎng)絡(luò)設(shè)備,比如我們可以有兩臺(tái)計(jì)算機(jī)A和B, 一臺(tái)手機(jī)一臺(tái)電視機(jī),他們都連接到了路由器上,并且路由器都過運(yùn)營商線路,接入了因特網(wǎng)。
在這個(gè)網(wǎng)絡(luò)模型中,有許多的應(yīng)用場(chǎng)景。比如計(jì)算機(jī)A和計(jì)算機(jī)B之間可以互相發(fā)送文件、手機(jī)可以通過APP控制電視、電視機(jī)訪問計(jì)算機(jī)A上共享的影片、計(jì)算機(jī)和手機(jī)訪問互聯(lián)網(wǎng)上的網(wǎng)站。在家中通過VPN連接到公司內(nèi)網(wǎng)進(jìn)行工作等等。以上幾種工作場(chǎng)景都脫離不了一件事,就是通過網(wǎng)絡(luò)進(jìn)行通信。
聽到IP地址這個(gè)概念,想必大家都不會(huì)陌生。如果我們想要和對(duì)方進(jìn)行通信,通常我們需要知道對(duì)方的IP地址。但是在網(wǎng)絡(luò)通信中,還有一個(gè)非常重要的地址MAC地址,它在網(wǎng)絡(luò)中提到了至關(guān)重要的作用。到底IP地址和MAC地址是多少?他們又是如何起作用的?
在現(xiàn)實(shí)生活中,我們?nèi)绻o對(duì)方寫信,除了信件內(nèi)容以外,還需要填寫信封地址。信封有兩個(gè)重要信息。一個(gè)是收件地址,一個(gè)是收件人。收件地址表示這封信要寄到哪里?收件人表示信要寄給誰?同樣的道理,在網(wǎng)絡(luò)世界中,我們要發(fā)信息給別人,也需要知道收件地址、收件人。他們就是MAC地址和IP地址。MAC地址就是收件地址,IP地址就是收件人。
映射到上面的例子,比如說海翎光電的小編我,我是一個(gè)可以活動(dòng)的人,我可以住在自己家,也可以住在公司,也可以住在父母家。如果你要給我寫信,首先要知道我現(xiàn)在住在哪里?在網(wǎng)絡(luò)中也是這樣的,如果把網(wǎng)絡(luò)比喻為我們生活的城市,那網(wǎng)卡就是城市中的建筑,MAC地址就是這些物理建筑的地址。而IP地址就是這些建筑中的人。
與寫信不同,在計(jì)算機(jī)網(wǎng)絡(luò)中發(fā)送信息,我們只需要填寫內(nèi)容和對(duì)方的IP地址,操作系統(tǒng)會(huì)根據(jù)目標(biāo)IP自動(dòng)查詢arp表獲取對(duì)方的MAC地址補(bǔ)齊這封信,從網(wǎng)卡發(fā)出。
雖然計(jì)算機(jī),手機(jī),電視機(jī)他們是不同類型的電子產(chǎn)品,但是他們的通訊,都是由內(nèi)部的網(wǎng)卡設(shè)備所進(jìn)行的。所以我們統(tǒng)一用網(wǎng)卡來表示設(shè)備。每張網(wǎng)卡在出廠時(shí)都寫入一個(gè)地址,就是MAC地址。這個(gè)地址是由6個(gè)字節(jié)構(gòu)成的。其中前3個(gè)數(shù)表示的是網(wǎng)絡(luò)硬件廠商編號(hào),由(IEEE)國際性電子技術(shù)與電子工程師協(xié)會(huì)分配。后3個(gè)字節(jié)代表的是該制造廠商所制造的網(wǎng)卡的序列號(hào)。所以MAC地址是全球唯 一的地址。雖然可以通過一些其他手段修改MAC地址,但不在我們的討論范圍。
我們上面說了,MAC地址表示了網(wǎng)卡在網(wǎng)絡(luò)中的確定位置,那這個(gè)位置是如何表示與確定的呢?比如我們的計(jì)算機(jī)A,通過網(wǎng)線接入到了交換機(jī)的端口1,那這個(gè)端口1就是網(wǎng)絡(luò)中的具體位置,就像我們的門牌號(hào)一樣。交換機(jī)就知道了某個(gè)MAC地址在端口1上,從而就把MAC地址與端口進(jìn)行了綁定。
我們的網(wǎng)卡接入網(wǎng)絡(luò)中,如果要通信需要給他配置另一個(gè)地址,就是IP地址。IP地址有兩種,IPV4地址和IPV6地址。比如我們常用的192.168.1.N,這就是IPV4地址。由4位0-255的數(shù)字,用小數(shù)點(diǎn)間隔構(gòu)成。目前IPV4的技術(shù)可以使用的IP地址有42億,看上去像是很難用盡,但由于早期編碼和分配上的問題,很多區(qū)域的編碼實(shí)際上被空出或不能使用。隨著互聯(lián)網(wǎng)的快速成長,IPV4的42億個(gè)地址zui終于2011年2月3日用盡。相應(yīng)的科研組織已經(jīng)研究出128位的IPV6其IP地址的數(shù)量可達(dá)3.4*10-38個(gè),屆時(shí)每個(gè)人家中的每個(gè)網(wǎng)絡(luò)設(shè)備,甚至地球上的每一粒沙子都可以擁有自己的IP地址。
現(xiàn)在我們知道了,網(wǎng)卡上需要配置好IP地址才可以工作。這時(shí)候又有朋友要問了,我的電腦接上網(wǎng)線或者手機(jī)連上路由器之后,沒有讓我配置IP地址也可以正常使用啊?這是因?yàn)橛煞Q之為dhcp的協(xié)議自動(dòng)幫我們配置了。當(dāng)電腦插上網(wǎng)線或者手機(jī)連入到WIFI操作系統(tǒng),網(wǎng)絡(luò)協(xié)議棧會(huì)自動(dòng)向外發(fā)送一包DHCP請(qǐng)求,請(qǐng)求為其分配IP地址。路由器獲取到DHCP請(qǐng)求后,會(huì)為其分配一個(gè)IP地址,并通過DHCP回復(fù)報(bào)文發(fā)送回去。操作系統(tǒng)收到了DHCP回包后,將其分配的IP地址配置到網(wǎng)卡上。注意在一個(gè)局域網(wǎng)中IP地址也是唯 一的,路由器不會(huì)分配重復(fù)的IP地址給不同的設(shè)備。
當(dāng)然你也可以手動(dòng)把DHCP關(guān)掉,這樣你需要手動(dòng)來配置網(wǎng)卡IP地址,但是你要保證你配置的IP地址不能與此網(wǎng)絡(luò)中的其他地址重復(fù),這樣網(wǎng)卡就配置好了IP地址。
我們上面提到,MAC地址是由操作系統(tǒng)來補(bǔ)齊的,那操作系統(tǒng)是如何知道對(duì)方的MAC地址的?實(shí)際上這一步是用arp協(xié)議來完成的。當(dāng)計(jì)算機(jī)A想向計(jì)算機(jī)B發(fā)送消息時(shí),操作系統(tǒng)并不會(huì)立即發(fā)出,他會(huì)先發(fā)送一包arp廣播報(bào)文出去,問一下192.168.1.10的 MAC地址是多少,此時(shí),網(wǎng)絡(luò)中的所有設(shè)備都收到了這一包請(qǐng)求報(bào)文。除了192.168.1.0以外的設(shè)備都會(huì)丟棄這包請(qǐng)求報(bào)文,只有192.168.1.10會(huì)回復(fù)自己的MAC地址是多少,計(jì)算機(jī)A收到了回復(fù),知道了計(jì)算機(jī)B的MAC地址,他首先會(huì)把計(jì)算機(jī)B的MAC地址緩存起來,以便下次使用。然后把這封信補(bǔ)全從網(wǎng)卡發(fā)送出去,交換機(jī)根據(jù)數(shù)據(jù)包中的目標(biāo)的MAC地址找到了計(jì)算機(jī)B所在的端口,從此端口發(fā)送出去,數(shù)據(jù)就被B收到了。
收起