2018-3-28Linux系统管理(16)计算机网络基础
??在這一章當(dāng)中我們講述計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)。
一、計(jì)算機(jī)網(wǎng)絡(luò)
??網(wǎng)絡(luò)通信就像人與人之間的交流一樣,說(shuō)同一種語(yǔ)言,而后雙方進(jìn)行無(wú)障礙的通信交流,那么兩臺(tái)主機(jī)通信時(shí),它們彼此交換數(shù)據(jù)的格式的前提為互相理解才可以,我們此前也有了解到,當(dāng)兩臺(tái)主機(jī)在交換數(shù)據(jù)時(shí),一般而言這個(gè)數(shù)據(jù)為流式數(shù)據(jù),或者叫做可流式化的數(shù)據(jù),簡(jiǎn)單來(lái)講假如在本地放的是一個(gè)文件,這個(gè)文件是由文本流組成的,我們需要將這個(gè)文本文件的文本流將其抽成絲兒,一個(gè)位一個(gè)位轉(zhuǎn)換成1和0組成的二進(jìn)制格式,這樣才能在線路介質(zhì)上進(jìn)行傳輸,那么對(duì)于這臺(tái)主機(jī)之間,我們只需知道需要數(shù)據(jù)完成交換時(shí),也有一種傳輸介質(zhì),這種傳輸介質(zhì)可以是有線的,常見(jiàn)的有以太網(wǎng)網(wǎng)線,在以太網(wǎng)未出現(xiàn)之前早期使用的是同軸電纜來(lái)實(shí)現(xiàn)信號(hào)傳輸,到今天為止還有另外一種更為常用的就是基于電磁波信號(hào)來(lái)進(jìn)行傳輸?shù)?#xff0c;這其實(shí)都是傳輸信號(hào)的一種方式,來(lái)實(shí)現(xiàn)其信號(hào)交換的機(jī)制。
??無(wú)論是用那種信號(hào)方式進(jìn)行傳輸,必然的是,當(dāng)傳送方發(fā)出信號(hào)后,接收方必須能理解對(duì)方是如何傳送的,真正傳送文件時(shí),文件大小在本地的容量有所不同,假設(shè)要傳輸五個(gè)文件到另一臺(tái)主機(jī)上,則必須要界定文件的開(kāi)始和結(jié)尾處,這實(shí)際上兩臺(tái)計(jì)算機(jī)之間要想完成數(shù)據(jù)傳輸并且讓對(duì)方做到精確理解時(shí),通過(guò)網(wǎng)絡(luò)傳輸無(wú)非就是二進(jìn)制01的信號(hào),傳達(dá)給對(duì)方之后,對(duì)方如何理解并還原成原來(lái)的文件就變得至關(guān)重要,但是兩臺(tái)主機(jī)之間為了完成信號(hào)傳輸需要解決的問(wèn)題有很多,不光是文件本身的格式,還要恢復(fù)原來(lái)的樣子也是一個(gè)問(wèn)題,比如在傳輸信號(hào)過(guò)程中萬(wàn)一線路收到干擾,導(dǎo)致信號(hào)傳遞失敗該如何解決,還有雙方在實(shí)現(xiàn)數(shù)據(jù)交換時(shí),如果一方發(fā)的速度很快,而另一方接收很慢,這樣的話,發(fā)送方的數(shù)據(jù)流會(huì)將接收方給淹沒(méi),導(dǎo)致數(shù)據(jù)丟失,因此這里面有許多復(fù)雜的問(wèn)題。
??實(shí)際上,在現(xiàn)在的互聯(lián)網(wǎng)當(dāng)中所使用到的協(xié)議為TCP/IP協(xié)議,TCP/IP其實(shí)不是一個(gè)協(xié)議,它是一個(gè)協(xié)議簇,也可以稱之為協(xié)議棧,因?yàn)樵谶@里涉及到許許多多的協(xié)議,那么協(xié)議可以理解為是一種標(biāo)準(zhǔn)或規(guī)范,就是雙方事先商定的一種組織機(jī)制,并協(xié)調(diào)的一種機(jī)制。
??對(duì)于計(jì)算機(jī)來(lái)講,要想了解網(wǎng)絡(luò)的話,就得需要深度參與進(jìn)去,需要人為的參與,因?yàn)檎驹谧匀唤嵌葋?lái)講,它們是沒(méi)有辦法能夠自行解決的,因此計(jì)算機(jī)網(wǎng)絡(luò)上的主機(jī)與之間,完成信息交換時(shí)也講過(guò)這是一個(gè)很復(fù)雜的問(wèn)題,不過(guò)可以將其化整為零,一個(gè)一個(gè)的逐個(gè)擊破,所以說(shuō)主機(jī)之間的通信所面臨的非常復(fù)雜的問(wèn)題,就得必須劃分層次,每一個(gè)層次逐一能夠單獨(dú)進(jìn)行解決,那么這就是協(xié)議分層的概念,而TCP/IP協(xié)議棧共有四層或五層(看人為理解),哪一種模型都不為錯(cuò),因?yàn)楸旧鞹CP/IP協(xié)議棧從設(shè)計(jì)上并不太規(guī)范,而OSI才是一個(gè)非常規(guī)范的協(xié)議棧,但是這并不能說(shuō)明TCP/IP是在計(jì)算機(jī)網(wǎng)絡(luò)中正在廣泛使用的協(xié)議棧,因?yàn)檫@個(gè)世界并非完美,不管黑貓白貓,抓到老鼠就是好貓。
??由于TCP/IP定制的不規(guī)范,而且該協(xié)議在概念上有很模糊,所以ISO(國(guó)際標(biāo)準(zhǔn)組織)就定制了OSI(開(kāi)放系統(tǒng)互聯(lián))參考模型,它也是個(gè)協(xié)議棧及協(xié)議規(guī)范,原先就是取代TCP/IP協(xié)議接口之間的不規(guī)范,而且接口之間交互及邊界模糊不清的目的,但并沒(méi)有取代,因?yàn)镺SI設(shè)計(jì)上是規(guī)范了,理解起來(lái)也清晰了,但是帶來(lái)的問(wèn)題就是該協(xié)議過(guò)于重量級(jí),為了接口規(guī)范,它在性能上做了許多妥協(xié),有些功能在OSI協(xié)議棧的內(nèi)部實(shí)現(xiàn)了多次,所以該協(xié)議比起TCP/IP來(lái)講有些過(guò)于重量級(jí),所以O(shè)SI就成為了學(xué)習(xí)的模型,但TCP/IP是一個(gè)使用中的模型。
??計(jì)算機(jī)通信是需要協(xié)議的,而就在之前講過(guò),它們之間的問(wèn)題太復(fù)雜了,所以將大問(wèn)題分割成為了小問(wèn)題,而這些小問(wèn)題彼此之間交接起來(lái)來(lái)完成,就像收發(fā)快遞一樣,如果我們將一個(gè)包裹從A地發(fā)往B地的話,有以下方式:第一,親自跑到B地,不過(guò)這樣很麻煩,那么如果可以讓包裹可以飛起來(lái)的話,則解決了很多麻煩,至于如何飛肯定是由第三方機(jī)構(gòu)所為我們提供,那么A和B為了完成物品交換的問(wèn)題,有一些物流公司來(lái)解決這樣的一個(gè)問(wèn)題,幫我們提供數(shù)據(jù)交換的服務(wù),那么對(duì)于A來(lái)講,為了發(fā)送包裹給B,只需調(diào)用物流公司的接口,也就是說(shuō)自己去還是上門取件,這就是接口調(diào)用的機(jī)制,至于如何傳送的,無(wú)需關(guān)心,只關(guān)心B是否接收成功就可以了。
??所以站在這個(gè)角度來(lái)講,物流就是社會(huì)實(shí)現(xiàn)物品交換的一個(gè)基礎(chǔ)設(shè)施即服務(wù),而對(duì)于計(jì)算機(jī)來(lái)講,為了完成數(shù)據(jù)能夠交換,我們最起碼有網(wǎng)卡這樣的接口,還需要有傳輸介質(zhì),無(wú)論是有線還是無(wú)線,可以理解為它們是為了實(shí)現(xiàn)通信的基礎(chǔ)設(shè)施,但我們應(yīng)該明白,基礎(chǔ)設(shè)置能夠傳輸很多物品,無(wú)論大到×××,小到一張紙發(fā)送給對(duì)方都可以的,不管你要傳輸什么物品,一般而言就能夠承載完成傳遞的任務(wù),同樣的道理,兩臺(tái)主機(jī)所實(shí)現(xiàn)的數(shù)據(jù)交換,不管你的數(shù)據(jù)形態(tài)是什么(大到電影,小到文件),這個(gè)介質(zhì)都能夠進(jìn)行傳遞,但傳遞過(guò)去之后,在傳遞過(guò)程中我們需要關(guān)注一些問(wèn)題,比如說(shuō)將數(shù)據(jù)打碎如何還原成原來(lái)的形態(tài),對(duì)于傳輸來(lái)講,這也是必須要這么做的一件功能,基于現(xiàn)代的通信交換通常都是按照位來(lái)進(jìn)行的,數(shù)據(jù)無(wú)論是什么形態(tài),最終都要流式化,所以雙方彼此之間要在協(xié)調(diào)與商定,如何將數(shù)據(jù)進(jìn)行流式化,以及如何還原。如果你的數(shù)據(jù)不能還原,避免出現(xiàn)這樣的問(wèn)題,則雙方都得需要某種協(xié)議,來(lái)定義數(shù)據(jù)的交換類型以及數(shù)據(jù)交換如何進(jìn)行,所以這里涉及到一些復(fù)雜的問(wèn)題。
??計(jì)算機(jī)傳輸?shù)倪^(guò)程我們無(wú)需關(guān)心,只要能將流式化的數(shù)據(jù)傳輸過(guò)去就可以,并且能夠還原回來(lái),但是如何還原需要了解物品的原生形態(tài)的問(wèn)題,這涉及到文件本身的組織格式,所以說(shuō)TCP/IP網(wǎng)絡(luò)也大致分為兩個(gè)層次,第一個(gè)為較低的層次是關(guān)心數(shù)據(jù)如何送往及傳輸?shù)墓δ?#xff0c;而第二層就是將數(shù)據(jù)是如何被組織起來(lái)的,站在另一個(gè)角度來(lái)講,我們的網(wǎng)絡(luò)被成為通信子網(wǎng)和資源子網(wǎng),所謂通信子網(wǎng)只是關(guān)心你的數(shù)據(jù)到底如何從該主機(jī)送往另一臺(tái)主機(jī),而所謂的資源子網(wǎng)主要關(guān)注的就是如何將數(shù)據(jù)組織起來(lái)。
??一般而言,對(duì)于TCP/IP來(lái)講,負(fù)責(zé)完成數(shù)據(jù)交換或完成通信的,就叫做通信子網(wǎng),無(wú)論有幾個(gè)層次,而負(fù)責(zé)文件類型數(shù)據(jù)內(nèi)部組織格式的,就叫做資源子網(wǎng)。
??簡(jiǎn)單闡述一下上面的內(nèi)容,其實(shí)就是為了完成數(shù)據(jù)交互及傳輸,于是就有了TCP/IP協(xié)議,以及提供了便于理解的OSI的學(xué)習(xí)參考模型,我們都需要去了解,但是我們需要了解的是,我們要對(duì)于一個(gè)復(fù)雜的問(wèn)題切割成多個(gè)小問(wèn)題,但兩臺(tái)主機(jī)進(jìn)行通信時(shí),在底層的物理結(jié)構(gòu)上,將其組織起來(lái)。
??但其實(shí)主機(jī)之間實(shí)際上不止有兩臺(tái),所以我們不考慮多臺(tái)的復(fù)雜問(wèn)題,只是考慮兩臺(tái)完成信號(hào)交換很容易,一方發(fā)送一方接收就可以了。但是對(duì)于計(jì)算機(jī)網(wǎng)絡(luò)來(lái)講,這件事情復(fù)雜很多,因?yàn)樵谝粋€(gè)網(wǎng)絡(luò)時(shí),組織的計(jì)算機(jī)是很多的,當(dāng)我們組織n臺(tái)主機(jī)在一起時(shí),如何將它們實(shí)現(xiàn)通信及傳輸信號(hào)也是個(gè)問(wèn)題,在施樂(lè)公司的PACK實(shí)驗(yàn)室里,他們研發(fā)了現(xiàn)代主流的以太網(wǎng)網(wǎng)絡(luò),那個(gè)時(shí)候的以太網(wǎng)網(wǎng)絡(luò)是一種使用同軸線纜,每個(gè)同軸線纜可以做多個(gè)T型頭,每個(gè)T型頭可以使主機(jī)鏈接到同一根兒線纜上,意味著這一根物理傳輸介質(zhì),它所帶來(lái)的問(wèn)題就是,A主機(jī)如果想和C主機(jī)通信時(shí),底層的線纜上給調(diào)至相應(yīng)的電壓信號(hào)施加到該線纜上,高低電壓,這個(gè)線纜充滿的信號(hào),所以說(shuō)不止C能收到,B也可以收到,那么這時(shí)如果B和D也想傳輸信號(hào),則是不允許的,因?yàn)锽和D在想施壓時(shí),則造成信號(hào)干擾,因此這四臺(tái)主機(jī)在某一時(shí)刻只能有一個(gè)信號(hào)來(lái)進(jìn)行傳輸。因此,等通信信道空閑時(shí),那一臺(tái)主機(jī)就開(kāi)始搶占通信信道進(jìn)行數(shù)據(jù)傳輸。
??那么這樣會(huì)帶來(lái)幾個(gè)問(wèn)題,A發(fā)信號(hào)時(shí),B也發(fā)了,二者必然會(huì)沖突,那么如何避免沖突,既然空間中不能復(fù)用,則只能進(jìn)行時(shí)間上的復(fù)用,實(shí)際上計(jì)算機(jī)網(wǎng)絡(luò)組織有很多問(wèn)題需要解決,這也是其中一種,但解決的方案有很多種,在以太網(wǎng)當(dāng)中引入了一種協(xié)議叫做CSMA/CD,叫做載波偵聽(tīng)多路訪問(wèn)/沖突檢測(cè)協(xié)議,也可以理解為這也是一種線路仲裁的機(jī)制,A、B、C、D這四個(gè)主機(jī),每一個(gè)主機(jī)在發(fā)信號(hào)之前,先去檢測(cè)一下該線路是否被占用,如果沒(méi)有占用,則開(kāi)始搶占該線路,進(jìn)行數(shù)據(jù)傳輸,如果同時(shí)占用該線路時(shí),則載波偵聽(tīng):將數(shù)據(jù)邊發(fā)送變檢測(cè),檢測(cè)是否有別的主機(jī)同時(shí)到達(dá)的信號(hào)以至于不要發(fā)生沖突,所以載波偵聽(tīng)還要沖突檢測(cè),如果沒(méi)有檢測(cè)到?jīng)_突,則傳輸完成退出,如果檢測(cè)到其它信號(hào)干擾,則此前的信號(hào)傳輸將被打斷,于是不得不終止剛才的信號(hào)傳輸,過(guò)一會(huì)在重試??傊褪侨绻诺勒泵δ蔷偷却粋€(gè)隨機(jī)時(shí)間在檢測(cè),如果線路空閑時(shí)將會(huì)立即發(fā)送信號(hào),并且邊發(fā)送變檢測(cè)是否有沖突發(fā)生,如果沒(méi)有沖突發(fā)生將會(huì)持續(xù)發(fā)送數(shù)據(jù)信號(hào),在傳輸信號(hào)的過(guò)程中檢測(cè)到?jīng)_突的話則立即停止信號(hào)傳輸,并且后退隨機(jī)等待一段時(shí)間再次檢測(cè),這就是CSMA/CD的解決方案。
??還有一種是IBM早期研發(fā)的網(wǎng)絡(luò),稱之為令牌環(huán)網(wǎng),將多臺(tái)主機(jī)連接到可以想象為是一個(gè)還狀網(wǎng)絡(luò)中,在這個(gè)環(huán)狀網(wǎng)絡(luò)上游走一個(gè)令牌,這個(gè)令牌在這個(gè)網(wǎng)絡(luò)上不斷的游走著,任何一個(gè)主機(jī)想要發(fā)送信號(hào)時(shí),必須得有令牌才可以,誰(shuí)擁有這個(gè)令牌,誰(shuí)就能夠擁有傳輸數(shù)據(jù)的權(quán)限,其它主機(jī)則不可能有該權(quán)限發(fā)送信號(hào),它也可以解決所有主機(jī)使用該線路去爭(zhēng)用的問(wèn)題,因?yàn)樗慕鉀Q方案就是誰(shuí)抓住令牌誰(shuí)就能發(fā)送信號(hào)。
??那么對(duì)于現(xiàn)在的以太網(wǎng)就是使用使用同軸線纜去連接多個(gè)主機(jī),使用CDMA/CD來(lái)解決在信道上的網(wǎng)絡(luò)就稱之為以太網(wǎng)。那么A發(fā)送給C的信號(hào)B和D能看到但是并不接收,這是因?yàn)槊總€(gè)主機(jī)都有一個(gè)標(biāo)識(shí),這就相當(dāng)于在信封上有個(gè)收件人的地址,同樣的道理,每個(gè)主機(jī)主機(jī)都應(yīng)該有唯一的標(biāo)識(shí),這種唯一標(biāo)識(shí)對(duì)于以太網(wǎng)來(lái)講,都會(huì)在主機(jī)上使用一個(gè)以太網(wǎng)的物理設(shè)備,來(lái)完成對(duì)主機(jī)上的內(nèi)部基于IO的方式來(lái)完成信號(hào)的交換。這個(gè)IO設(shè)備我們通常稱之為網(wǎng)卡,該設(shè)備有自己唯一的標(biāo)識(shí)符,而這個(gè)標(biāo)識(shí)符就是我們所熟知的MAC地址,而MAC所表示的意思為介質(zhì)訪問(wèn)控制,MAC地址是固定在網(wǎng)卡設(shè)備上的,要求生產(chǎn)的網(wǎng)卡的公司或組織都可以生產(chǎn)網(wǎng)卡,而且將網(wǎng)卡的MAC地址固定進(jìn)去,為了防止各個(gè)廠商之間的網(wǎng)卡地址相同,于是乎就有個(gè)國(guó)際組織來(lái)規(guī)范的來(lái)組織解決地址分配避免沖突等問(wèn)題。我們知道MAC地址共有48位的二進(jìn)制組成,國(guó)際名稱地址分配機(jī)構(gòu)ICANN將48位的地址塊這樣做了定義,前24位地址共有2^24,大約有一千六百萬(wàn)個(gè)地址,如果你想用需要就得購(gòu)買,但凡以太網(wǎng)網(wǎng)卡廠商通常都是從該組織購(gòu)買的,注冊(cè)申請(qǐng)其中一個(gè)或某些個(gè)地址,而這個(gè)過(guò)程我們就稱之為注冊(cè)地址的過(guò)程,而后24位也共有2^24,是作為廠商來(lái)講是可以隨意變換的,主要保證生產(chǎn)網(wǎng)卡的當(dāng)中不會(huì)有沖突就可以,而這前24位我們就稱之為地址塊,要是廠商還是不夠用的話,可以繼續(xù)再次購(gòu)買。
??因此,計(jì)算機(jī)之間在底層的通信上解決了這些基本的問(wèn)題,但是還有另外一個(gè)層次的問(wèn)題,當(dāng)同一個(gè)網(wǎng)絡(luò)上的主機(jī)越多越多時(shí),在以太網(wǎng)中是變檢測(cè)變發(fā)信號(hào),等到?jīng)_突就收回信號(hào)的一種機(jī)制,但有很多臺(tái)主機(jī)時(shí),沖突則就大大增加,大大增加的話則就會(huì)將沖突無(wú)時(shí)無(wú)刻的增加,相當(dāng)于前世五百年凈回眸,換來(lái)今生的擦肩而過(guò),這里也是一樣, 凈是沖突。所以我們必須要解決該問(wèn)題,雖然有很多的主機(jī),但是真正交互的沒(méi)有幾臺(tái),不可能對(duì)每個(gè)主機(jī)彼此進(jìn)行交互,可能率極小,我們可以將通信頻繁非常大的主機(jī)放置在一個(gè)網(wǎng)絡(luò)中,另外一些主機(jī)放置在另一個(gè)網(wǎng)絡(luò)中,將其切割,但是切割就成為了兩座孤島,如果需要跨越這層需要網(wǎng)絡(luò)進(jìn)行通信的話,最簡(jiǎn)單的合并方式顯然是不妥當(dāng)?shù)?#xff0c;我們可以找一個(gè)專門的設(shè)備將兩個(gè)網(wǎng)絡(luò)連接起來(lái),這個(gè)設(shè)備有一定的智能性,智能在連接這兩個(gè)網(wǎng)絡(luò)能夠判斷A主機(jī)發(fā)送的信號(hào),如果發(fā)送給X主機(jī)的,該設(shè)備將信號(hào)從該網(wǎng)絡(luò)發(fā)送到另一個(gè)網(wǎng)絡(luò)中去,但是該主機(jī)僅限制在本地通信的話,比如A和B之間通信,那么該設(shè)備是不會(huì)傳送到另一個(gè)網(wǎng)絡(luò)中去,因此就避免了沖突,那么這個(gè)該設(shè)備就是網(wǎng)橋,它能解決在跨越主機(jī)時(shí)將信號(hào)傳送到另一個(gè)網(wǎng)絡(luò)中去。將沖突性問(wèn)題給分割開(kāi)來(lái),所以網(wǎng)橋的作用就是分割沖突域的,無(wú)論是本地通信還是夸網(wǎng)絡(luò)通信,網(wǎng)橋其實(shí)都能接收到一份,但是在本地通信時(shí),并不會(huì)將信號(hào)發(fā)送到另一個(gè)網(wǎng)絡(luò)中去,但是某一個(gè)主機(jī)需要夸網(wǎng)絡(luò)時(shí),網(wǎng)橋才能將信號(hào)傳送給另一個(gè)網(wǎng)絡(luò)中的另一臺(tái)主機(jī),因此它分割并連接了兩個(gè)網(wǎng)絡(luò)。
??那么網(wǎng)橋是如何知道那個(gè)網(wǎng)絡(luò)中有那臺(tái)主機(jī)是憑著內(nèi)部有一個(gè)地址簿,它明確知道某個(gè)主機(jī)在哪一個(gè)接口上,當(dāng)接收到A主機(jī)發(fā)送信號(hào)的時(shí)候,通過(guò)檢查該地址簿就發(fā)現(xiàn),因?yàn)椴还苣莻€(gè)主機(jī)發(fā)送的信號(hào),其里面肯定會(huì)有收信者,這個(gè)收信者一定是某臺(tái)主機(jī)的地址,因此則根據(jù)收信者的地址查看該表,查看發(fā)現(xiàn)自己收到目標(biāo)的接和目標(biāo)主機(jī)都在同一個(gè)接口上,于是乎就認(rèn)為這個(gè)是不需要進(jìn)行轉(zhuǎn)發(fā)的,但收到信號(hào)來(lái)自于左側(cè)接口,但是一查表發(fā)現(xiàn)目標(biāo)主機(jī)X在右側(cè)接口,于是將數(shù)據(jù)將左側(cè)接口發(fā)往右側(cè)接口,那么這個(gè)過(guò)程就叫做數(shù)據(jù)交換的過(guò)程,這也是該設(shè)備也被稱之為交換機(jī)的原因。那么這張地址表我們也稱之為MAC地址表。
??但是我們需要開(kāi)始要考慮一個(gè)問(wèn)題,A主機(jī)有可能發(fā)送到的是廣播信號(hào),所謂的廣播信號(hào)就是,A主機(jī)發(fā)送的信號(hào)不是針對(duì)的某一臺(tái),而是事先商定的任何一臺(tái)主機(jī)都可以接收的一個(gè)地址,這個(gè)地址我們就稱之為廣播地址。全為1時(shí)就是廣播地址,因此A主機(jī)發(fā)送的信號(hào)為目標(biāo)地址是48個(gè)1,其它主機(jī)認(rèn)為都可以接收,那么網(wǎng)橋設(shè)備也認(rèn)為另一端的網(wǎng)絡(luò)也可以收到該廣播信號(hào),因?yàn)檫@個(gè)設(shè)備也不確定該信號(hào)的目標(biāo)主機(jī),這時(shí)候交換機(jī)一定會(huì)將廣播信號(hào)送給右側(cè)接口一份,另一側(cè)的主機(jī)也都接收到了該廣播信號(hào),這樣做的后果是交換器忙著轉(zhuǎn)發(fā)廣播信號(hào),而廣播信號(hào)由于每個(gè)主機(jī)都要接收,久而久之如果廣播信號(hào)過(guò)多時(shí),則在網(wǎng)絡(luò)內(nèi)都會(huì)充斥著廣播信號(hào)。
??廣播信號(hào)的作用就是在網(wǎng)絡(luò)內(nèi)搜尋其它主機(jī),為了避免大范圍的廣播信號(hào),我們可以廣播信號(hào)將其切割使得廣播報(bào)文所到達(dá)的范圍是有限的,就像一個(gè)部門一樣,新同事來(lái)了對(duì)該部門進(jìn)行自我介紹,而不是對(duì)全公司,這就限制了廣播的范圍。此前我們?nèi)菀桌斫?#xff0c;對(duì)于MAC地址來(lái)講,通常為兩段組成,而且第一段是不由我們自己來(lái)控制的,是由ICANN來(lái)控制的,第二個(gè)其實(shí)也是不由我們控制,好在地址不同就可以,所以這使得我們的通信地址是平面的,是一個(gè)平面化的地址,所謂的平面化地址只能在同一個(gè)范圍內(nèi)進(jìn)行通信。
??如果將大范圍切割成為小范圍,當(dāng)我們需要完成通信時(shí),將地址變得立體化時(shí),則變得簡(jiǎn)便許多,與層級(jí)化結(jié)構(gòu)相同,它也是一種倒置的樹(shù)狀結(jié)構(gòu),將一個(gè)大范圍切割成n個(gè)小范圍,從根處逐一向下去找,一級(jí)一級(jí)向下去找,將范圍劃分的越來(lái)越小,而現(xiàn)在的主機(jī)和手持的終端設(shè)備是有很多的,則更要將通信的范圍將其切割,因此它們也是的確這樣做的,假如在一個(gè)可控的組織內(nèi),有許多臺(tái)主機(jī),為了避免廣播范圍過(guò)大,許多臺(tái)主機(jī)為了互相通信,使得網(wǎng)橋設(shè)備之間相互連接,假設(shè)A主機(jī)與X2主機(jī)進(jìn)行通信,無(wú)非這個(gè)報(bào)文就是從第一個(gè)交換機(jī)交換到第二個(gè)交換機(jī),而第二個(gè)交換機(jī)將數(shù)據(jù)放置在右側(cè)端口送達(dá)X2,那么在這時(shí),A主機(jī)送一個(gè)廣播則全網(wǎng)都能收到,這也是必然的,那么為了避免廣播規(guī)模過(guò)大的問(wèn)題,我們也需要將地址切割成立體化結(jié)構(gòu),而后在兩臺(tái)設(shè)備之間在加上一個(gè)隔離廣播的設(shè)備。必要時(shí),如果A主機(jī)需要和X2主機(jī)通信時(shí),依舊是可以通信的,但是不能夠用廣播的方式與X2進(jìn)行通信,任何一個(gè)主機(jī)的廣播只能限制在自己的部門內(nèi),該設(shè)備可以想象成是一個(gè)部門的分割器,那么A主機(jī)與X2通信時(shí)與之前的方式是不一樣的,比如說(shuō)A與X2進(jìn)行通信,發(fā)送報(bào)文給X2,那么第一個(gè)交換機(jī)(S1),其實(shí)不知道有X2這臺(tái)主機(jī),因?yàn)镾1的所有操作都無(wú)法跨越該隔離設(shè)備,因此該設(shè)備S1無(wú)法知道是有X2主機(jī)的,但X2的確是存在的,這樣的話A主機(jī)與X2被該設(shè)備相隔了,雖然有可能知道,但是就是傳遞不過(guò)去,為了避免這種情況發(fā)生,當(dāng)A主機(jī)發(fā)送信號(hào)時(shí),S1發(fā)現(xiàn)這個(gè)廣播域并沒(méi)有該設(shè)備,就會(huì)送到該隔離設(shè)備,我們稱之為R1,送到R1之后,由R1負(fù)責(zé)發(fā)送,由1號(hào)口發(fā)送給2號(hào)口,為了具有一定的智能性,R1在1號(hào)口和2好口所屬的網(wǎng)絡(luò)做了應(yīng)有的標(biāo)記,各自有一個(gè)網(wǎng)絡(luò)號(hào),用于標(biāo)識(shí)各個(gè)范圍的網(wǎng)絡(luò),A主機(jī)屬于1號(hào)網(wǎng)絡(luò),X2主機(jī)屬于2號(hào)網(wǎng)絡(luò),當(dāng)A主機(jī)與X2主機(jī)通信時(shí)就會(huì)改成這種方式:我需要將信號(hào)發(fā)送給2號(hào)網(wǎng)絡(luò)的X2主機(jī),所以這個(gè)報(bào)文送給S1以后,S1并不知道有沒(méi)有該主機(jī),但是A主機(jī)要知道要將報(bào)文發(fā)送給R1的2號(hào)接口,R1的一號(hào)接口發(fā)現(xiàn)其目標(biāo)主機(jī)是2號(hào)網(wǎng)絡(luò)的,所以將報(bào)文就從1號(hào)網(wǎng)絡(luò)扔到2號(hào)網(wǎng)絡(luò)中去,而A主機(jī)的廣播信號(hào)R1是置之不理的。
??但是有可能具體有某個(gè)報(bào)文信號(hào)從1號(hào)網(wǎng)絡(luò)路由到2號(hào)網(wǎng)絡(luò),完成這個(gè)功能,所以站在這個(gè)角度來(lái)講,每個(gè)網(wǎng)絡(luò)都得有網(wǎng)絡(luò)號(hào)來(lái)實(shí)現(xiàn)該功能,但是MAC地址是不能標(biāo)記網(wǎng)絡(luò)號(hào),因?yàn)槲覀儧](méi)有辦法來(lái)進(jìn)行界定,因此為了解決該問(wèn)題,在原有的地址之上,重新設(shè)計(jì)一套地址標(biāo)識(shí)方式,就像×××號(hào)碼一樣,MAC地址只能在本地通信時(shí)才能使用,如果非本地通信而是跨網(wǎng)絡(luò)通信時(shí),使用另外一層的地址,賦予某個(gè)新的地址,那個(gè)新的地址就是給每臺(tái)主機(jī)一個(gè)網(wǎng)絡(luò)號(hào),使用MAC地址固然很好用,但是并不是同一套設(shè)計(jì)體系,而這個(gè)網(wǎng)絡(luò)號(hào)的主機(jī)的標(biāo)識(shí)方法為,在設(shè)立該主機(jī)一個(gè)網(wǎng)絡(luò)號(hào)的同時(shí),設(shè)立自己的主機(jī)號(hào),因此則整個(gè)地址就會(huì)被分成為兩段,網(wǎng)絡(luò)號(hào)+主機(jī)號(hào),而這就是我們所現(xiàn)在使用的IP地址。
??因此,有了IP地址以后,或者擁有了這樣的標(biāo)記以后,我們的主機(jī)就擁有了兩個(gè)地址,第一個(gè)就是網(wǎng)卡上內(nèi)嵌的地址就是我們剛才稱之為的MAC地址,第二個(gè)就是自己官方所講到的,為了實(shí)現(xiàn)編寫容易以及跨網(wǎng)絡(luò)進(jìn)行通信,就需要額外給其添加的邏輯地址,這個(gè)邏輯地址我們通常就稱之為IP地址,IP就叫做互聯(lián)網(wǎng)地址,又稱為互聯(lián)網(wǎng)協(xié)議Internet Protocol,而這個(gè)地址(address)由網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)共同組成,所以這樣的話,彼此主機(jī)之間相互通信時(shí),需要指明那個(gè)網(wǎng)絡(luò)中的的那個(gè)主機(jī)來(lái)接收?qǐng)?bào)文就可以了,我們需要同時(shí)標(biāo)記那個(gè)網(wǎng)絡(luò)中的那個(gè)主機(jī),但是,網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)也在之前講過(guò),對(duì)于計(jì)算機(jī)來(lái)講,更容易識(shí)別的是數(shù)字,假設(shè)有個(gè)網(wǎng)絡(luò)為1號(hào)網(wǎng)絡(luò)中的2號(hào)主機(jī),如何編寫到一起的聯(lián)系更加方便這也是個(gè)問(wèn)題,那么IP地址其實(shí)就是解決這么一個(gè)問(wèn)題的地址,它將網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)聯(lián)系在一起,同時(shí)進(jìn)行標(biāo)識(shí),而這個(gè)標(biāo)識(shí)就叫做IP地址,所以一個(gè)IP地址的內(nèi)部包含了網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。
??那么IP地址的組織格式或組織標(biāo)識(shí)為點(diǎn)分十進(jìn)制,共有32bits二進(jìn)制組成(注意:只有32bits組成),由于這是第四版,我們稱之為IPv4,IP共有兩種版本,一種為IPv4,另一種為IPv6,而IPv6共有128bits二進(jìn)制,我們?cè)诂F(xiàn)階段只介紹IPv4,這32為地址每八位一段,使用點(diǎn)號(hào).隔開(kāi),轉(zhuǎn)換十進(jìn)制每8位標(biāo)識(shí)0-255,因此該地址的表示范圍為:0.0.0.0-255.255.255.255,這四段當(dāng)中如何定義那些是網(wǎng)絡(luò)號(hào)以及那些是主機(jī)號(hào)是非常重要的,對(duì)于網(wǎng)絡(luò)來(lái)講,既有大型網(wǎng)絡(luò)又有小型網(wǎng)絡(luò),可能對(duì)于一個(gè)小型的網(wǎng)絡(luò)來(lái)講,容納兩百臺(tái)以上的主機(jī),可以將最后一個(gè)8bits設(shè)定為主機(jī)號(hào),因此對(duì)于規(guī)模不同的網(wǎng)絡(luò)要求也是不相同的,因此我們不能將IP地址直接定死那些當(dāng)作網(wǎng)絡(luò)號(hào),那些當(dāng)作主機(jī)號(hào)。需要根據(jù)不同的使用場(chǎng)景進(jìn)行靈活的調(diào)度。那么,這就是我們接下來(lái)所講述的IP地址的分類。
???計(jì)算機(jī)網(wǎng)絡(luò):TCP/IP協(xié)議棧(使用)ISO,?OSI:協(xié)議棧(學(xué)習(xí))MAC:?Media?Access?Control48bits:ICANN:?24bit,?2^24地址塊:2^24網(wǎng)橋(bridge):MAC地址表靜態(tài)指定:動(dòng)態(tài)學(xué)習(xí):根據(jù)源地址學(xué)習(xí);交換機(jī)(switch):多端口網(wǎng)橋;IP(Internet?protocol)地址:網(wǎng)絡(luò)號(hào)+主機(jī)號(hào)A?<-->?B網(wǎng)絡(luò)?主機(jī)?IPv4:32bits8bits.8bits.8bits.8bits0-2550.0.0.0-255.255.255.255二、IP地址分類
??我們需要注意的是,在互聯(lián)網(wǎng)上通信的,只有A、B、C三類。D類是組播地址,E類姑且算科研用。
2.1 A類地址
??IP地址共分為五類,由A、B、C、D、E來(lái)進(jìn)行標(biāo)識(shí),對(duì)于A類來(lái)講,前8位二進(jìn)制當(dāng)中,第一位為0不變,后7位可以隨意變化,我們現(xiàn)在知道IP地址共有4段組成,將第一段當(dāng)作網(wǎng)絡(luò)號(hào),后三段為主機(jī)號(hào)。所以網(wǎng)絡(luò)號(hào)的變化范圍為:由于第一位0是固定不變的,后7位可以隨意變化,可表示為0 000 0000 - 0 1111 1111,這樣的話,網(wǎng)絡(luò)號(hào)的數(shù)量范圍為1-127,需要注意的是,全0不能用,以及全1也不能用,所以有效的網(wǎng)絡(luò)范圍為1-127。所以A類地址的第一段為網(wǎng)絡(luò)號(hào),而后三段為主機(jī)號(hào),那么對(duì)于A類來(lái)講的網(wǎng)絡(luò)數(shù)量為127個(gè),但其實(shí)共有126個(gè),因?yàn)?27被拿來(lái)當(dāng)作本地環(huán)回地址。而每個(gè)網(wǎng)絡(luò)中的主機(jī)數(shù)量為2^24-2,其中2^24表示了主機(jī)的范圍,而減去兩個(gè)則表示全0全1不能配置,因?yàn)槿?的為網(wǎng)絡(luò)地址,表示其網(wǎng)絡(luò)自身,全1的為廣播地址,表示網(wǎng)絡(luò)內(nèi)所有主機(jī)。子網(wǎng)掩碼為255.0.0.0,而子網(wǎng)掩碼是用來(lái)做如果目標(biāo)主機(jī)和本地主機(jī)在同一個(gè)網(wǎng)絡(luò)中,那么這個(gè)是不需要路由器進(jìn)行參與,因?yàn)槁酚善魇怯脕?lái)實(shí)現(xiàn)跨網(wǎng)絡(luò)主機(jī)通信的,那么如何判定本地主機(jī)和目標(biāo)主機(jī)是否在一個(gè)網(wǎng)絡(luò)時(shí),需要靠掩碼來(lái)實(shí)現(xiàn),掩碼是對(duì)每一個(gè)通信的主機(jī),該主機(jī)用自己的掩碼和IP地址按位進(jìn)行"與"運(yùn)算,1與誰(shuí)向與還等于誰(shuí),0與誰(shuí)相與都得0。這是該兩個(gè)特點(diǎn),因此,掩碼的主要作用就是將對(duì)應(yīng)的網(wǎng)絡(luò)號(hào)的一部分都置為1,用來(lái)表示計(jì)算的結(jié)果還是自己,而對(duì)應(yīng)的主機(jī)號(hào)置為0,用來(lái)取得網(wǎng)絡(luò)地址。所以子網(wǎng)掩碼的作用就是用來(lái)"與"計(jì)算IP地址,計(jì)算以后取得網(wǎng)絡(luò)地址。
??因此,掩碼就是用于與IP地址按位進(jìn)行"與"運(yùn)算,從而取出其網(wǎng)絡(luò)地址的一種機(jī)制,每一個(gè)主機(jī)和其它的主機(jī)進(jìn)行通信時(shí),通常都有自己的地址,也有對(duì)方的地址,所以它會(huì)拿著掩碼與自己的IP地址做一次"與"運(yùn)算,得到一個(gè)網(wǎng)絡(luò)號(hào)。并且與對(duì)方的地址做一次"與"運(yùn)算,又得一個(gè)網(wǎng)絡(luò)號(hào),之后開(kāi)始比較這兩個(gè)網(wǎng)絡(luò)號(hào)是否一樣,如果一樣則進(jìn)行本地通信,如果不一樣則跨網(wǎng)絡(luò)通信,夸網(wǎng)絡(luò)通信則需要路由器進(jìn)行轉(zhuǎn)發(fā)。
??對(duì)于A類來(lái)講,我們可以劃分子網(wǎng),既然有默認(rèn)掩碼,也可以沒(méi)有默認(rèn)掩碼,可以繼續(xù)做三級(jí)或四級(jí)劃分。
??每一類網(wǎng)絡(luò)當(dāng)中,需要注意的是,既然有了IP地址,那么IP地址的分配也是由國(guó)際名稱地址分配機(jī)構(gòu)所分配的,任何人要想使用互聯(lián)網(wǎng)通信使用該地址時(shí),是需要買地址塊,或者買一個(gè)地址,如果不打算進(jìn)行互聯(lián)網(wǎng)通信,而僅僅是用于本地通信的話,需要購(gòu)買地址也是對(duì)我們需要在本地通信的用戶也是非常不友好的,所以他們也想到保留下一些地址,只進(jìn)行在本地通信的用戶而使用,但是不能用于互聯(lián)網(wǎng)通信,而這些地址我們就稱之為私網(wǎng)地址。私網(wǎng)地址就表示,雖然有這些地址,但只能在有限的范圍內(nèi)進(jìn)行通信,比如說(shuō)在公司內(nèi)部進(jìn)行通信,但不能在互聯(lián)網(wǎng)上進(jìn)行通信,互聯(lián)網(wǎng)不會(huì)將該數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)的。
??那么對(duì)于A類地址總結(jié)如下:
???IP地址分類:A類:第一段為網(wǎng)絡(luò)號(hào),后三段為主機(jī)號(hào)網(wǎng)絡(luò)號(hào):0?000?0000?-?0?111?1111:?1-127網(wǎng)絡(luò)數(shù)量:126,?127每個(gè)網(wǎng)絡(luò)中的主機(jī)數(shù)量:2^24-a默認(rèn)子網(wǎng)掩碼:255.0.0.0,?/8用于與IP地址按位進(jìn)行"與"運(yùn)算,從而獲取其網(wǎng)絡(luò)地址;1.5.2.1/255.0.0.0?=?1.0.0.03.2.4.6/255.0.0.0?=?3.4.0.0私網(wǎng)地址:10.0.0.0/255.0.0.02.2 B類地址
??對(duì)于B類網(wǎng)來(lái)講,基本的套路與之前A類的套路都是一樣的,只不過(guò)有些不同而已,在這里不做闡述,總結(jié)如下:
???????B類:前兩段為網(wǎng)絡(luò)號(hào),后兩段為主機(jī)號(hào)網(wǎng)絡(luò)號(hào):10?00?0000?-?10?11?1111:?128-191網(wǎng)絡(luò)數(shù):2^14-2每個(gè)網(wǎng)絡(luò)中的主機(jī)數(shù)量:2^16-2默認(rèn)子網(wǎng)掩碼:255.255.0.0.?/16私網(wǎng)地址:172.16.0.0-172.31.0.02.3 C類地址
???????C類:前三段為網(wǎng)絡(luò)號(hào),后一段為主機(jī)號(hào)網(wǎng)絡(luò)號(hào):110?00000?-?110?11111:?192-113網(wǎng)絡(luò)數(shù):2^21-2每個(gè)網(wǎng)絡(luò)中的主機(jī)數(shù)量:2^8-2默認(rèn)子網(wǎng)掩碼:255.255.255.0,?/24私網(wǎng)地址:192.168.0.0-192.168.255.255??那么以上就是我們IP地址的分類,需要背會(huì)和算劃分出來(lái)IP及網(wǎng)絡(luò)地址。
三、路由器
??路由器所看到IP地址進(jìn)行通信時(shí),自動(dòng)尋找最佳路線進(jìn)行數(shù)據(jù)包的傳送,路由器如何知道那個(gè)網(wǎng)絡(luò)屬于哪里是有一個(gè)路由表來(lái)進(jìn)行決策的,所以無(wú)論是交換機(jī)還是路由器的智能性表現(xiàn)在:交換機(jī)(前身為網(wǎng)橋)的智能性表現(xiàn)在擁有MAC地址表,網(wǎng)橋如何知道那個(gè)主機(jī)在那個(gè)接口上的是通過(guò)兩種方式來(lái)指定:第一,靜態(tài)指定,通俗一點(diǎn)來(lái)說(shuō)就是手動(dòng)配置,不過(guò)這樣很麻煩,也是非常繁瑣的事情。第二,動(dòng)態(tài)學(xué)習(xí),交換機(jī)會(huì)自動(dòng)學(xué)習(xí)learn,在剛開(kāi)始時(shí),交換機(jī)上的接口并不知道接入的是那臺(tái)主機(jī),但是當(dāng)A主機(jī)發(fā)送一個(gè)報(bào)文的時(shí)候,該主機(jī)一定是從某個(gè)接口接入的,所以交換機(jī)就知道,假如A主機(jī)是從1號(hào)接口接入發(fā)送報(bào)文的,該接口收到A所發(fā)的報(bào)文,無(wú)論發(fā)給誰(shuí),只記錄A在那個(gè)接口上發(fā)送的,所以這是根據(jù)源地址進(jìn)行學(xué)習(xí),這就是動(dòng)態(tài)學(xué)習(xí)的過(guò)程,它的好處就是無(wú)需手動(dòng)配置,壞處在于必須要有一個(gè)有效期限,因?yàn)榻粨Q機(jī)自動(dòng)學(xué)習(xí)到的源地址,但該主機(jī)移除了,所以MAC地址表中的條目都會(huì)有一個(gè)TTL值,我們稱之為生存周期,這個(gè)生存周期一般默認(rèn)為300秒鐘,那么時(shí)間周期過(guò)了之后就會(huì)該源地址就會(huì)被刪除,過(guò)一會(huì)還得需要重新學(xué)習(xí),這樣的話交換機(jī)大量的時(shí)間用來(lái)進(jìn)行學(xué)習(xí),在這學(xué)習(xí)過(guò)程的當(dāng)中,有可能會(huì)發(fā)送大量廣播,因?yàn)榻粨Q機(jī)如果不知道該主機(jī)在那個(gè)接口上,就只能發(fā)送廣播給每個(gè)接口使得該主機(jī)接收并回饋給交換機(jī),這種我們就稱之為泛洪。
??而對(duì)于路由器來(lái)說(shuō),剛才提到過(guò),路由器靠的是路由表,能實(shí)現(xiàn)IP地址轉(zhuǎn)發(fā)的報(bào)文叫做路由器設(shè)備,我們稱之為router,另外剛才所講到的網(wǎng)橋設(shè)備,一般指的是交換機(jī),但是他倆并不是同一種東西,交換機(jī)一般指的是多個(gè)端口,現(xiàn)代的智能化網(wǎng)橋,早期網(wǎng)橋通常用來(lái)連接兩個(gè)網(wǎng)絡(luò),現(xiàn)在的交換機(jī)有多個(gè)接口,而且并不是連接的網(wǎng)絡(luò),而是連接的是單獨(dú)的主機(jī),那么我們把它稱之為交換機(jī)(switch),又把它稱之為多端口網(wǎng)橋。
??對(duì)于路由器來(lái)講,剛才也講過(guò),內(nèi)部是靠路由表來(lái)事先判定該主機(jī)通信時(shí)目標(biāo)主機(jī)在那個(gè)網(wǎng)絡(luò)上,從而能轉(zhuǎn)發(fā)給那個(gè)接口。路由器可能不止一個(gè)接口,或者不止兩個(gè)或n個(gè),它們能連接多個(gè)網(wǎng)絡(luò),但全球的網(wǎng)絡(luò)非常龐大,從那個(gè)網(wǎng)絡(luò)到那個(gè)網(wǎng)絡(luò)這也是一個(gè)問(wèn)題,事實(shí)上全球的路由器可能是分成多個(gè)等級(jí)的,路由器可分成多個(gè)分支,層層環(huán)扣,跨國(guó)家以及夸大洋是可以的,那么一臺(tái)國(guó)內(nèi)的主機(jī)與另一臺(tái)國(guó)家的主機(jī)進(jìn)行通信,中間是有n條路徑可以走的,有很多路徑可以到達(dá),但無(wú)論多少條路,選擇的路只有一條,不過(guò)無(wú)論多少條路,姑且那一條路最近這是最好的選擇。而且那一條最近的路是根據(jù)估算標(biāo)準(zhǔn)來(lái)進(jìn)行決策,有所謂的路徑最短,以及花銷最少,還有就是時(shí)間最短的,所以說(shuō),估算標(biāo)準(zhǔn)不一樣使得有很多條路可以走,看對(duì)于那條路來(lái)進(jìn)行估算,是根據(jù)時(shí)間還是很據(jù)距離等。
??因此,我們要在選路時(shí),找出一種標(biāo)準(zhǔn)來(lái)完成所謂的其路徑×××的計(jì)算標(biāo)準(zhǔn),所以我們的路由實(shí)現(xiàn)的路由協(xié)議算法時(shí),通常的算法第一個(gè)為距離矢量,例如像RIP協(xié)議,還有一個(gè)就是OSPF,OSPF叫做開(kāi)放最短路徑優(yōu)先,但至少是在我們的路由表當(dāng)中,應(yīng)該會(huì)定義一下最終每一條路由表都應(yīng)該知道自己在網(wǎng)絡(luò)中所處在什么位置。
??每個(gè)路由器到最終都需要明白,整個(gè)網(wǎng)絡(luò)或者是有限需要到達(dá)的某個(gè)路徑可以走,每個(gè)路由器在某一時(shí)刻必須要知道到達(dá)全球每一個(gè)位置到底有那些個(gè)路可以走,而其中選擇最優(yōu)的并且記錄下來(lái),這個(gè)記錄的條目就叫做路由表?xiàng)l目,最終記錄了n條路徑,因?yàn)樾枰泻芏嗑W(wǎng)絡(luò)進(jìn)行到達(dá),到達(dá)每一條網(wǎng)絡(luò)都得有尋好的路,最終每一個(gè)路都是一個(gè)條目,于是條目很多,就形成了路由表。那么條目的生成以及如何到達(dá)某個(gè)網(wǎng)絡(luò)時(shí)從哪里經(jīng)過(guò)這也是最主要的事情,對(duì)于路由表的生成以及對(duì)于MAC地址表的生成是一樣的,無(wú)非之前說(shuō)的兩種方式,靜態(tài)指定和動(dòng)態(tài)學(xué)習(xí),靜態(tài)指定對(duì)于小范圍的網(wǎng)絡(luò)來(lái)講是比較可靠的,但對(duì)于大范圍來(lái)講并不可靠,那么對(duì)于動(dòng)態(tài)學(xué)習(xí)的方式來(lái)講,它需要專門的學(xué)習(xí)來(lái)專門幫助我們來(lái)學(xué)習(xí),例如rip2和ospf等協(xié)議,當(dāng)然前者已經(jīng)廢棄,ospf就是學(xué)習(xí)知道從其它網(wǎng)絡(luò)哪里學(xué)習(xí)得知我們能夠到達(dá)那些網(wǎng)絡(luò)以及有那些路可以走,每一種不同的協(xié)議它們的選擇路徑長(zhǎng)短標(biāo)準(zhǔn)也是不一樣的,甚至同一種協(xié)議經(jīng)過(guò)調(diào)整以后也可以基于不同的標(biāo)準(zhǔn)來(lái)進(jìn)行,所以這叫做路由表。
??有了路由表終于可以確定從那個(gè)主機(jī)到那個(gè)主機(jī)二者之間或彼此之間是如何進(jìn)行通信的,因此在系統(tǒng)中有個(gè)命令,該命令的功能是例如從A主機(jī)到B主機(jī)之間走的那條路,這條命令稱之為traceroute,而ping操作就是探測(cè)兩臺(tái)主機(jī)之間有沒(méi)有可靠的鏈路彼此之間能夠到達(dá)的一條命令。
????路由器:router路由表:靜態(tài)學(xué)習(xí)動(dòng)態(tài)學(xué)習(xí):rip2,?ospf路由條目:目標(biāo)地址?下一跳(nexthop)目標(biāo)地址的類別:主機(jī):主機(jī)路由網(wǎng)絡(luò):網(wǎng)絡(luò)路由0.0.0.0/0.0.0.0;默認(rèn)路由??
??但是有了IP地址最多也就是擁有跨網(wǎng)絡(luò)的特性,雖然我們現(xiàn)在通過(guò)路由這種方式能夠跨越很復(fù)雜的網(wǎng)絡(luò),但是能讓各個(gè)互聯(lián)網(wǎng)之間的主機(jī)能夠通信,需要有個(gè)問(wèn)題進(jìn)行解決,現(xiàn)代的主機(jī)都是多任務(wù)的操作系統(tǒng),我們此前也說(shuō)過(guò)我們的OS都是擁有多用戶及多任務(wù)的,在多任務(wù)的概念中,是由多進(jìn)程同時(shí)運(yùn)行,我們平時(shí)瀏覽互聯(lián)網(wǎng)的時(shí)候,一方面可以瀏覽網(wǎng)頁(yè),還一方面還可以聊天以及聽(tīng)音樂(lè),這意味著不僅僅是主機(jī)與主機(jī)之間進(jìn)行通信,每一個(gè)主機(jī)中的多個(gè)程序需要與另一個(gè)主機(jī)的程序進(jìn)行通信。
??因此,當(dāng)本地的聊天工具發(fā)送的信息被WEB服務(wù)器接收到,其結(jié)果是非常糟糕的,所以我們還得需要給每個(gè)進(jìn)程去標(biāo)識(shí)某個(gè)地址,這樣一來(lái)就意味著,對(duì)方的信號(hào)發(fā)送過(guò)去以后,對(duì)方的主機(jī)需要想辦法識(shí)別出與本地的那一個(gè)進(jìn)程進(jìn)行通信,既然進(jìn)程間都有地址,地址可以固定,也可以不固定,每個(gè)進(jìn)程不可能跨越主機(jī)來(lái)使用地址的,所以進(jìn)程地址只能在本地主機(jī)范圍內(nèi)使用,因?yàn)閯偛胖v過(guò),進(jìn)程地址只是在當(dāng)前主機(jī)上來(lái)區(qū)別不同進(jìn)程的,所以它的有效范圍只限于本地主機(jī)。再則,我們用于標(biāo)識(shí)進(jìn)程的時(shí)候,這個(gè)進(jìn)程地址是不是固定的,就像IP地址一樣,至少有一段時(shí)間是固定的,那端口也亦是如此,在通信時(shí)的某一時(shí)刻,無(wú)論是IP還是端口,只要不隨意更改或者一直傳輸都是永久固定的。就像服務(wù)器一樣,必須有固定的IP地址等待管理,就像守株待兔一樣,而客戶端的IP地址和端口可隨意變的,由它發(fā)起的通信,一時(shí)興起訪問(wèn)一次,主動(dòng)出擊。
???OS:?多用戶,?多任務(wù)多任務(wù):多進(jìn)程chromeWechat網(wǎng)易云音樂(lè)Client:?主動(dòng)出擊,臨時(shí)可用地址和端口;Server:?固定且明確的地址,守株待兔;??所以說(shuō)Server端,也就是服務(wù)器端必須要有固定且明確的地址,這個(gè)地址包含IP和端口,但對(duì)于客戶端而言,只要能進(jìn)行訪問(wèn)與回應(yīng)就可以了,它也必須要有明確的地址和端口,但只是臨時(shí)的。
??端口就是標(biāo)識(shí)主機(jī)上哪一個(gè)進(jìn)程唯一的數(shù)字標(biāo)識(shí),是進(jìn)程用于實(shí)現(xiàn)網(wǎng)絡(luò)通信時(shí)所給出的數(shù)字標(biāo)識(shí),這個(gè)數(shù)字標(biāo)識(shí)用二進(jìn)制表示的范圍有16位二進(jìn)制,所以它的范圍為0-65535,但0一般不會(huì)拿來(lái)去使用,所以實(shí)際使用的范圍為1-65535,但是在這些標(biāo)識(shí)當(dāng)中,有些進(jìn)程是需要使用固定的,比如就是服務(wù)器端,而客戶端隨意拿來(lái)用都可以,但國(guó)際名稱互聯(lián)網(wǎng)機(jī)構(gòu)給其做了一些界定,界定介紹如下:
????通信時(shí),進(jìn)程的數(shù)字標(biāo)識(shí):16bits:0-65535:?1-655351-1023:?固定分配,而且只有管理員有權(quán)限啟動(dòng);專門用于服務(wù)進(jìn)程使用;1024-41951:?半固定;41952:?臨時(shí);??那么真正的互聯(lián)通信其實(shí)就是從某個(gè)主機(jī)的進(jìn)程到另外一個(gè)主機(jī)進(jìn)程的通信,那么每個(gè)主機(jī)的進(jìn)程如何標(biāo)識(shí)地址的方式為IP:PORT,這就是一個(gè)套接字,一個(gè)IP加上一個(gè)端口說(shuō)明指明了那個(gè)主機(jī)上的那個(gè)端口,從而標(biāo)識(shí)了用來(lái)通信的某一進(jìn)程,所以這就是一個(gè)進(jìn)程的完整地址,我們就把它稱之為套接字地址,而真正的套接字是由內(nèi)核提供的。
???????進(jìn)程地址:IP:PORT,?socket??對(duì)于我們Linux主機(jī)來(lái)講,系統(tǒng)共有四層組成由硬件、內(nèi)核、庫(kù)文件、應(yīng)用程序,這是站在靜態(tài)視角來(lái)看,而當(dāng)一個(gè)操作系統(tǒng)運(yùn)行起來(lái)以后,其實(shí)共有兩個(gè)層面,一個(gè)層面叫內(nèi)核空間Kernel space,另一個(gè)層面叫用戶空間User space,所謂的用戶空間就是各進(jìn)程運(yùn)行的集合空間就叫做用戶空間,而內(nèi)核線程所運(yùn)行的空間位置就叫做內(nèi)核空間,而內(nèi)核啟動(dòng)的有進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧、驅(qū)動(dòng)程序、內(nèi)存管理、安全相關(guān)、文件系統(tǒng)等;其中有這么一個(gè)功能叫網(wǎng)絡(luò)協(xié)議棧,TCP/IP協(xié)議棧就在這里,可分為兩層第一個(gè)叫通信子網(wǎng),第二個(gè)叫資源子網(wǎng),而通信子網(wǎng)就是由內(nèi)核使用,而資源子網(wǎng)就是由用戶空間來(lái)實(shí)現(xiàn)。資源子網(wǎng)就是運(yùn)行在用戶空間中的各個(gè)服務(wù)或者是客戶端進(jìn)程,用來(lái)實(shí)現(xiàn)通信及資源交換的,或者完成資源的表現(xiàn)形式所定義的,而內(nèi)核所謂的TCP/IP協(xié)議棧,它只是負(fù)責(zé)能從A主機(jī)的數(shù)據(jù)送往B主機(jī)的進(jìn)程,后背后的一些問(wèn)題是由用戶子網(wǎng)的進(jìn)程來(lái)實(shí)現(xiàn)。
??端口是由內(nèi)核來(lái)提供的,每一個(gè)進(jìn)程啟動(dòng)要想完成網(wǎng)絡(luò)通信,需要向內(nèi)核申請(qǐng)注冊(cè)使用該端口,如果該端口沒(méi)有被其它進(jìn)程所占用,則可以分配,否則就是端口沖突,一個(gè)端口在某一時(shí)刻只能被一個(gè)進(jìn)程所占用,不然的話就無(wú)法做到唯一標(biāo)識(shí)進(jìn)程,任何一個(gè)服務(wù)類的程序,啟動(dòng)時(shí)注冊(cè)一個(gè)著名的端口,但兩個(gè)程序同時(shí)注冊(cè)時(shí),就會(huì)出現(xiàn)沖突,例如httpd和nginx,都是提供WEB服務(wù),固定使用的是80端口,啟動(dòng)其中一個(gè)時(shí),后一個(gè)肯定是啟動(dòng)不了的,不然內(nèi)核就會(huì)告訴你注冊(cè)不成功。那任何一個(gè)進(jìn)程都必須得向內(nèi)核注冊(cè)端口(指網(wǎng)絡(luò)程序),排除只是守護(hù)的進(jìn)程。而這個(gè)注冊(cè)過(guò)程我們也稱之為注冊(cè)套接字的過(guò)程。
??現(xiàn)在我們了解到,主機(jī)與主機(jī)之間通信需要用三個(gè)地址。
???第一,MAC地址用來(lái)實(shí)現(xiàn)本地通信;第二,IP地址用來(lái)實(shí)現(xiàn)跨網(wǎng)絡(luò)通信;第三,端口地址用來(lái)實(shí)現(xiàn)進(jìn)程間通信;??那么有了IP地址之后,在主機(jī)還得需要使用MAC地址,原因就是IP地址僅僅是用來(lái)標(biāo)識(shí)、路由,也僅僅用來(lái)標(biāo)識(shí)網(wǎng)絡(luò)使用的,雖然我們給了主機(jī)一個(gè)IP地址,但是真正到達(dá)本地內(nèi)部事務(wù)以后,需要轉(zhuǎn)換成MAC地址才能完成真正的通信,所以互聯(lián)網(wǎng)通信是先完成一段又一段的本地通信才完成的。通信過(guò)程就相當(dāng)于是一個(gè)大的目標(biāo)沒(méi)有變,但是在實(shí)行的過(guò)程中是需要不斷修正的,比如:隨便先實(shí)現(xiàn)個(gè)小目標(biāo),但一定要到達(dá)大的目標(biāo)。所以互聯(lián)網(wǎng)的IP地址僅能標(biāo)識(shí)源主機(jī)和目標(biāo)主機(jī)是誰(shuí),并且能夠選出一條可要選的路來(lái),所以互聯(lián)網(wǎng)通信無(wú)非就是實(shí)現(xiàn)的是多段接力的本地通信。兩段之間是不斷的發(fā)生變化最終才能走完的數(shù)據(jù)包到目標(biāo)主機(jī),看上去使用的是IP,但最終使用的是MAC地址及本地局域網(wǎng)通信。
??那么A1和X2通信的方式是:首先,確保存在X2這個(gè)主機(jī),第二步,A1的報(bào)文以本地(MAC)通信的方式發(fā)送給R1的1號(hào)接口,而這個(gè)過(guò)程就是本地事務(wù),而R1將該報(bào)文交給了2號(hào)接口,于是2號(hào)接×××給了X2,這又是一次第二段的本地事務(wù),而R1的1號(hào)接口與A1通信靠MAC地址,而R1的2號(hào)接口考的也是MAC地址,IP僅用來(lái)標(biāo)識(shí)A1和X2,而真正通信的是A1上的某個(gè)進(jìn)程和X2上的某個(gè)進(jìn)程而已。因此,真正通信的方式是某個(gè)主機(jī)的某個(gè)端口,和另外主機(jī)的某個(gè)端口通信,但最終轉(zhuǎn)換為MAC或本地事務(wù)之間的交互,從而完成通信,當(dāng)然這也是在通信子網(wǎng)中完成的過(guò)程。
??而到了資源子網(wǎng)之后,需要取決于具體的協(xié)議,而且到了具體協(xié)議之后還得有一個(gè)地址,只不過(guò)是應(yīng)用層的地址,但是我們說(shuō)了三個(gè)地址需要簡(jiǎn)單總結(jié)一下:
???總結(jié):MAC:本地通信;范圍:本地局域網(wǎng);IP:界定通信主機(jī),源和目標(biāo);范圍:互聯(lián)網(wǎng);Port:界定進(jìn)程;范圍:主機(jī);轉(zhuǎn)載于:https://blog.51cto.com/tianxie/2096972
總結(jié)
以上是生活随笔為你收集整理的2018-3-28Linux系统管理(16)计算机网络基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: React开发(191):ant des
- 下一篇: Access应用实例——图书借阅管理系统