子網掩碼

子網掩碼

網絡術語
子網掩碼(subnet mask)又叫網絡掩碼、地址掩碼、子網絡遮罩,它用來指明一個IP地址的哪些位标識的是主機所在的子網,以及哪些位标識的是主機的位掩碼。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼隻有一個作用,就是将某個IP地址劃分成網絡地址和主機地址兩部分。子網掩碼是一個32位地址,用于屏蔽IP地址的一部分以區别網絡标識和主機标識,并說明該IP地址是在局域網上,還是在廣域網上。
    中文名:子網掩碼 外文名:Subnet Mask 别名:地址掩碼 作用:IP劃分成網絡地址和主機地址n

簡介

子網掩碼是在IPv4地址資源緊缺的背景下為了解決lP地址分配而産生的虛拟lP技術,通過子網掩碼将A、B、C三類地址劃分為若幹子網,從而顯著提高了IP地址的分配效率,有效解決了IP地址資源緊張的局面。另一方面,在企業内網中為了更好地管理網絡,網管人員也利用子網掩碼的作用,人為地将一個較大的企業内部網絡劃分為更多個小規模的子網,再利用三層交換機的路由功能實現子網互聯,從而有效解決了網絡廣播風暴和網絡病毒等諸多網絡管理方面的問題。

在大多數的網絡教科書中,一般都将子網掩碼的作用描述為通過邏輯運算,将IP地址劃分為網絡标識(Net.ID)和主機标識(Host.ID),隻有網絡标識相同的兩台主機在無路由的情況下才能相互通信。 

根據RFC950定義,子網掩碼是一個32位的2進制數, 其對應網絡地址的所有位都置為1,對應于主機地址的所有位置都為0。子網掩碼告知路由器,地址的哪一部分是網絡地址,哪一部分是主機地址,使路由器正确判斷任意IP地址是否是本網段的,從而正确地進行路由。網絡上,數據從一個地方傳到另外一個地方,是依靠IP尋址。從邏輯上來講,是兩步的。第一步,從IP中找到所屬的網絡,好比是去找這個人是哪個小區的;第二步,再從IP 中找到主機在這個網絡中的位置,好比是在小區裡面找到這個人。

子網掩碼的設定必須遵循一定的規則。與二進制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),如果得出的結果是相同的,那麼這兩台計算機就屬于同一網段。 

聲明網絡地址與主機地址

類别

子網掩碼的二進制數值

子網掩碼的十進制數

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這個網絡,其主機号為11,即這個網絡中編号為11的主機。

劃分子網

子網掩碼機制提供了子網劃分的方法。其作用是:減少網絡上的通信量;節省IP地址;便于管理;解決物理網絡本身的某些問題。使用子網掩碼劃分子網後,子網内可以通信,跨子網不能通信,子網間通信應該使用路由器,并正确配置靜态路由信息。劃分子網,就應遵循子網劃分結構的規則。就是用連續的1在IP地址中增加表示網絡地址,同時減少表示主機地址的位數。例如,IP地址為130.39.37.100,網絡地址為130.39.0.0、子網地址為130.39.37.0、子網掩碼為255.255.255.0,網絡地址部分和子網标識部分為“1”所對應,主機标識部分為“0”所對應。 使用CIDR表示為:130.39.37.100/24即IP地址/ 掩碼長度。其中第三個字節上的255 所對應的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個子網)。

根據主機數

利用主機數來計算

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的子網掩碼。

增量計算法

子網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類地址)。

分類

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

缺省子網掩碼

缺省子網掩碼即未劃分子網,對應的網絡号的位都置1,主機号都置0。

A類網絡缺省子網掩碼:255.0.0.0

B類網絡缺省子網掩碼:255.255.0.0

C類網絡缺省子網掩碼:255.255.255.0 [6] 

在缺省掩碼下的IP地址中,網絡地址和廣播地址的計算很簡單,雖然按照計算方法需要進制轉換和與運算,但是在實際使用當中,我們已經可以快速寫出結果。網絡地址的計算就是子網掩碼中0對應的地方變0, “255”對應的地方不變即可;而廣播地址則是子網掩碼中0對應 的地方變“255”,“255”對應的地方不變。 [6] 

自定義子網掩碼

自定義子網掩碼是将一個網絡劃分為幾個子網,需要每一段使用不同的網絡号或子網号,實際上我們可以認為是将主機号分為兩個部分:子網号、子網主機号。形式如下:

未做子網劃分的IP地址:網絡号+主機号

做子網劃分後的IP地址:網絡号+子網号+子網主機号

也就是說IP地址在劃分子網後,以前的主機号位置的一部分給了子網号,餘下的是子網主機号。子網掩碼是32位二進制數,它的子網主機标識用部分為全“0”。利用子網掩碼可以判斷兩台主機是否在同一子網中。若兩台主機的IP地址分别與它們的子網掩碼相“與”後的結果相同,則說明這兩台主機在同一子網中。

變長子網掩碼

變長子網掩碼VLSM就是每段IP地址使用不同長度的子網掩碼,可以對子網進行層次化編址,以便最有效的利用現有的地址空間。變長子網掩碼(Variable-Length Subnet Masks,VLSM)的出現是打破傳統的以類(class)為标準的地址劃分方法,是為了緩解IP地址緊缺而産生的。他的作用是節約IP地址空間;減少路由表大小。需要注意的是注意事項:使用VLSM時,所采用的路由協議必須能夠支持它,這些路由協議包括RIPv2,OSPF,EIGRP和BGP。 

變長子網掩碼是将一個網段拆成多個子網的應用,這種應用在教育網内特别普遍,教育網使用的是電信運營商提供的互聯網出口。電信運營商為教育網提供了數個c類的公網IP地址,但是教育網的網管又希望每個學校都處于各自不同的網段,全市(包括縣區在内)有上百所學校,為了适應這個要求,就必須使用變長子網掩碼來重新規劃網絡。 

變長子網掩碼是網絡規劃中的一種常見應用,它的 目的是最大限度地節省IP地址。網管員根據自己單位實際的網絡情況,為不同網段靈活的定義不同的子網掩碼,但是很多用戶由于不了解變長子網掩碼的相關知識從而進行了錯誤的設置。

IPV6與子網掩碼

如果是都是使用的IPV6的話是沒有子網掩碼的概念。IPV6是端到端的連接通信,不需要子網了。但是,目前似乎更多都是在IPV4上使用隧道的方式使用IPV6。完全消滅IPV4還需要相當長的時間,子網掩碼目前還是要的。

IPv6中沒有子網掩碼的概念,也沒有網絡号與主機号的概念。在IPV6中前綴長度就可以當作子網掩碼來理解。接口ID可以當作主機号來理解。在Windows XP中,IPv6地址的前綴長度默認為64位。IPv6的地址空間過于廣大,可能一個子網的子網都要比整個IPv4的世界要大很多,所以子網的概念在IPv6世界裡已經淡化了。但是,同一站點的主機要想直接通信(不經過路由器),還是要求前綴相同才行的。

相關詞條

相關搜索

其它詞條