子網掩碼是每個網管必須要掌握的基礎知識,只有掌握它,才能夠真正理解TCP/IP協議的設定。以下我們就來深入淺出地講解什麼是子網掩碼。 IP地址的結構 要想理解什麼是子網掩碼,就不能不瞭解IP地址的構成。網際網路是由許多小型網路構成的,每個網路上都有許多主機,這樣便構成了一個有層次的結構。IP地址在設計時就考慮到地址分配的層次特點,將每個IP地址都分割成網路號和主機號兩部分,以便於IP地址的定址操作。 IP地址的網路號和主機號各是多少位呢?如果不指定,就不知道哪些位是網路號、哪些是主機號,這就需要透過子網掩碼來實現。 什麼是子網掩碼 子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分。 子網掩碼的設定必須遵循一定的規則。與IP地址相同,子網掩碼的長度也是32位,左邊是網路位,用二進位制數字“1”表示;右邊是主機位,用二進位制數字“0”表示。附圖所示的就是IP地址為“192.168.1.1”和子網掩碼為“255.255.255.0”的二進位制對照。其中,“1”有24個,代表與此相對應的IP地址左邊24位是網路號;“0”有8個,代表與此相對應的IP地址右邊8位是主機號。這樣,子網掩碼就確定了一個IP地址的32位二進位制數字中哪些是網路號、哪些是主機號。這對於採用TCP/IP協議的網路來說非常重要,只有透過子網掩碼,才能表明一臺主機所在的子網與其他子網的關係,使網路正常工作。 常用的子網掩碼 子網掩碼有數百種,這裡只介紹最常用的兩種子網掩碼,它們分別是“255.255.255.0”和“255.255.0.0”。 1.子網掩碼是“255.255.255.0”的網路:最後面一個數字可以在0~255範圍內任意變化,因此可以提供256個IP地址。但是實際可用的IP地址數量是256-2,即254個,因為主機號不能全是“0”或全是“1”。 2.子網掩碼是“255.255.0.0”的網路:後面兩個數字可以在0~255範圍內任意變化,可以提供2552個IP地址。但是實際可用的IP地址數量是2552-2,即65023個。 IP地址的子網掩碼設定不是任意的。如果將子網掩碼設定過大,也就是說子網範圍擴大,那麼,根據子網尋徑規則,很可能發往和本地機不在同一子網內的目的機的資料,會因為錯誤的判斷而認為目的機是在同一子網內,那麼,資料包將在本子網內迴圈,直到超時並拋棄,使資料不能正確到達目的機,導致網路傳輸錯誤;如果將子網掩碼設定得過小,那麼就會將本來屬於同一子網內的機器之間的通訊當做是跨子網傳輸,資料包都交給預設閘道器處理,這樣勢必增加預設閘道器的負擔,造成網路效率下降。因此,子網掩碼應該根據網路的規模進行設定。 如果一個網路的規模不超過254臺電腦,採用“255.255.255.0”作為子網掩碼就可以了,現在大多數區域網都不會超過這個數字,因此“255.255.255.0”是最常用的IP地址子網掩碼;筆者見到的最大規模的中小學校園網具有1500多臺電腦,這種規模的區域網可以使用“255.255.0.0”。 預設子網掩碼 在Windows 2000 Server中,如果給一個網絡卡指定IP地址,系統會自動填入一個預設的子網掩碼。這是Windows 2000 Server為了節省使用者輸入時間自動產生的子網掩碼。比如,區域網最常使用的IP地址“192.168.x.x”預設的子網掩碼是“255.255.255.0”。一般情況下,IP地址使用預設子網掩碼就可以了。 附:子網掩碼與子網計算 關於子網掩碼計算 IP地址是32位的二進位制數值,用於在TCP/IP通訊協議中標記每臺計算機的地址。通常我們使用點式十進位制來表示,如192.168.0.5等等。 每個IP地址又可分為兩部分。即網路號部分和主機號部分:網路號表示其所屬的網路段編號,主機號則表示該網段中該主機的地址編號。按照網路規模的大小,IP地址可以分為A、B、C、D、E五類,其中A、B、C類是三種主要的型別地址,D類專供多目傳送用的多目地址,E類用於擴充套件備用地址。A、B、C三類IP地址有效範圍如下表: 類別 網路號 /佔位數 主機號 /佔位數 用途 A 1~127 / 8 0~255 0~255 1~254 / 24 國家級 B 128~191 0~255 / 16 0~255 1~254 / 16 跨過組織 C 192~223 0~255 0~255 / 24 1~254 / 8 企業組織 隨著互連網應用的不斷擴大,原先的IPv4的弊端也逐漸暴露出來,即網路號佔位太多,而主機號位太少,所以其能提供的主機地址也越來越稀缺,目前除了使用NAT在企業內部利用保留地址自行分配以外,通常都對一個高類別的IP地址進行再劃分,以形成多個子網,提供給不同規模的使用者群使用。 這裡主要是為了在網路分段情況下有效地利用IP地址,透過對主機號的高位部分取作為子網號,從通常的網路位界限中擴充套件或壓縮子網掩碼,用來建立某類地址的更多子網。但建立更多的子網時,在每個子網上的可用主機地址數目會比原先減少。 子網掩碼是標誌兩個IP地址是否同屬於一個子網的,也是32位二進位制地址,其每一個為1代表該位是網路位,為0代表主機位。它和IP地址一樣也是使用點式十進位制來表示的。如果兩個IP地址在子網掩碼的按位與的計算下所得結果相同,即表明它們共屬於同一子網中。 在計算子網掩碼時,我們要注意IP地址中的保留地址,即“ 0”地址和廣播地址,它們是指主機地址或網路地址全為“ 0”或“ 1”時的IP地址,它們代表著本網路地址和廣播地址,一般是不能被計算在內的。 下面就來以例項來說明子網掩碼的演算法: 對於無須再劃分成子網的IP地址來說,其子網掩碼非常簡單,即按照其定義即可寫出:如某B類IP地址為 10.12.3.0,無須再分割子網,則該IP地址的子網掩碼為255.255.0.0。如果它是一個C類地址,則其子網掩碼為 255.255.255.0。其它類推,不再詳述。下面我們關鍵要介紹的是一個IP地址,還需要將其高位主機位再作為劃分出的子網網路號,剩下的是每個子網的主機號,這時該如何進行每個子網的掩碼計算。 一、利用子網數來計算 在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。 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,得到 255.255.248.0 即為劃分成 27個子網的B類IP地址 168.195.0.0的子網掩碼。 二、利用主機數來計算 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的子網掩碼。 下面列出各類IP地址所能劃分出的所有子網,其劃分後的主機和子網佔位數,以及主機和子網的(最大)數目,注意要去掉保留的IP地址(即劃分後有主機位或子網位全為“0”或全為“1”的): A類IP地址: 子網位 /主機位 子網掩碼 子網最大數 /主機最大數 2/22 255.192.0.0 2/4194302 3/21 255.224.0.0 6/2097150 4/20 255.240.0.0 14/1048574 5/19 255.248.0.0 30/524286 6/18 255.252.0.0 62/262142 7/17 255.254.0.0 126/131070 8/16 255.255.0.0 254/65536 9/15 255.255.128.0 510/32766 10/14 255.255.192.0 1022/16382 11/13 255.255.224.0 2046/8190 12/12 255.255.240.0 4094/4094 13/11 255.255.248.0 8190/2046 14/10 255.255.252.0 16382/1022 15/9 255.255.254.0 32766/510 16/8 255.255.255.0 65536/254 17/7 255.255.255.128 131070/126 18/6 255.255.255.192 262142/62 19/5 255.255.255.224 524286/30 20/4 255.255.255.240 1048574/14 21/3 255.255.255.248 2097150/6 22/2 255.255.255.252 4194302/2 B類IP地址: 子網位 /主機位 子網掩碼 子網最大數 /主機最大數 2/14 255.255.192.0 2/16382 3/13 255.255.224.0 6/8190 4/12 255.255.240.0 14/4094 5/11 255.255.248.0 30/2046 6/10 255.255.252.0 62/1022 7/9 255.255.254.0 126/510 8/8 255.255.255.0 254/254 9/7 255.255.255.128 510/126 10/6 255.255.255.192 1022/62 11/5 255.255.255.224 2046/30 12/4 255.255.255.240 4094/14 13/3 255.255.255.248 8190/6 14/2 255.255.255.252 16382/2 C類IP地址: 子網位 /主機位 子網掩碼 子網最大數 /主機最大數 2/6 255.255.255.192 2/62 3/5 255.255.255.224 6/30 4/4 255.255.255.240 14/14 5/3 255.255.255.248 30/6 6/2 255.255.255.252 62/2 再根據CCNA中會出現的題目給大家舉個例子: 首先,我們看一個考試中常見的題型:一個主機的IP地址是202.112.14.137,掩碼是255.255.255.224,要求計算這個主機所在網路的網路地址和廣播地址。 常規辦法是把這個主機地址和子網掩碼都換算成二進位制數,兩者進行邏輯與運算後即可得到網路地址。其實大家只要仔細想想,可以得到另一個方法:255.255.255.224的掩碼所容納的IP地址有256-224=32個(包括網路地址和廣播地址),那麼具有這種掩碼的網路地址一定是32的倍數。而網路地址是子網IP地址的開始,廣播地址是結束,可使用的主機地址在這個範圍內,因此略小於137而又是32的倍數的只有128,所以得出網路地址是202.112.14.128。而廣播地址就是下一個網路的網路地址減1。而下一個32的倍數是160,因此可以得到廣播地址為202.112.14.159。可參照下表來理解本例。 子網路 2進位制子網路域數 2進位制主機域數的範圍 2進位制主機域數的範圍 第1個子網路 000 00000 thru 11111 .0 thru.31 第2個子網路 001 00000 thru 11111 .32 thru.63 第3個子網路 010 00000 thru 11111 .64 thru.95 第4個子網路 011 00000 thru 11111 .96 thru.127 第5個子網路 100 00000 thru 11111 .128 thru.159 第6個子網路 101 00000 thru 11111 .160 thru.191 第7個子網路 110 00000 thru 11111 .192 thru.223 第8個子網路 111 00000 thru 11111 .124 thru.255 CCNA考試中,還有一種題型,要你根據每個網路的主機數量進行子網地址的規劃和計算子網掩碼。這也可按上述原則進行計算。比如一個子網有10臺主機,那麼對於這個子網需要的IP地址是: 10+1+1+1=13 注意:加的第一個1是指這個網路連線時所需的閘道器地址,接著的兩個1分別是指網路地址和廣播地址。因為13小於16(16等於2的4次方),所以主機位為4位。而 256-16=240 所以該子網掩碼為255.255.255.240。 如果一個子網有14臺主機,不少人常犯的錯誤是:依然分配具有16個地址空間的子網,而忘記了給閘道器分配地址。這樣就錯誤了,因為: 14+1+1+1=17 17大於16,所以我們只能分配具有32個地址(32等於2的5次方)空間的子網。這時子網掩碼為:255.255.255.224。
子網掩碼是每個網管必須要掌握的基礎知識,只有掌握它,才能夠真正理解TCP/IP協議的設定。以下我們就來深入淺出地講解什麼是子網掩碼。 IP地址的結構 要想理解什麼是子網掩碼,就不能不瞭解IP地址的構成。網際網路是由許多小型網路構成的,每個網路上都有許多主機,這樣便構成了一個有層次的結構。IP地址在設計時就考慮到地址分配的層次特點,將每個IP地址都分割成網路號和主機號兩部分,以便於IP地址的定址操作。 IP地址的網路號和主機號各是多少位呢?如果不指定,就不知道哪些位是網路號、哪些是主機號,這就需要透過子網掩碼來實現。 什麼是子網掩碼 子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分。 子網掩碼的設定必須遵循一定的規則。與IP地址相同,子網掩碼的長度也是32位,左邊是網路位,用二進位制數字“1”表示;右邊是主機位,用二進位制數字“0”表示。附圖所示的就是IP地址為“192.168.1.1”和子網掩碼為“255.255.255.0”的二進位制對照。其中,“1”有24個,代表與此相對應的IP地址左邊24位是網路號;“0”有8個,代表與此相對應的IP地址右邊8位是主機號。這樣,子網掩碼就確定了一個IP地址的32位二進位制數字中哪些是網路號、哪些是主機號。這對於採用TCP/IP協議的網路來說非常重要,只有透過子網掩碼,才能表明一臺主機所在的子網與其他子網的關係,使網路正常工作。 常用的子網掩碼 子網掩碼有數百種,這裡只介紹最常用的兩種子網掩碼,它們分別是“255.255.255.0”和“255.255.0.0”。 1.子網掩碼是“255.255.255.0”的網路:最後面一個數字可以在0~255範圍內任意變化,因此可以提供256個IP地址。但是實際可用的IP地址數量是256-2,即254個,因為主機號不能全是“0”或全是“1”。 2.子網掩碼是“255.255.0.0”的網路:後面兩個數字可以在0~255範圍內任意變化,可以提供2552個IP地址。但是實際可用的IP地址數量是2552-2,即65023個。 IP地址的子網掩碼設定不是任意的。如果將子網掩碼設定過大,也就是說子網範圍擴大,那麼,根據子網尋徑規則,很可能發往和本地機不在同一子網內的目的機的資料,會因為錯誤的判斷而認為目的機是在同一子網內,那麼,資料包將在本子網內迴圈,直到超時並拋棄,使資料不能正確到達目的機,導致網路傳輸錯誤;如果將子網掩碼設定得過小,那麼就會將本來屬於同一子網內的機器之間的通訊當做是跨子網傳輸,資料包都交給預設閘道器處理,這樣勢必增加預設閘道器的負擔,造成網路效率下降。因此,子網掩碼應該根據網路的規模進行設定。 如果一個網路的規模不超過254臺電腦,採用“255.255.255.0”作為子網掩碼就可以了,現在大多數區域網都不會超過這個數字,因此“255.255.255.0”是最常用的IP地址子網掩碼;筆者見到的最大規模的中小學校園網具有1500多臺電腦,這種規模的區域網可以使用“255.255.0.0”。 預設子網掩碼 在Windows 2000 Server中,如果給一個網絡卡指定IP地址,系統會自動填入一個預設的子網掩碼。這是Windows 2000 Server為了節省使用者輸入時間自動產生的子網掩碼。比如,區域網最常使用的IP地址“192.168.x.x”預設的子網掩碼是“255.255.255.0”。一般情況下,IP地址使用預設子網掩碼就可以了。 附:子網掩碼與子網計算 關於子網掩碼計算 IP地址是32位的二進位制數值,用於在TCP/IP通訊協議中標記每臺計算機的地址。通常我們使用點式十進位制來表示,如192.168.0.5等等。 每個IP地址又可分為兩部分。即網路號部分和主機號部分:網路號表示其所屬的網路段編號,主機號則表示該網段中該主機的地址編號。按照網路規模的大小,IP地址可以分為A、B、C、D、E五類,其中A、B、C類是三種主要的型別地址,D類專供多目傳送用的多目地址,E類用於擴充套件備用地址。A、B、C三類IP地址有效範圍如下表: 類別 網路號 /佔位數 主機號 /佔位數 用途 A 1~127 / 8 0~255 0~255 1~254 / 24 國家級 B 128~191 0~255 / 16 0~255 1~254 / 16 跨過組織 C 192~223 0~255 0~255 / 24 1~254 / 8 企業組織 隨著互連網應用的不斷擴大,原先的IPv4的弊端也逐漸暴露出來,即網路號佔位太多,而主機號位太少,所以其能提供的主機地址也越來越稀缺,目前除了使用NAT在企業內部利用保留地址自行分配以外,通常都對一個高類別的IP地址進行再劃分,以形成多個子網,提供給不同規模的使用者群使用。 這裡主要是為了在網路分段情況下有效地利用IP地址,透過對主機號的高位部分取作為子網號,從通常的網路位界限中擴充套件或壓縮子網掩碼,用來建立某類地址的更多子網。但建立更多的子網時,在每個子網上的可用主機地址數目會比原先減少。 子網掩碼是標誌兩個IP地址是否同屬於一個子網的,也是32位二進位制地址,其每一個為1代表該位是網路位,為0代表主機位。它和IP地址一樣也是使用點式十進位制來表示的。如果兩個IP地址在子網掩碼的按位與的計算下所得結果相同,即表明它們共屬於同一子網中。 在計算子網掩碼時,我們要注意IP地址中的保留地址,即“ 0”地址和廣播地址,它們是指主機地址或網路地址全為“ 0”或“ 1”時的IP地址,它們代表著本網路地址和廣播地址,一般是不能被計算在內的。 下面就來以例項來說明子網掩碼的演算法: 對於無須再劃分成子網的IP地址來說,其子網掩碼非常簡單,即按照其定義即可寫出:如某B類IP地址為 10.12.3.0,無須再分割子網,則該IP地址的子網掩碼為255.255.0.0。如果它是一個C類地址,則其子網掩碼為 255.255.255.0。其它類推,不再詳述。下面我們關鍵要介紹的是一個IP地址,還需要將其高位主機位再作為劃分出的子網網路號,剩下的是每個子網的主機號,這時該如何進行每個子網的掩碼計算。 一、利用子網數來計算 在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。 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,得到 255.255.248.0 即為劃分成 27個子網的B類IP地址 168.195.0.0的子網掩碼。 二、利用主機數來計算 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的子網掩碼。 下面列出各類IP地址所能劃分出的所有子網,其劃分後的主機和子網佔位數,以及主機和子網的(最大)數目,注意要去掉保留的IP地址(即劃分後有主機位或子網位全為“0”或全為“1”的): A類IP地址: 子網位 /主機位 子網掩碼 子網最大數 /主機最大數 2/22 255.192.0.0 2/4194302 3/21 255.224.0.0 6/2097150 4/20 255.240.0.0 14/1048574 5/19 255.248.0.0 30/524286 6/18 255.252.0.0 62/262142 7/17 255.254.0.0 126/131070 8/16 255.255.0.0 254/65536 9/15 255.255.128.0 510/32766 10/14 255.255.192.0 1022/16382 11/13 255.255.224.0 2046/8190 12/12 255.255.240.0 4094/4094 13/11 255.255.248.0 8190/2046 14/10 255.255.252.0 16382/1022 15/9 255.255.254.0 32766/510 16/8 255.255.255.0 65536/254 17/7 255.255.255.128 131070/126 18/6 255.255.255.192 262142/62 19/5 255.255.255.224 524286/30 20/4 255.255.255.240 1048574/14 21/3 255.255.255.248 2097150/6 22/2 255.255.255.252 4194302/2 B類IP地址: 子網位 /主機位 子網掩碼 子網最大數 /主機最大數 2/14 255.255.192.0 2/16382 3/13 255.255.224.0 6/8190 4/12 255.255.240.0 14/4094 5/11 255.255.248.0 30/2046 6/10 255.255.252.0 62/1022 7/9 255.255.254.0 126/510 8/8 255.255.255.0 254/254 9/7 255.255.255.128 510/126 10/6 255.255.255.192 1022/62 11/5 255.255.255.224 2046/30 12/4 255.255.255.240 4094/14 13/3 255.255.255.248 8190/6 14/2 255.255.255.252 16382/2 C類IP地址: 子網位 /主機位 子網掩碼 子網最大數 /主機最大數 2/6 255.255.255.192 2/62 3/5 255.255.255.224 6/30 4/4 255.255.255.240 14/14 5/3 255.255.255.248 30/6 6/2 255.255.255.252 62/2 再根據CCNA中會出現的題目給大家舉個例子: 首先,我們看一個考試中常見的題型:一個主機的IP地址是202.112.14.137,掩碼是255.255.255.224,要求計算這個主機所在網路的網路地址和廣播地址。 常規辦法是把這個主機地址和子網掩碼都換算成二進位制數,兩者進行邏輯與運算後即可得到網路地址。其實大家只要仔細想想,可以得到另一個方法:255.255.255.224的掩碼所容納的IP地址有256-224=32個(包括網路地址和廣播地址),那麼具有這種掩碼的網路地址一定是32的倍數。而網路地址是子網IP地址的開始,廣播地址是結束,可使用的主機地址在這個範圍內,因此略小於137而又是32的倍數的只有128,所以得出網路地址是202.112.14.128。而廣播地址就是下一個網路的網路地址減1。而下一個32的倍數是160,因此可以得到廣播地址為202.112.14.159。可參照下表來理解本例。 子網路 2進位制子網路域數 2進位制主機域數的範圍 2進位制主機域數的範圍 第1個子網路 000 00000 thru 11111 .0 thru.31 第2個子網路 001 00000 thru 11111 .32 thru.63 第3個子網路 010 00000 thru 11111 .64 thru.95 第4個子網路 011 00000 thru 11111 .96 thru.127 第5個子網路 100 00000 thru 11111 .128 thru.159 第6個子網路 101 00000 thru 11111 .160 thru.191 第7個子網路 110 00000 thru 11111 .192 thru.223 第8個子網路 111 00000 thru 11111 .124 thru.255 CCNA考試中,還有一種題型,要你根據每個網路的主機數量進行子網地址的規劃和計算子網掩碼。這也可按上述原則進行計算。比如一個子網有10臺主機,那麼對於這個子網需要的IP地址是: 10+1+1+1=13 注意:加的第一個1是指這個網路連線時所需的閘道器地址,接著的兩個1分別是指網路地址和廣播地址。因為13小於16(16等於2的4次方),所以主機位為4位。而 256-16=240 所以該子網掩碼為255.255.255.240。 如果一個子網有14臺主機,不少人常犯的錯誤是:依然分配具有16個地址空間的子網,而忘記了給閘道器分配地址。這樣就錯誤了,因為: 14+1+1+1=17 17大於16,所以我們只能分配具有32個地址(32等於2的5次方)空間的子網。這時子網掩碼為:255.255.255.224。