簡介,子網掩碼的功能,聲明網路地址與主機地址,劃分子網,計算方式,根據子網數,根據主機數,增量計算法,標註方法,無子網,有子網,分類,預設子網掩碼,自定義子網掩碼,變長子網掩碼,IPV6與子網掩碼,
簡介
子網掩碼是在
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),如果得出的結果是相同的,那么這兩台計算機就屬於同一網段。
聲明網路地址與主機地址
表 1 默認子網掩碼
類別 | 子網掩碼的二進制數值 | 子網掩碼的十進制數值 |
A | 11111111 00000000 00000000 00000000 | 255.0.0.0 |
B | 11111111 11111111 00000000 00000000 | 255.255.0.0 |
C | 11111111 11111111 11111111 000000000 | 255.255.255.0 |
子網掩碼一定是配合IP位址來使用的。對於常用網路A、 B、C 類IP位址其默認子網掩碼的二進制與十進制對應關係如表1所示。子網掩碼工作過程是:將32位的子網掩碼與IP位址進行
二進制形式的按位邏輯“
與”運算得到的便是網路地址,將子網掩碼二進制按位取反,然後IP位址進行二進制的邏輯“與”(AND)運算,得到的就是主機地址。如:192.168.10.10 AND 255.255.255.0,結果為192.168.10.0,其表達的含義為:該IP位址屬於 192.168.10.0這個網路,其主機號為10,即這個網路中編號為10的主機。
劃分子網
子網掩碼機制提供了子網劃分的方法。其作用是:減少網路上的通信量;節省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位二進制數值就是將主機地址位數借給了網路地址部分,充當了劃分子網的位數。
計算方式
由於子網掩碼的位數決定於可能的子網數目和每個子網的
主機數目。在定義子網掩碼前,必須弄清楚本來使用的
子網數和
主機數目。
根據子網數
利用子網數來計算
在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。
3)取得該IP位址的類子網掩碼,將其
主機地址部分的前N位置1 即得出該IP位址劃分子網的子網掩碼。
如欲將B類IP位址168.195.0.0劃分成27個子網:
1)27=11011
3)將B類地址的子網掩碼255.255.0.0的
主機地址前5位置1(B類地址的主機位包括後兩個位元組,所以這裡要把第三個位元組的前5位置1),得到 255.255.248.0
即為劃分成27個子網的B類IP位址 168.195.0.0的子網掩碼(實際上是劃成了32-2=30個子網)。
根據主機數
利用主機數來計算
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
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的子網掩碼。
增量計算法
其基本計算步驟如下:
第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位址。
有子網
有子網的標註法
以下一段指定掩碼為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類地址)。
分類
子網掩碼一共分為兩類。一類是預設(自動生成)子網掩碼,一類是自定義子網掩碼。
預設子網掩碼
預設子網掩碼即未劃分子網,對應的
網路號的位都置1,主機號都置0。
A類網路預設子網掩碼:255.0.0.0
B類網路預設子網掩碼:255.255.0.0
C類網路預設子網掩碼:255.255.255.0
在預設掩碼下的IP位址中,網路地址和廣播地址的計算很簡單,雖然按照計算方法需要進制轉換和與運算,但是在實際使用當中,我們已經可以快速寫出結果。網路地址的計算就是子網掩碼中0對應的地方變0, “255”對應的地方不變即可;而
廣播地址則是子網掩碼中0對應 的地方變“255”,“255”對應的地方不變。
自定義子網掩碼
自定義子網掩碼是將一個網路劃分為幾個子網,需要每一段使用不同的網路號或子網號,實際上我們可以認為是將主機號分為兩個部分:子網號、子網主機號。形式如下:
未做子網劃分的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世界裡已經淡化了。但是,同一站點的主機要想直接通信(不經過
路由器),還是要求前綴相同才行的。