複製鏈接
請複製以下鏈接發送給好友

子網掩碼

鎖定
子網掩碼(subnet mask)又叫網絡掩碼、地址掩碼、子網絡遮罩,它用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機的位掩碼。子網掩碼不能單獨存在,它必須結合IP地址一起使用。
子網掩碼是一個32位地址,用於屏蔽IP地址的一部分以區別網絡標識和主機標識,並説明該IP地址是在局域網上,還是在廣域網上。
中文名
子網掩碼
外文名
Subnet Mask
別    名
網絡掩碼
別    名
地址掩碼
所屬行業
計算機網絡
作    用
IP劃分成網絡地址和主機地址

子網掩碼發展歷程

在早期網絡設計階段,即20世紀60年代到80年代初,子網掩碼的概念尚未引入,網絡設計採用了基本的網絡拓撲和地址分配方式。在這個時期,IPv4地址分配採用了類別地址方案,將 IP 地址劃分為A類、B類、C類、D類和E類,這限制了網絡的靈活性,導致了地址浪費和不均勻的資源分配 [9]  。因此需要引入子網掩碼來合理的分配有限的互聯網資源 [10] 

子網掩碼簡介

子網掩碼是在IPv4地址資源緊缺的背景下為了解決lP地址分配而產生的虛擬lP技術,通過子網掩碼將A、B、C三類地址劃分為若干子網,從而顯著提高了IP地址的分配效率,有效解決了IP地址資源緊張的局面。另一方面,在企業內網中為了更好地管理網絡,網管人員也利用子網掩碼的作用,人為地將一個較大的企業內部網絡劃分為更多個小規模的子網,再利用三層交換機的路由功能實現子網互聯,從而有效解決了網絡廣播風暴和網絡病毒等諸多網絡管理方面的問題。 [1] 
在大多數的網絡教科書中,一般都將子網掩碼的作用描述為通過邏輯運算,將IP地址劃分為網絡標識(Net.ID)和主機標識(Host.ID),只有網絡標識相同的兩台主機在無路由的情況下才能相互通信。 [1] 
根據RFC950定義,子網掩碼是一個32位的2進制數, 其對應網絡地址的所有位都置為1,對應於主機地址的所有位置都為0。子網掩碼告知路由器,地址的哪一部分是網絡地址,哪一部分是主機地址,使路由器正確判斷任意IP地址是否是本網段的,從而正確地進行路由。網絡上,數據從一個地方傳到另外一個地方,是依靠IP尋址。從邏輯上來講,是兩步的。第一步,從IP中找到所屬的網絡,好比是去找這個人是哪個小區的;第二步,再從IP 中找到主機在這個網絡中的位置,好比是在小區裏面找到這個人。 [2] 
子網掩碼的設定必須遵循一定的規則。與二進制IP地址相同,子網掩碼由1和0組成,且1和0分別連續。子網掩碼的長度也是32位,左邊是網絡位,用二進制數字“1”表示,1的數目等於網絡位的長度;右邊是主機位,用二進制數字“0”表示,0的數目等於主機位的長度。這樣做的目的是為了讓掩碼與IP地址做按位與運算時用0遮住原主機數,而不改變原網絡段數字,而且很容易通過0的位數確定子網的主機數(2的主機位數次方-2,因為主機號全為1時表示該網絡廣播地址,全為0時表示該網絡的網絡號,這是兩個特殊地址)。通過子網掩碼,才能表明一台主機所在的子網與其他子網的關係,使網絡正常工作。

子網掩碼子網掩碼的功能

子網掩碼是一個32位地址,是與IP地址結合使用的一種技術。它的主要作用有兩個,一是用於屏蔽IP地址的一部分以區別網絡標識和主機標識,並説明該IP地址是在局域網上,還是在遠程網上。二是用於將一個大的IP網絡劃分為若干小的子網絡。
使用子網是為了減少IP的浪費。因為隨着互聯網的發展,越來越多的網絡產生,有的網絡多則幾百台,有的只有區區幾台,這樣就浪費了很多IP地址,所以要劃分子網。使用子網可以提高網絡應用的效率。
通過計算機的子網掩碼判斷兩台計算機是否屬於同一網段的方法是,將計算機十進制的IP地址和子網掩碼轉換為二進制的形式,然後進行二進制“與”(AND)計算(全1則得1,不全1則得0),如果得出的結果是相同的,那麼這兩台計算機就屬於同一網段。 [3] 

子網掩碼聲明網絡地址與主機地址

表 1 默認子網掩碼 [2] 
類別
子網掩碼的二進制數值
子網掩碼的十進制數值
A
11111111 00000000 00000000 00000000
255.0.0.0
B
11111111 11111111 00000000 00000000
255.255.0.0
C
11111111 11111111 11111111 00000000
255.255.255.0
子網掩碼一定是配合IP地址來使用的。對於常用網絡A、 B、C 類IP地址其默認子網掩碼的二進制與十進制對應關係如表1所示。子網掩碼工作過程是:將32位的子網掩碼與IP地址進行二進制形式的按位邏輯“”運算得到的便是網絡地址,將子網掩碼二進制按位取反,然後與IP地址二進制進行邏輯“與”(AND)運算,得到的就是主機地址。如:192.168.10.11 AND 255.255.255.0,結果為192.168.10.0,其表達的含義為:該IP地址屬於 192.168.10.0這個網絡,其主機號為10,即這個網絡中編號為10的主機。 [2] 

子網掩碼劃分子網

子網掩碼機制提供了子網劃分的方法。其作用是:減少網絡上的通信量;節省IP地址;便於管理;解決物理網絡本身的某些問題。使用子網掩碼劃分子網後,子網內可以通信,跨子網不能通信,子網間通信應該使用路由器,並正確配置靜態路由信息。劃分子網,就應遵循子網劃分結構的規則。就是用連續的1在IP地址中增加表示網絡地址,同時減少表示主機地址的位數。例如,IP地址為130.39.37.100,網絡地址為130.39.37.0、子網地址為130.39.37.0、子網掩碼為255.255.255.0,網絡地址部分和子網標識部分為“1”所對應,主機標識部分為“0”所對應。 使用CIDR表示為:130.39.37.100/24即IP地址/ 掩碼長度。其中第三個字節上的255 所對應的8位二進制數值就是將主機地址位數借給了網絡地址部分,充當了劃分子網的位數。 [2] 
具體劃分子網的步驟: [8] 
(1)確定需要的子網數量N。一般來説,交換機互聯的設備是同一網段,路由器不同的接口連接的設備是不同網段。 [8] 
(2)根據子網數量N以及公式,計算出子網標識的位數n。 [8] 
(3)將申請到的網段對應的子網掩碼中主機標識的前n位置1,變成子網標識,其餘位置仍維持0不變。 [8] 
(4)根據主機標識全為0表示網絡地址的原則寫出各子網的子網標識和網絡地址。 [8] 

子網掩碼計算方式

由於子網掩碼的位數決定於可能的子網數目和每個子網的主機數目。在定義子網掩碼前,必須弄清楚本來使用的子網數和主機數目。

子網掩碼根據子網數

利用子網數來計算
在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。
  1. 將子網數目轉化為二進制來表示
  2. 取得該二進制的位數,為 N
  3. 取得該IP地址的類子網掩碼,將其主機地址部分的前N位置1 即得出該IP地址劃分子網的子網掩碼。
如欲將B類IP地址168.195.0.0劃分成27個子網:
  1. 27=11011
  2. 二進制為五位數,N = 5
  3. 將B類地址的子網掩碼255.255.0.0的主機地址前5位置1(B類地址的主機位包括後兩個字節,所以這裏要把第三個字節的前5位置1),得到 255.255.248.0
即為劃分成27個子網的B類IP地址 168.195.0.0的子網掩碼(實際上是劃成了32個子網)。 [4] 

子網掩碼根據主機數

利用主機數來計算
  1. 將主機數目轉化為二進制來表示
  2. 如果主機數小於或等於254(注意去掉保留的兩個IP地址),則取得該主機的二進制位數,為 N,這裏肯定N<8。如果大於254,則 N>8,這就是説主機地址將佔據不止8位。
  3. 使用255.255.255.255來將該類IP地址的主機地址位數全部置1,然後從後向前的將N位全部置為 0,即為子網掩碼值。
如欲將B類IP地址168.195.0.0劃分成若干子網,每個子網內有主機700台:
  1. 700=1010111100
  2. 二進制為十位數,N = 10
  3. 將該B類地址的子網掩碼255.255.0.0的主機地址全部置1,得到255.255.255.255
然後再從後向前將後10位置0,即為: 11111111.11111111.11111100.00000000
即255.255.252.0。這就是該域劃分成主機為700台的B類IP地址168.195.0.0的子網掩碼。 [4] 

子網掩碼增量計算法

子網ID增量計算法(即計算每個子網的IP範圍)
其基本計算步驟如下:
第1步,將所需的子網數轉換為二進制,如所需劃分的子網數為“4”,則轉換成成二進制為00000100;
第2步,取子網數的二進制中有效位數,即為向缺省子網掩碼中加入的位數(既向主機ID中借用的位數)。如前面的00000100,有效位為“100”,為3位(在新標準中只需要2位就可以了);
第3步,決定子網掩碼。如IP地址為B類129.20.0.0網絡,則缺省子網掩碼為:255.255.0.0,借用主機ID的3位以後變為:255.255.224(11100000).0,即將所借的位全表示為1,用作子網掩碼。
第4步,將所借位的主機ID的起始位段最右邊的“1”轉換為十進制,即為每個子網ID之間的增量,如前面的借位的主機ID起始位段為“11100000”,最右邊的“1”,轉換成十進制後為2^5=32(此為子網ID增量)。
第5步,產生的子網ID數為:2^m-2 (m為向缺省子網掩碼中加入的位數),如本例向子網掩碼中添加的位數為3,則可用子網ID數為:2^3-2=6個;
第6步,將上面產生的子網ID增量附在原網絡ID之後的第一個位段,便形成第一個子網網絡ID 129.20.32.0(即第一個子網的起始IP段);
第7步,重複上步操作,在原子網ID基礎上加上一個子網ID增量,依次類推,直到子網ID中的最後位段為缺省子網掩碼位用主機ID位之後的最後一個位段值,這樣就可得到所有的子網網絡ID。如缺省子網掩碼位用主機ID位之後的子網ID為255.255.224.0,其中的“224”為借用主機ID後子網ID的最後一位段值,所以當子網ID通過以上增加增量的方法得到129.20.224.0時便終止,不要再添加了(只能用到129.20.192.0)。
當主機ID為全0時表示網絡ID,全1時表示廣播地址。在RFC950標準中,不建議使用全0和全1的子網ID。
例如把最後一個字節的前3位借給網絡ID,用後面的5位來表示主機ID,這樣就會產生2^3=8個子網,子網ID就分別為000、001、010、011、100、101、110、111這樣8個,在RFC950標準中只能使用中間的6個子網ID。
這麼做的原因是:
設有一個網絡:192.168.0.0/24(即子網掩碼的前24位為1,255.255.255.0),需要兩個子網,那麼按照RFC950,應該使用/26而不是/25,得到兩個可以使用的子網192.168.0.64和192.168.0.128
對於192.168.0.0/24,網絡地址是192.168.0.0,廣播地址是192.168.0.255
對於192.168.0.0/26,網絡地址是192.168.0.0,廣播地址是192.168.0.63
對於192.168.0.64/26,網絡地址是192.168.0.64,廣播地址是192.168.0.127
對於192.168.0.128/26,網絡地址是192.168.0.128,廣播地址是192.168.0.191
對於192.168.0.192/26,網絡地址是192.168.0.192,廣播地址是192.168.0.255
可以看出來,對於第一個子網,網絡地址和主網絡的網絡地址是重疊的,對於最後一個子網,廣播地址和主網絡的廣播地址也是重疊的。在CIDR流行以前,這樣的重疊將導致極大的混亂。

子網掩碼標註方法

子網掩碼無子網

無子網的標註法
對無子網的IP地址,可寫成主機號為0的掩碼。如IP地址210.73.140.5,掩碼為255.255.255.0,也可以缺省掩碼,只寫IP地址。

子網掩碼有子網

有子網的標註法
有子網時,一定要二者配對出現。以C類地址為例。
以下一段指定掩碼為27位(1111 1111, 1111 1111, 1111 1111, 1110 0000=>255.255.255.224
1.IP地址中的前3個字節表示網絡號,後一個字節既表明子網號,又説明主機號,還説明兩個IP地址是否屬於同一個網段。如果屬於同一網絡區間,這兩個地址間的信息交換就不通過路由器。如果不屬同一網絡區間,也就是子網號不同,兩個地址的信息交換就要通過路由器進行。
例如:
對於IP地址為210.73.140.5的主機來説,其主機標識為5=>00000101,
對於IP地址為210.73.140.16的主機來説它的主機標識為16=>00010000,
以上兩個主機標識的前面三位全是000,説明這兩個IP地址在同一個網絡區域中,這兩台主機在交換信息時不需要通過路由器進行。
210.73.60.1的主機標識為1=>00000001,
210.73.60.252的主機標識為252=>11111100,
這兩個主機標識的前面三位000與111不同,説明二者在不同的網絡區域,要交換信息需要通過路由器。其子網上主機號各為1和252。
2.掩碼的功用是説明有子網和有幾個子網,但子網數只能表示為一個範圍,不能確切講具體幾個子網,掩碼不説明具體子網號,有子網的掩碼格式(對C類地址)。

子網掩碼分類

子網掩碼一共分為兩類。一類是缺省(自動生成)子網掩碼,一類是自定義子網掩碼。 [5] 

子網掩碼缺省子網掩碼

缺省子網掩碼即未劃分子網,對應的網絡號的位都置1,主機號都置0。
A類網絡缺省子網掩碼:255.0.0.0
B類網絡缺省子網掩碼:255.255.0.0
C類網絡缺省子網掩碼:255.255.255.0 [5] 
在缺省掩碼下的IP地址中,網絡地址和廣播地址的計算很簡單,雖然按照計算方法需要進制轉換和與運算,但是在實際使用當中,已經可以快速寫出結果。網絡地址的計算就是子網掩碼中0對應的地方變0, “255”對應的地方不變即可;而廣播地址則是子網掩碼中0對應 的地方變“255”,“255”對應的地方不變。 [5] 

子網掩碼自定義子網掩碼

自定義子網掩碼是將一個網絡劃分為幾個子網,需要每一段使用不同的網絡號或子網號,實際上可以認為是將主機號分為兩個部分:子網號、子網主機號。形式如下:
未做子網劃分的IP地址:網絡號+主機號
做子網劃分後的IP地址:網絡號+子網號+子網主機號
也就是説IP地址在劃分子網後,以前的主機號位置的一部分給了子網號,餘下的是子網主機號。子網掩碼是32位二進制數,它的子網主機標識用部分為全“0”。利用子網掩碼可以判斷兩台主機是否在同一子網中。若兩台主機的IP地址分別與它們的子網掩碼相“與”後的結果相同,則説明這兩台主機在同一子網中。 [5] 

子網掩碼變長子網掩碼

變長子網掩碼VLSM就是每段IP地址使用不同長度的子網掩碼,可以對子網進行層次化編址,以便最有效的利用現有的地址空間。變長子網掩碼(Variable-Length Subnet Masks,VLSM)的出現是打破傳統的以類(class)為標準的地址劃分方法,是為了緩解IP地址緊缺而產生的。他的作用是節約IP地址空間;減少路由表大小。需要注意的是注意事項:使用VLSM時,所採用的路由協議必須能夠支持它,這些路由協議包括RIPv2,OSPF,EIGRPBGP [6] 
變長子網掩碼是將一個網段拆成多個子網的應用,這種應用在教育網內特別普遍,教育網使用的是電信運營商提供的互聯網出口。電信運營商為教育網提供了數個c類的公網IP地址,但是教育網的網管又希望每個學校都處於各自不同的網段,全市(包括縣區在內)有上百所學校,為了適應這個要求,就必須使用變長子網掩碼來重新規劃網絡。 [7] 
變長子網掩碼是網絡規劃中的一種常見應用,它的 目的是最大限度地節省IP地址。網管員根據自己單位實際的網絡情況,為不同網段靈活的定義不同的子網掩碼,但是很多用户由於不瞭解變長子網掩碼的相關知識從而進行了錯誤的設置。 [7] 

子網掩碼IPV6與子網掩碼

如果是都是使用的IPV6的話是沒有子網掩碼的概念。IPV6是端到端的連接通信,不需要子網了。但是,目前似乎更多都是在IPV4上使用隧道的方式使用IPV6。完全消滅IPV4還需要相當長的時間,子網掩碼目前還是要的。
IPv6中沒有子網掩碼的概念,也沒有網絡號與主機號的概念。在IPV6中前綴長度就可以當作子網掩碼來理解。接口ID可以當作主機號來理解。在Windows XP中,IPv6地址的前綴長度默認為64位。IPv6的地址空間過於廣大,可能一個子網的子網都要比整個IPv4的世界要大很多,所以子網的概念在IPv6世界裏已經淡化了。但是,同一站點的主機要想直接通信(不經過路由器),還是要求前綴相同才行的。
參考資料