在網(wǎng)絡(luò)中需五,經(jīng)常有這樣的場景除呵,如果兩個網(wǎng)卡位于同一物理局域網(wǎng)絡(luò)上,那么它們就可以直接在MAC層互相通信爪喘。
此時颜曾,就有一個問題,運行在底層的通信軟件秉剑,“如何”知道兩個網(wǎng)卡是位于同一網(wǎng)絡(luò)中泛豪?關(guān)鍵就是在子網(wǎng)掩碼(Subnet Mast),這是一種特殊的位模式侦鹏,在目前的IPv4網(wǎng)絡(luò)中诡曙,任何使用TCP/IP協(xié)議的網(wǎng)卡,都必須定義子網(wǎng)掩碼略水。
子網(wǎng)掩碼是一個特殊的位模式价卤,其IPv4地址的網(wǎng)絡(luò)號全部為1。
我們常用的IPv4地址有三類—A渊涝、B慎璧、C類,都有其自己的默認子網(wǎng)掩碼跨释。n表示網(wǎng)絡(luò)部分胸私,h表示地址部分。
可以看到煤傍,子網(wǎng)掩碼識別的是IP地址中的網(wǎng)絡(luò)部分盖文。
一般來講,一個擁有許多物理網(wǎng)絡(luò)的單位蚯姆,可將所屬的物理網(wǎng)絡(luò)劃分為若干個子網(wǎng)(subnet)五续。因為劃分子網(wǎng)是一個單位內(nèi)部的事,因此本單位以外的網(wǎng)絡(luò)看不見這個網(wǎng)絡(luò)具體是由多少個子網(wǎng)組成龄恋,該單位對外部仍是表現(xiàn)為一個網(wǎng)絡(luò)疙驾。
劃分子網(wǎng)的方法是從網(wǎng)絡(luò)的主機號借用若干位作為子網(wǎng)號(subnet-id),同時主機號也會相應(yīng)的減少同樣的位數(shù)郭毕,于是原本兩級的IP地址在劃分子網(wǎng)的單位內(nèi)部就變?yōu)?b>三級IP地址:網(wǎng)絡(luò)號它碎、子網(wǎng)號和主機號。
對于劃分了子網(wǎng)的網(wǎng)絡(luò)显押,外部其他網(wǎng)絡(luò)發(fā)送給本單位某個主機的IP數(shù)據(jù)報后扳肛,首先還是根據(jù)IP數(shù)據(jù)報的目的網(wǎng)絡(luò)號找到連接在本單位網(wǎng)絡(luò)上的路由器。路由器接收到IP數(shù)據(jù)報以后乘碑,再按照網(wǎng)絡(luò)號和子網(wǎng)號找到目的子網(wǎng)挖息,進而再把IP數(shù)據(jù)報交給目的主機。
我們舉個例子兽肤,假設(shè)某家公司擁有一個B類的IP地址套腹,網(wǎng)絡(luò)地址是145.13.0.0绪抛,其網(wǎng)絡(luò)號是145.13。
那么电禀,根據(jù)網(wǎng)絡(luò)協(xié)議幢码,凡目的地址為145.13.x.x的IP數(shù)據(jù)報都會被發(fā)送到該網(wǎng)絡(luò)上的路由器。
現(xiàn)把B類網(wǎng)絡(luò)145.13.0.0劃分為3個子網(wǎng)尖飞,子網(wǎng)號占用8位症副,那么主機號就剩下8位。該網(wǎng)絡(luò)所劃分的三個子網(wǎng)分別為145.13.3.0葫松、145.13.7.0和145.13.21.0瓦糕。
劃分子網(wǎng)后,該網(wǎng)絡(luò)對外部表現(xiàn)仍為一個網(wǎng)絡(luò)腋么,其網(wǎng)絡(luò)地址依舊是145.13.0.0咕娄,但網(wǎng)絡(luò)145.13.0.0上的路由器接收到外來的數(shù)據(jù)報后,會根據(jù)數(shù)據(jù)包的目的地址把它轉(zhuǎn)發(fā)到相應(yīng)的子網(wǎng)珊擂。
那么圣勒,對于該網(wǎng)絡(luò)的路由器,在接收到帶有目的IP地址的數(shù)據(jù)報摧扇,是如何判斷出目的主機所在的子網(wǎng)的圣贸?
IP數(shù)據(jù)報和IP地址本身,其攜帶的信息里并不包含數(shù)據(jù)報源主機或目的主機所連接的網(wǎng)絡(luò)是否進行了子網(wǎng)劃分扛稽。對于路由器來說吁峻,為了找到目的主機所在的子網(wǎng),也要使用子網(wǎng)掩碼在张。
以IP地址145.13.7.35為目的主機地址用含,按照三級IP地址去理解,目的主機的網(wǎng)絡(luò)位為145.13帮匾,子網(wǎng)位為7啄骇,主機位為35。
可以看出瘟斜,子網(wǎng)號為145.13.7缸夹。路由器要使用子網(wǎng)掩碼,根據(jù)三級IP地址的結(jié)構(gòu)和子網(wǎng)掩碼的使用規(guī)范螺句,子網(wǎng)掩碼中的1對應(yīng)目的IP的子網(wǎng)號虽惭,0對應(yīng)主機位,也就是說蛇尚,32位IPv4芽唇,前24位都是1,后8位是0佣蓉,用二進制表示就是11111111111111111111111100000000披摄,換算成十進制為255.255.255.0。
路由器會把子網(wǎng)掩碼和目的主機地址進行與(AND)運算勇凭,然后便能得出目的主機所在的子網(wǎng)的網(wǎng)絡(luò)地址疚膊。
與(AND)運算是一種邏輯運算,符號為&虾标。在二進制中寓盗,運算規(guī)則為1&0=0,0&0=0,1&1=1。
路由器是根據(jù)路由表來工作的璧函,按照因特網(wǎng)的標(biāo)準(zhǔn)規(guī)定傀蚌,路由器的路由表中必須有子網(wǎng)掩碼這一欄。路由器在和相鄰路由器交換路由信息時蘸吓,必須要把自己所在網(wǎng)絡(luò)或子網(wǎng)的子網(wǎng)掩碼傳遞到相鄰路由器善炫。
在路由器的路由表中的每一個項目,除了要給出目的網(wǎng)絡(luò)地址库继,還必須同時給出網(wǎng)絡(luò)的子網(wǎng)掩碼箩艺。若一個路由器連接在兩個子網(wǎng)上,就擁有兩個網(wǎng)絡(luò)地址和兩個子網(wǎng)掩碼宪萄。
若是網(wǎng)絡(luò)沒有專門劃分子網(wǎng)艺谆,路由器的路由表中子網(wǎng)掩碼那一欄使用的就是前文說過的默認子網(wǎng)掩碼。
但是拜英,由于IPv4地址空間日益消耗静汤,并且路由表中的項目數(shù)隨著網(wǎng)絡(luò)的增多也越來越長,在IPv6沒有出來的那段時間居凶,在原先子網(wǎng)掩碼的概念上引出了新的辦法虫给。
一個是變長子網(wǎng)掩碼VLSM(Variable Length Subnet Mask),在一個劃分了子網(wǎng)的網(wǎng)絡(luò)中可同時使用幾個不同的子網(wǎng)掩碼。
另外一個是無分類域間路由選擇CIDR(Class Inter-Domain Routing)排监,CIDR消除了傳統(tǒng)的A類狰右、B類和C類地址以及子網(wǎng)劃分的概念,可以在IP地址的網(wǎng)絡(luò)部分和主機部分的任何邊界設(shè)置邊界舆床,大大拓展了IPv4地址的使用效率棋蚌。
目前的網(wǎng)絡(luò)中,特別是對IPv4地址的使用上挨队,CIDR占據(jù)了主要地位谷暮。