從前面的文章我們知道,從 IP 數(shù)據(jù)報(bào)的首部無(wú)法看出源主機(jī)或目的主機(jī)所連接的網(wǎng)絡(luò)是否進(jìn)行了子網(wǎng)的劃分,所以需要借助子網(wǎng)掩碼。
示例闡述
以下面的圖示舉例,講述子網(wǎng)掩碼對(duì)路由器尋址起到的關(guān)鍵作用。
(a) 是 IP 地址為 145.13.3.10 的主機(jī)原本的兩級(jí) IP 地址結(jié)構(gòu)。
(b) 是這個(gè)兩級(jí) IP 地址的子網(wǎng)掩碼。因?yàn)槭?B 類(lèi)地址,所以子網(wǎng)掩碼默認(rèn)為 16 位。
(c) 是同一地址的三級(jí) IP 地址結(jié)構(gòu),也就是說(shuō),現(xiàn)在從原來(lái)16位的主機(jī)號(hào)中拿出8位作為子網(wǎng)號(hào),而主機(jī)號(hào)由16位減少到8位。
為了使路由器能夠很方便地從數(shù)據(jù)報(bào)中的目的IP地址中提取出所要找的子網(wǎng)的網(wǎng)絡(luò)地址,路由器需要借助三級(jí)IP地址的子網(wǎng)掩碼。
(d) 是三級(jí)IP地址的子網(wǎng)掩碼。子網(wǎng)掩碼中的1對(duì)應(yīng)于IP地址中原來(lái)二級(jí)地址中的16位網(wǎng)絡(luò)號(hào)加上新增加的8位子網(wǎng)號(hào),而子網(wǎng)掩碼中的0對(duì)應(yīng)于現(xiàn)在的8位主機(jī)號(hào)。
(e) 路由器把三級(jí)IP地址的子網(wǎng)掩碼和收到的數(shù)據(jù)報(bào)的目的IP地址145.13.3.10逐位相“與”(AND),得出了所要找的子網(wǎng)的網(wǎng)絡(luò)地址145.13.3.0。
總結(jié)
使用子網(wǎng)掩碼的好處就是:不管網(wǎng)絡(luò)有沒(méi)有劃分子網(wǎng),只要把子網(wǎng)掩碼和IP地址進(jìn)行逐位的“與”運(yùn)算(AND),就立即得出網(wǎng)絡(luò)地址來(lái)。這樣在路由器處理到來(lái)的分組時(shí)就可采用同樣的算法。
思考
這里還要弄清一個(gè)問(wèn)題,就是:在不劃分子網(wǎng)時(shí),既然沒(méi)有子網(wǎng),為什么還要使用子網(wǎng)掩碼?這就是為了更便于查找路由表。
現(xiàn)在因特網(wǎng)的標(biāo)準(zhǔn)規(guī)定:所有的網(wǎng)絡(luò)都必須使用子網(wǎng)掩碼,同時(shí)在路由器的路由表中也必須有子網(wǎng)掩碼這一欄。如果一個(gè)網(wǎng)絡(luò)不劃分子網(wǎng),那么該網(wǎng)絡(luò)的子網(wǎng)掩碼就使用默認(rèn)子網(wǎng)掩碼。默認(rèn)子網(wǎng)掩碼中1的位置和IP地址中的網(wǎng)絡(luò)號(hào)字段net-id正好相對(duì)應(yīng)。因此,若用默認(rèn)子網(wǎng)掩碼和某個(gè)不劃分子網(wǎng)的IP地址逐位相“與”(AND),就應(yīng)當(dāng)能夠得出該IP地址的網(wǎng)絡(luò)地址來(lái)。這樣做可以不用查找該地址的類(lèi)別位就能知道這是哪一類(lèi)的IP地址。