IPV4地址都耗盡了,你還不知道它是個(gè)啥玩意兒?
2019年11月26日,世界上最后一個(gè)IPv4地址也被用完了。但是它都被耗盡了,竟然還有人不知道它是個(gè)什么東西呢?今天小編帶哪些“網(wǎng)工盲人”了解一下曾今風(fēng)靡天下的IPV4地址。
IPv4地址
IPv4地址長(zhǎng)度為32位。像所有其他網(wǎng)絡(luò)層地址一樣,IPv4地址也包括網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)兩部分。網(wǎng)絡(luò)號(hào)部分唯一地標(biāo)識(shí)了一條物理鏈路或邏輯鏈路,對(duì)于與該鏈路相連的所有設(shè)備來(lái)說(shuō)網(wǎng)絡(luò)號(hào)部分是共同的。而主機(jī)號(hào)部分唯一地標(biāo)識(shí)了該鏈路上連接的具體設(shè)備。
有幾種方式可以表示IP地址的32位。舉例來(lái)說(shuō),32位的IP地址000010101 1010110010110000011可以用十進(jìn)制表示為181 819 267.
由此可見(jiàn)用二進(jìn)制表示IP地址十分麻煩,而全部32位數(shù)字用十進(jìn)制格式表示計(jì)算起來(lái)又很耗時(shí)。圖1-4給出了一種更好的表示方法。32位的地址包含4個(gè)字節(jié),每個(gè)字節(jié)均可以用0~255之間的十進(jìn)制數(shù)表示,而每個(gè)十進(jìn)制數(shù)之間用點(diǎn)號(hào)分隔。在圖14中,將32位的地址映射到用點(diǎn)分十進(jìn)制法表示的地址上。
在使用IPv4地址時(shí)需要記住一點(diǎn),點(diǎn)分十進(jìn)制表示法便于人們閱讀和書(shū)寫(xiě),而路由器更適合使用32位的二進(jìn)制串,而不是按照4個(gè)八位組的方式讀取地址。牢記這一點(diǎn)可以避免許多易犯的錯(cuò)誤。如果讀者沒(méi)有接觸過(guò)二進(jìn)制數(shù),特別是二進(jìn)制與十進(jìn)制之間的轉(zhuǎn)換方法,那么建議讀者在繼續(xù)學(xué)習(xí)這一章的內(nèi)容之前可以閱讀一下附錄A的內(nèi)容IP地址與眾不同的特性可能就是, IPv4地址不像其他網(wǎng)絡(luò)層地址的網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)是固定不變的,IP地址的網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)可以在32位的界線(xiàn)內(nèi)發(fā)生變化。也就是說(shuō),IP 地址的網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)都有可能占據(jù)32位中的多數(shù)位,也可能兩者平分32位。例如NetWare和AppleTalk協(xié)議,由于它們主要用于相對(duì)較小的網(wǎng)絡(luò),所以協(xié)議的網(wǎng)絡(luò)層地址的網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)長(zhǎng)度是固定。這樣的安排的確使得工作更加容易,援收設(shè)備可以從地址中讀入固定的位來(lái)獲取網(wǎng)絡(luò)號(hào),剩下的位便是主機(jī)號(hào)。
然而,TCP/P從最初設(shè)計(jì)出來(lái)到現(xiàn)在可以靈活地應(yīng)用于任何網(wǎng)絡(luò),從很簡(jiǎn)單的幾個(gè)功能發(fā)展成為一個(gè)龐大的協(xié)議簇。TCP/P這種適應(yīng)性使得IP地址的管理更加困難。
首個(gè)八位組字節(jié)規(guī)則
如果不對(duì)網(wǎng)絡(luò)作太過(guò)精確的劃分,那么網(wǎng)絡(luò)可以按照主機(jī)數(shù)量分為3類(lèi):大型網(wǎng)絡(luò)、中型網(wǎng)絡(luò)和小型網(wǎng)絡(luò)。
- 大型網(wǎng)絡(luò)——可以定義為包含大量主機(jī)的網(wǎng)絡(luò)。大型網(wǎng)絡(luò)的數(shù)量相對(duì)很少。
- 小型網(wǎng)絡(luò)——作為大型網(wǎng)絡(luò)的對(duì)照,它僅僅包含很少數(shù)量的主機(jī),但小型網(wǎng)絡(luò)的數(shù)目很多。
- 中型網(wǎng)絡(luò)——相對(duì)于大型和小型網(wǎng)絡(luò)來(lái)說(shuō),包含的主機(jī)數(shù)量中等,而且中型網(wǎng)絡(luò)的數(shù)量也中等。
對(duì)于這3種規(guī)模的網(wǎng)絡(luò),高層的地址劃分要求有3種類(lèi)型的網(wǎng)絡(luò)地址。面向大型網(wǎng)絡(luò)的地址需要有能力為大量的主機(jī)編址,但是由于大型網(wǎng)絡(luò)的數(shù)量有限,所以大型網(wǎng)絡(luò)僅需要少量的網(wǎng)絡(luò)地址。
而對(duì)小型網(wǎng)絡(luò)來(lái)說(shuō)情況又顛倒過(guò)來(lái)了,因?yàn)樾⌒途W(wǎng)絡(luò)數(shù)量龐大,所以需要大量的小型網(wǎng)絡(luò)的網(wǎng)絡(luò)地址。但是小型網(wǎng)絡(luò)主機(jī)有限,所以?xún)H需要少量主機(jī)地址。
點(diǎn)分十進(jìn)制表示法只用于 IPv4地址。IPv6 地址的表示法完全不同。
對(duì)于中等規(guī)模的網(wǎng)絡(luò)來(lái)說(shuō),網(wǎng)絡(luò)地址和主機(jī)地址的需求量均趨于中等水平。圖1-5顯示了3類(lèi)IPv4地址的網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)是怎樣劃分的。
迄今為止,對(duì)于所描述的大型、中型和小型網(wǎng)絡(luò),是按照如下方式映射到各類(lèi)地址的:
- A類(lèi)地址——用于大型網(wǎng)絡(luò), 第1個(gè)八位組是網(wǎng)絡(luò)號(hào),后3個(gè)八位組是主機(jī)號(hào)。8位的網(wǎng)絡(luò)號(hào)最多可以表示256個(gè)網(wǎng)絡(luò),而每個(gè)網(wǎng)絡(luò)地址的主機(jī)號(hào)可以提供的主機(jī)數(shù)量為224或167777 216.
- B類(lèi)地址——用于中型網(wǎng)絡(luò)。前2個(gè)八位組表示網(wǎng)絡(luò)號(hào),后2個(gè)八位組表示主機(jī)號(hào)。網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的數(shù)量均為26或65 536個(gè)。
- C類(lèi)地址——對(duì)應(yīng)于 A類(lèi)IP地址。前3個(gè)八位組表示網(wǎng)絡(luò)號(hào),最后1個(gè)八位組表示主機(jī)號(hào)。
因?yàn)樗械腎Pv4地址都是32位二進(jìn)制字符串,所以需要某種方法來(lái)區(qū)分一個(gè)特定地址到底是屬于哪一類(lèi)地址。表1-3所示的首個(gè)八位組規(guī)則提供了這種方法,如下所述:
- 對(duì)于A類(lèi)地址,首個(gè)八位組的第1位,即32位字符串最左邊的1位,總是被設(shè)置為0.因此,通過(guò)設(shè)置首個(gè)八位組的剩余位為0 (最小)或?yàn)? (最大),我們可以找到A類(lèi)地址范圍中的最小數(shù)和最大數(shù),于是我們可以得到最小數(shù)和最大數(shù)分別為0和127,但是這里有幾個(gè)例外: 0被保留作為缺省地址部分,127被保留為內(nèi)部回送地址。剩下的十進(jìn)制數(shù)則是1-126.因此任何首個(gè)八位組落在1和126之間的IP地址均屬于A類(lèi)地址。
- B類(lèi)地址 總是把左邊的第 I位設(shè)置為1,第2位設(shè)置為0.那么再次通過(guò)設(shè)置首個(gè)八位組的剩余位為0或?yàn)?,我們依然可以找到最小數(shù)和最大數(shù)。在圖14中,我們可以看到首個(gè)八位組落在!28和191之間的IP地址屬于B類(lèi)地址。
- 在C類(lèi)地址中,前2位均被設(shè)置為1,第3位被設(shè)置為0.這樣設(shè)置的結(jié)果是首個(gè)八位組在192和223之間。
到目前為止, IPv4 的編址看上去并不是十分困難。路由器和主機(jī)通過(guò)首個(gè)八位組字節(jié)規(guī)則能夠很容易地確定IP地址的網(wǎng)絡(luò)號(hào)。如果第I位是0,需要讀取前8位才能獲取網(wǎng)絡(luò)地址:如果前兩位是10,那么需要讀取16位:如果前3位是110,則需求讀取24位才能獲取網(wǎng)絡(luò)號(hào)。不幸的是,事情并不會(huì)這樣簡(jiǎn)單。
地址掩 碼( Address Mask )
表示整個(gè)數(shù)據(jù)鏈路的地址——非特指某臺(tái)主機(jī)的網(wǎng)絡(luò)地址,可以用IP地址的網(wǎng)絡(luò)部分來(lái)表示,其中主機(jī)位全部為0。例如,IP 地址管理機(jī)構(gòu)可以將172.21.0.0分配給一個(gè)申請(qǐng)者。因?yàn)?72在128和191之間,所以這是一個(gè)B類(lèi)地址,其中后兩個(gè)八位組作為主機(jī)位,全部被設(shè)置為0.雖然前16位(172.21.)已經(jīng)被指定,但是地址所有者有權(quán)決定后16位主機(jī)位的使用。
每一臺(tái)設(shè)備和接口都將被分配一個(gè)唯一的、主機(jī)號(hào)明確的地址,例如172.21.35.17. 不管設(shè)備是路由器還是主機(jī),顯然都需要知道自身的地址,而且它還需要能夠確定它所屬的網(wǎng)絡(luò),在這個(gè)案例中,它屬于172.21.0.0.這一任務(wù)通常由地址掩碼來(lái)完成。地址掩碼是一個(gè)32位的字符串,與IPv4地址的每一位相對(duì)應(yīng)。掩碼也可以像IPv4地址一樣用點(diǎn)分十進(jìn)制表示。這種表示方法會(huì)成為某些初學(xué)者的絆腳石。雖然地址掩碼可以用點(diǎn)分十進(jìn)制書(shū)寫(xiě),但是它并不是一個(gè)地址。表1-4 給出了對(duì)應(yīng)于3類(lèi)IPv4地址的標(biāo)準(zhǔn)地址掩碼。
設(shè)備使用環(huán)回地址(典型的是127.0.0.1) 向自己發(fā)送流量。發(fā)送到該地址的數(shù)據(jù)將會(huì)被直接送回給發(fā)送進(jìn)程,面不會(huì)離開(kāi)此設(shè)備。
對(duì)于每一位IPv4地址位,設(shè)備會(huì)拿它與地址掩碼的對(duì)應(yīng)位進(jìn)行布爾(邏輯) AND操作。AND函數(shù)表述如下:
比較兩位并得出結(jié)果。當(dāng)且僅當(dāng)兩位全部為1時(shí),結(jié)果為1。如果兩位中任意一位為0,則結(jié)果為0。
對(duì)于一個(gè)指定的IPv4地址,圖1-6 給出了怎樣用地址掩碼確定網(wǎng)絡(luò)地址。地址掩碼值為1的位對(duì)應(yīng)于地址的網(wǎng)絡(luò)位,值為0的位對(duì)應(yīng)于主機(jī)位。因?yàn)?72.21.35.17是B類(lèi)地址,所以掩碼前兩個(gè)八位組必須全部設(shè)置為I,后兩個(gè)八位組,即主機(jī)號(hào)的所有位必須設(shè)置為0。參見(jiàn)表1-4,這個(gè)掩碼的點(diǎn)分十進(jìn)制表示為55255.0.0。
在IPv4地址和地址掩碼的每一位上執(zhí)行邏輯“與”(AND)操作,結(jié)果如圖1-6 所示。
在結(jié)果中,網(wǎng)絡(luò)位不變,所有主機(jī)位則變?yōu)?.通過(guò)向接口分配地址172.21.35.17 和掩碼255.255.0.0,設(shè)備將會(huì)知道接口屬于網(wǎng)絡(luò)172.21.0.0.對(duì)IPv4地址和掩碼應(yīng)用AND操作總能夠得到網(wǎng)絡(luò)地址。
!注意:
- 223并沒(méi)有用完第一個(gè)八位組中所有可用的數(shù)。
- 負(fù)責(zé)管理和分配IP地址的高級(jí)管理機(jī)構(gòu)是亞洲的APNIC.北美的ARIN.中美與南美州的LACNIC.以及EMEA的RIPE.
- 事實(shí)上,這個(gè)地址決不會(huì)域分配,因?yàn)樗鼘儆谒接械谋A舻刂?本書(shū)中所用到的大多數(shù)地址都是保留地址,見(jiàn)RFC1918.保留地址包括: 10.0.0.0-10.255.255.255. 172. 16.0.0-172.31.255.255和192.168.0.0-192.168.255.255.
通過(guò)下面命令可以向Cisco路由器的接口分配地址和掩碼(本例中接口為E0):
- Smokey (config)I interface othernet 0
- Smokey(contig-if)# ip address 172.21.35.17 255.255.0.0
但是為什么要使用地址掩碼?到目前為止,使用首個(gè)八位組字節(jié)規(guī)則看上去更簡(jiǎn)單一些。
子網(wǎng)和子網(wǎng)掩碼
首先,決不要忽略網(wǎng)絡(luò)層地址的必要性。為了完成路由選擇,每個(gè)數(shù)據(jù)鏈路(網(wǎng)絡(luò))都必須有一個(gè)唯一的地址;另外,數(shù)據(jù)鏈路上的每臺(tái)主機(jī)也必須有一個(gè)地址,這個(gè)地址不僅標(biāo)識(shí)主機(jī)為一個(gè)網(wǎng)絡(luò)成員,還可以把主機(jī)與網(wǎng)絡(luò)上的其他主機(jī)區(qū)分開(kāi)來(lái)。
到目前為止的定義中,一個(gè)A類(lèi). B類(lèi)或C類(lèi)地址僅僅能用在一個(gè)單一網(wǎng)絡(luò)中: 為了建立一個(gè)網(wǎng)絡(luò),每個(gè)數(shù)據(jù)鏈路都必須使用不同的地址,以便這些網(wǎng)絡(luò)可以被惟一地標(biāo)識(shí)。如果每一個(gè)數(shù)據(jù)鏈路都使用一個(gè)單獨(dú)的A類(lèi)、B類(lèi)或C類(lèi)地址,那么即使用盡所有的IPv4地址,也只能給少于1700 萬(wàn)個(gè)數(shù)據(jù)鏈路分配地址。顯然,這種方法是不切實(shí)際的,在前面的例子中,如果充分地使用主機(jī)地址空間,那么在數(shù)據(jù)鏈路172.21.0.0中的設(shè)備數(shù)目可以超過(guò)65 000!
使A類(lèi). B類(lèi)或C類(lèi)地址實(shí)用化的惟一方法是對(duì)主網(wǎng)地址進(jìn)行劃分,例如將172.21.0.0劃分為子網(wǎng)地址。請(qǐng)回憶兩個(gè)事實(shí):
- IPv4地址的主機(jī)部分可以隨意使用。
- IPv4地址的網(wǎng)絡(luò)號(hào)由分配給接口的地址掩碼確定。
如圖1-7所示,分配給網(wǎng)絡(luò)的地址為B類(lèi)地址172.21.0.0. 5個(gè)數(shù)據(jù)鏈路將主機(jī)和路由器互連起來(lái),每個(gè)數(shù)據(jù)鏈路都需要一個(gè)網(wǎng)絡(luò)地址。按照目前的情況,172.21.0.0 必須分配給其中的一個(gè)數(shù)據(jù)鏈路,那么另外4個(gè)數(shù)據(jù)鏈路還需要4個(gè)地址。
注意圖1-7所示,地址掩碼并不是標(biāo)準(zhǔn)的16位B類(lèi)地址掩碼:而是被擴(kuò)展了8位,以便IP地址的前24位都被解釋為網(wǎng)絡(luò)位。換句話(huà)說(shuō),掩碼使路由器和主機(jī)把讀取的前8位主機(jī)位作為網(wǎng)絡(luò)地址的一部分。結(jié)果是,主網(wǎng)絡(luò)地址應(yīng)用于整個(gè)網(wǎng)絡(luò),而每一個(gè)數(shù)據(jù)鏈路則變?yōu)橐粋€(gè)子網(wǎng)(subnet); 一個(gè)子網(wǎng)是一個(gè)主A類(lèi)、B類(lèi)或C類(lèi)地址空間的一個(gè)子集。
現(xiàn)在,IPv4 地址包括3個(gè)部分:網(wǎng)絡(luò)部分、子網(wǎng)部分和主機(jī)部分。地址掩碼現(xiàn)在變?yōu)樽泳W(wǎng)掩碼,或比標(biāo)準(zhǔn)地址掩碼長(zhǎng)的掩碼。地址的前兩個(gè)八位組依然是172.21,但是第3個(gè)八位組——主機(jī)位已經(jīng)由子網(wǎng)位代替-的變化范圍為 0-255.在圖1-6中的網(wǎng)絡(luò)有子網(wǎng)1.2、3、4和5(172.21.1.0-17221.5.0)。在單- B類(lèi)地址下最多可以有256個(gè)子網(wǎng),對(duì)應(yīng)的掩碼如圖1-7所示。
1700 萬(wàn)個(gè)數(shù)據(jù)鏈路看上去很多。但是你要考慮到。一個(gè)中等規(guī)模的企業(yè)就可能有許多數(shù)據(jù)鏈路。
下面給出兩點(diǎn)告誡。首先,并不是所有路由選擇協(xié)議都支持子網(wǎng)地址,即子網(wǎng)位全0或全1.因?yàn)檫@些協(xié)議是有類(lèi)別化協(xié)議,它們不能區(qū)分一個(gè)全0子網(wǎng)和主網(wǎng)絡(luò)號(hào)。例如,在圖1-7中子網(wǎng)0為172.21.0.0;而主網(wǎng)IP地址也為172.21.0.0.沒(méi)有更多信息將無(wú)法區(qū)分二者。
同樣的,有類(lèi)別路由選擇協(xié)議也不能區(qū)分全I(xiàn)子網(wǎng)的廣播地址和:一個(gè)所有子網(wǎng)的廣播地址。例如,圖1-7中的全1子網(wǎng)為172.21.255.0.對(duì)于這個(gè)子網(wǎng),廣播地址是12.21.255.255,但.是這也是在主網(wǎng)172.21.0.0 的所有子網(wǎng)上所有主機(jī)的廣播地址。沒(méi)有更多的信息也無(wú)法區(qū)分二者。第1版RIP協(xié)議和IGRP協(xié)議都是有類(lèi)別路由選擇協(xié)議:第7章將會(huì)介紹無(wú)類(lèi)別路由選擇協(xié)議,這種路由選擇協(xié)議才可以真正地使用全0或全1子網(wǎng)。
其次是與子網(wǎng)及其掩碼的口頭表述有關(guān)。在圖1-7中,對(duì)B類(lèi)地址的第3個(gè)八位組進(jìn)行子網(wǎng)劃分是非常普遍的,但還常常聽(tīng)到人們這樣表述子網(wǎng)設(shè)計(jì):“B類(lèi)地址使用C類(lèi)地址掩碼”,或者“將B類(lèi)地址劃分為C類(lèi)地址”。這兩種表述都是錯(cuò)誤的。它們常常會(huì)對(duì)子網(wǎng)設(shè)計(jì)引起誤解或者是不準(zhǔn)確的理解。對(duì)于圖1-6 中所示的子網(wǎng)劃分圖解的正確表述應(yīng)該是“一個(gè)使用8位進(jìn)行子網(wǎng)劃分的B類(lèi)地址”或者“一個(gè)帶有24位掩碼的B類(lèi)地址”。
可以用以下3種格式中的任何一種表示子網(wǎng)掩碼:
- 點(diǎn)分十進(jìn)制: 255.255.255.0
- 位計(jì)數(shù): 172.21.0.0/24
- 十六進(jìn)制: 0FFFF0O
雖然位計(jì)數(shù)格式變得漸漸流行起來(lái),但是點(diǎn)分十進(jìn)制暫時(shí)一段時(shí)期仍舊經(jīng)常使用在一些軟件里面。與點(diǎn)分十進(jìn)制相比,位計(jì)數(shù)格式更容易書(shū)寫(xiě)(地址后面是1,后面緊跟著是網(wǎng)絡(luò)部分的位計(jì)數(shù))。另外,位計(jì)數(shù)格式可以更清楚地描述掩碼的實(shí)際作用,因而可以避免前面段落出現(xiàn)的語(yǔ)義誤解問(wèn)題。某些UNIX系統(tǒng)使用十六進(jìn)制格式。
雖然在Cisco路由器中必須使用點(diǎn)分十進(jìn)制方式表示地址掩碼,但是在行配置模式下使用命令ip netmask-format(decimalhexadecimalbit-count],可以設(shè)置使用3種格式中的任何一種格式顯示掩碼。例如,為使路由器以位計(jì)數(shù)格式顯示掩碼,配置如下
- Gladys (config) # line vty 04
- Gladys (config-line)i ip netmask-fomat bit-count
所有主機(jī)的IP廣播地址是所有位全為I: 5.55.2555特定子網(wǎng)的廣播地址是所有主機(jī)位全為1:例如,子網(wǎng)17221.1.0的廣樓地址是12.1.255.最后,對(duì)于所有子網(wǎng)的所有主機(jī)來(lái)說(shuō),廣播地址是子網(wǎng)為和主機(jī)位均為1: 12.1255.255.
子網(wǎng)規(guī)劃
如前面部分所述,在有類(lèi)別地址環(huán)境中,子網(wǎng)位不能全部為0或全部為1。同樣的,一個(gè)主機(jī)的IPv4地址也不能將主機(jī)位全部設(shè)置為0,這種用法是為路由器保留的,用于表示網(wǎng)絡(luò)和子網(wǎng)自身。當(dāng)然IPv4地址的主機(jī)位也不能全部被設(shè)置為1,因?yàn)樗糜诒硎緩V播地址。所有這些限制無(wú)一例外地適用于IP地址的主機(jī)位,并且這也是子網(wǎng)規(guī)劃的起點(diǎn)。除了這些限制,網(wǎng)絡(luò)設(shè)計(jì)人員還需要根據(jù)地址空間與網(wǎng)絡(luò)詳細(xì)的匹配程度來(lái)選擇最合理的子網(wǎng)劃分方案。
在規(guī)劃子網(wǎng)和子網(wǎng)掩碼時(shí),可以使用相同的公式計(jì)算一個(gè)主網(wǎng)地址下可用的子網(wǎng)數(shù)以及每個(gè)子網(wǎng)內(nèi)可用的主機(jī)數(shù),公式為: 2"-2, 其中n表示子網(wǎng)位數(shù)或主機(jī)空間,2表示減去全0和全1兩個(gè)不可用地址。例如,給定一個(gè)A類(lèi)地址10.0.0.0,子網(wǎng)掩碼10.0.0.0/16(255.255.0.0)意味著有8位子網(wǎng)空間,也就是可以產(chǎn)生2*-2=254個(gè)子網(wǎng),每個(gè)子網(wǎng)可以有2*16次方-2=65 534個(gè)主機(jī)地址。另一方面,掩碼10.0.0.0/24 525.255.0)0表示有16位子網(wǎng)空間,可以產(chǎn)生65534個(gè)子網(wǎng),其中8位主機(jī)空間可以在某個(gè)子網(wǎng)中產(chǎn)生254個(gè)主機(jī)地址。
下面是IPv4地址子網(wǎng)劃分的步驟:
- 步驟1:確定需要多少個(gè)子網(wǎng),每個(gè)子網(wǎng)需要多少臺(tái)主機(jī)。
- 步驟2:為了滿(mǎn)足第1步提出的需求,使用公式2*-2確定子網(wǎng)位數(shù)和主機(jī)位數(shù)。如果存在多個(gè)子網(wǎng)掩碼可以滿(mǎn)足第1步需求,那么選擇最能夠符合未來(lái)需求的一個(gè)。例如,如果網(wǎng)絡(luò)最有可能通過(guò)增加子網(wǎng)發(fā)展起來(lái),那么選擇子網(wǎng)位最多的掩碼;如果網(wǎng)絡(luò)最有可能借助增加現(xiàn)有子網(wǎng)內(nèi)的主機(jī)數(shù)發(fā)展起來(lái),則選擇主機(jī)位最多的掩碼。為了避免所選擇的方案中的子網(wǎng)及子網(wǎng)內(nèi)的主機(jī)地址被迅速地用完,
- 需要為將來(lái)的發(fā)展預(yù)留一些空間。
- 步驟3:使用二進(jìn)制進(jìn)行計(jì)算,在子網(wǎng)空間中確定所有的位組合方式。在每種組合方式中,將所有主機(jī)位都設(shè)置為0,將得到的子網(wǎng)地址轉(zhuǎn)換為點(diǎn)分十進(jìn)制格式。最終結(jié)果就是子網(wǎng)地址。
- 步驟4:對(duì)于每一個(gè)子網(wǎng)地址,再次使用二進(jìn)制,在保持子網(wǎng)位不變的情況下寫(xiě)出所有主機(jī)位組合,并將結(jié)果轉(zhuǎn)換成點(diǎn)分十進(jìn)制格式。最終結(jié)果就是每個(gè)子網(wǎng)的可用主機(jī)地址。
這里沒(méi)有過(guò)分強(qiáng)調(diào)在最后兩步中使用二進(jìn)制的重要性。當(dāng)進(jìn)行子網(wǎng)劃分時(shí),最主要的惟一錯(cuò)誤根源就是,在沒(méi)有理解在二進(jìn)制上會(huì)發(fā)生什么的情況下試圖使用點(diǎn)分十進(jìn)制方法。此外,點(diǎn)分十進(jìn)制表示法對(duì)于人們讀寫(xiě)IPv4 地址十分方便。但是路由器和主機(jī)卻把地址看作32位二進(jìn)制字符串:為了順利地完成地址操作,必須采用路由器和主機(jī)處理地址的方式。
就目前給出的例子而言,作者在前面的段落中似乎有點(diǎn)多慮了。在沒(méi)有限定必須使用二進(jìn)制方式表示地址和掩碼的時(shí)候,子網(wǎng)模式和主機(jī)地址看上去還是十分清楚的。
打破八位組界線(xiàn)
到目前為止,在給出的例子中,子網(wǎng)空間都是以八位組為界線(xiàn)的。但這并不總是最實(shí)用或最有效的選擇。例如,如果你需要對(duì)一個(gè)B類(lèi)地址進(jìn)行子網(wǎng)劃分,并滿(mǎn)足以下需求:數(shù)據(jù)鏈路數(shù)為500,每個(gè)數(shù)據(jù)鏈路內(nèi)主機(jī)數(shù)不超過(guò)100臺(tái),應(yīng)該怎么辦?這樣的需求很容易得以滿(mǎn)足,只要使用9位子網(wǎng)位,就可以得到2-2=510個(gè)子網(wǎng),剩下7位做主機(jī)位,每個(gè)子網(wǎng)的可用主機(jī)數(shù)為2-2=126.除此不再有其他位組合可以滿(mǎn)足上面的需求。
請(qǐng)注意,如果還是以八位組為界線(xiàn)的話(huà),那么將無(wú)法對(duì)C類(lèi)地址進(jìn)行子網(wǎng)劃分。如果要這樣做就會(huì)占用最后1個(gè)八位組,那么就沒(méi)有更多主機(jī)位了。因此,如下面的例子所示,子網(wǎng)位和主機(jī)位必須共享最后1個(gè)八位組。
圖1-8與圖1-7中顯示的網(wǎng)絡(luò)除了分配的地址是C類(lèi)地址192.168.100.0之外,其他完全相同。
在這個(gè)網(wǎng)絡(luò)中共有5條數(shù)據(jù)鏈路,因此至少需要?jiǎng)澐殖?個(gè)子網(wǎng)地址。圖中還指明了每個(gè)子網(wǎng)需要分配的主機(jī)數(shù)(包括路由器接口)。其中兩個(gè)以太網(wǎng)最多需要25個(gè)主機(jī)地址。所以完整的子網(wǎng)劃分最小需求是5個(gè)子網(wǎng),每個(gè)子網(wǎng)至少需要25個(gè)主機(jī)地址。
使用公式2"-2可以計(jì)算出,3個(gè)子網(wǎng)位和5個(gè)主機(jī)位即可以滿(mǎn)足需求: 2*-2=6, 2*-2=30。帶有3位子網(wǎng)位的C類(lèi)地址掩碼可以用點(diǎn)分十進(jìn)制表示為255255.255.224.
圖1-9給出了子網(wǎng)位的推導(dǎo)過(guò)程。用二進(jìn)制表示第2步計(jì)算出的子網(wǎng)掩碼,子網(wǎng)掩碼下面是IP地址。垂直線(xiàn)標(biāo)記了子網(wǎng)空間,從二進(jìn)制0開(kāi)始計(jì)數(shù),在這一空間中的所有 位組合均被寫(xiě)出。
在圖2-10中,不發(fā)生變化的網(wǎng)絡(luò)位填寫(xiě)在子網(wǎng)空間的左邊,全部為0的主機(jī)位填寫(xiě)在子網(wǎng)位的右邊。結(jié)果被轉(zhuǎn)換為點(diǎn)分十進(jìn)制表示后,得到6個(gè)子網(wǎng)地址(記住,第一個(gè)和最后一個(gè)地址,即在子網(wǎng)空間中全部位為0和全部位為I的地址不能使用)。
最后一步是計(jì)算每個(gè)子網(wǎng)內(nèi)的可用主機(jī)地址。這一步通過(guò)以下方式完成:首先選擇一個(gè)子網(wǎng)地址,保持其中的網(wǎng)絡(luò)位和子網(wǎng)位不變,從二進(jìn)制0開(kāi)始計(jì)數(shù),寫(xiě)出主機(jī)空間中所有的位組合。圖1-11給出了針對(duì)子網(wǎng)192. 168.100.32的計(jì)算過(guò)程。
注意結(jié)果的模式:第一個(gè)地址所有主機(jī)位全部為0,這是子網(wǎng)地址。最后一個(gè)地址主機(jī)位全部為1,這是子網(wǎng)192.168.100.32的廣播地址。主機(jī)地址從子網(wǎng)地址起到廣播地址為止。按照順序,下一個(gè)子網(wǎng)地址是192.168.100.64.
現(xiàn)在,在二進(jìn)制層次上理解子網(wǎng)劃分的重要性就顯而易見(jiàn)了。給出一個(gè)地址,如192.168.100.160,你不能確定它是否是一個(gè)主機(jī)地址、子網(wǎng)地址或廣播地址。甚至在子網(wǎng)掩碼已知情況下,結(jié)論也并不總是明顯的。
這里我們鼓勵(lì)讀者計(jì)算例子中所有余下子網(wǎng)的主機(jī)地址,并且仔細(xì)觀察產(chǎn)生地址的模式,理解這些模式對(duì)下一部分的內(nèi)容會(huì)有幫助。
子網(wǎng)掩碼的故障診斷
在“解剖”一個(gè)給定的主機(jī)地址和掩碼時(shí),常常需要確定地址屬于哪個(gè)子網(wǎng)。例如,如果在一個(gè)接口上配置了地址,一個(gè)很好的實(shí)踐就是首先驗(yàn)證對(duì)于按口連接的子網(wǎng)來(lái)說(shuō)該地址是否合法。
使用下面的步驟逆推一個(gè)IP地址:
- 步驟1:用二進(jìn)制寫(xiě)下一個(gè)給定的子網(wǎng)掩碼。
- 步驟2:用二進(jìn)制寫(xiě)下一個(gè)主機(jī)IPv4地址。
- 步驟3:在知道一個(gè)地址的類(lèi)別后,掩碼的子網(wǎng)位便是顯然的了。根據(jù)掩碼位,在最后網(wǎng)絡(luò)位和第1個(gè)子網(wǎng)位之間畫(huà)一條線(xiàn),在最后子網(wǎng)位和第1臺(tái)主機(jī)之間也畫(huà)另一條線(xiàn)。
- 步驟4:寫(xiě)下地址的網(wǎng)絡(luò)位和子網(wǎng)位,設(shè)置所有的主機(jī)位為0。最終的結(jié)果就是主機(jī)地址所屬的子網(wǎng)地址。
- 步驟5:再次寫(xiě)下地址的網(wǎng)絡(luò)位和子網(wǎng)位,這次設(shè)置所有主機(jī)位為1.結(jié)果就是本子網(wǎng)的廣播地址。
- 步驟6:按照順序可以知道第一個(gè)地址是子網(wǎng)地址,最后一個(gè)地址是廣播地址。而且還可以知道在這兩個(gè)地址之間的所有地址都是合法的主機(jī)地址。
對(duì)于地址172.30.141/25,圖1-.12給出了以上步驟的示例。
這個(gè)地址是B類(lèi)地址,所以前16位是網(wǎng)絡(luò)位,25位掩碼中的后9位是子網(wǎng)位。可以發(fā)現(xiàn)子網(wǎng)地址是172.30.0.128, 廣播地址是172.30.0.255.在這兩個(gè)地址之間的主機(jī)地址對(duì)于這個(gè)子網(wǎng)來(lái)說(shuō)都是合法的,如對(duì)子網(wǎng)172.30.0.128來(lái)說(shuō),172.30.0.129 -172.30.0.254都是主機(jī)地址。
在這個(gè)例子中,初次進(jìn)行子網(wǎng)劃分的人可能會(huì)受到以F幾種情況的干擾。一種是地址的第3個(gè)八位組所有位都為0.另一種是最后一個(gè)八位組儀一個(gè)子網(wǎng)位。一些人可能會(huì)認(rèn)為廣播地址看上去不合法。所有這些不舒服的感覺(jué)都源自地址的點(diǎn)分十進(jìn)制表示法。
當(dāng)使用二進(jìn)制表示地址和掩碼時(shí),這些疑慮會(huì)被打消,任何事看上去都一切正常,掩碼設(shè)定了9位子網(wǎng)空間一包括第3個(gè)八位組和第4個(gè)八位組的第1位。這個(gè)案例說(shuō)明了如果使用二進(jìn)制表示法時(shí)一切正常,那么就不必?fù)?dān)心看上去有些奇怪的點(diǎn)分十進(jìn)制表示法。