子網掩碼
將IP劃分成網路地址和主機地址
子網掩碼(subnet mask)又叫網路掩碼、地址掩碼、子網路遮罩,它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機的位掩碼。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分。
子網掩碼是一個32位地址,用於屏蔽IP地址的一部分以區別網路標識和主機標識,並說明該IP地址是在區域網上,還是在遠程網上。
子網掩碼(subnet mask)是每個使用網際網路的人必須要掌握的基礎知識,只有掌握它,才能夠真正理解TCP/IP協議的設置。
子網掩碼——屏蔽一個IP地址的網路部分的“全1”比特模式。對於A類地址來說,默認的子網掩碼是255.0.0.0;對於B類地址來說默認的子網掩碼是255.255.0.0;對於C類地址來說默認的子網掩碼是255.255.255.0。
利用子網掩碼可以把大的網路劃分成子網,即VLSM(可變長子網掩碼),也可以把小的網路歸併成大的網路即超網。
要想理解什麼是子網掩碼,就不能不了解IP地址的構成。網際網路是由許多小型網路構成的,每個網路上都有許多主機,這樣便構成了一個有層次的結構。IP地址在設計時就考慮到地址分配的層次特點,將每個IP地址都分割成網路號和主機號兩部分,以便於IP地址的定址操作。
IP地址的網路號和主機號各是多少位呢?如果不指定,就不知道哪些位是網路號、哪些是主機號,這就需要通過子網掩碼來實現。
子網掩碼的設定必須遵循一定的規則。與二進位IP地址相同,子網掩碼由1和0組成,且1和0分別連續。子網掩碼的長度也是32位,左邊是網路位,用二進位數字“1”表示,1的數目等於網路位的長度;右邊是主機位,用二進位數字“0”表示,0的數目等於主機位的長度。這樣做的目的是為了讓掩碼與ip地址做按位與運算時用0遮住原主機數,而不改變原網路段數字,而且很容易通過0的位數確定子網的主機數(2的主機位數次方-2,因為主機號全為1時表示該網路廣播地址,全為0時表示該網路的網路號,這是兩個特殊地址)。只有通過子網掩碼,才能表明一台主機所在的子網與其他子網的關係,使網路正常工作。
用於子網掩碼的位數決定於可能的子網數目和每個子網的主機數目。在定義子網掩碼前,必須弄清楚本來使用的子網數和主機數目。
定義子網掩碼的步驟為:
A、確定哪些組地址歸我們使用。比如我們申請到的網路號為“210.73.a.b”,該網路地址為c類IP地址,網路標識為“210.73.a”,主機標識為“b”。
B、根據我們所需的子網數以及將來可能擴充到的子網數,用宿主機的一些位來定義子網掩碼。比如我們需要12個子網,將來可能需要16個。用第四個位元組的前四位確定子網掩碼。前四位都置為“1”,即第四個位元組為“11110000”,這個數我們暫且稱作新的二進位子網掩碼。
C、把對應初始網路的各個位都置為“1”,即前三個位元組都置為“1”,則子網掩碼的間斷二進位形式為:“11111111.11111111.11111111.11110000”。
D、把這個數轉化為間斷十進位形式為:“255.255.255.240”。
由於子網掩碼的位數決定於可能的子網數目和每個子網的主機數目。在定義子網掩碼前,必須弄清楚本來使用的子網數和主機數目。
利用子網數來計算
在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。
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-2=30個子網)。
這一段介紹的是舊標準下計算的方法,關於舊的標準後文在介紹,在新標準中則可以先將27減去1,因為計算機是從0開始計算的,從0到27實際上是有28個,所以說如果需要27個就需要將27減去1。
利用主機數來計算
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之後的第一個位段,便形成第一個子網網路ID129.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流行以前,這樣的重疊將導致極大的混亂。比如,一個發往192.168.0.255的廣播是發給主網路的還是子網的?這就是為什麼在當時不建議使用全0和全1子網。在今天,CIDR已經非常普及了,所以一般不需要再考慮這個問題。
子網掩碼是一個32位地址,是與IP地址結合使用的一種技術。它的主要作用有兩個,一是用於屏蔽IP地址的一部分以區別網路標識和主機標識,並說明該IP地址是在區域網上,還是在遠程網上。二是用於將一個大的IP網路劃分為若干小的子網路。
使用子網是為了減少IP的浪費。因為隨著網際網路的發展,越來越多的網路產生,有的網路多則幾百台,有的只有區區幾台,這樣就浪費了很多IP地址,所以要劃分子網。使用子網可以提高網路應用的效率。
通過IP地址的二進位與子網掩碼的二進位進行與運算,確定某個設備的網路地址和主機號,也就是說通過子網掩碼分辨一個網路的網路部分和主機部分。子網掩碼一旦設置,網路地址和主機地址就固定了。子網一個最顯著的特徵就是具有子網掩碼。與IP地址相同,子網掩碼的長度也是32位,也可以使用十進位的形式。例如,為二進位形式的子網掩碼:1111.1111.1111.1111.1111.1111.0000.0000,採用十進位的形式為:255.255.255.0。
通過計算機的子網掩碼判斷兩台計算機是否屬於同一網段的方法是,將計算機十進位的IP地址和子網掩碼轉換為二進位的形式,然後進行二進位“與”(AND)計算(全1則得1,不全1則得0),如果得出的結果是相同的,那麼這兩台計算機就屬於同一網段。
無子網的標註法
對無子網的IP地址,可寫成主機號為0的掩碼。如IP地址210.73.140.5,掩碼為255.255.255.0,也可以預設掩碼,只寫IP地址。
有子網的標註法
有子網時,一定要二者配對出現。以C類地址為例。
以下一段指定掩碼為27位(1111.1111,1111.1111,11111111,11100000=>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類地址)。
子網掩碼是用來判斷任意兩台計算機的IP地址是否屬於同一子網路的根據。
最為簡單的理解就是兩台計算機各自的IP地址與子網掩碼進行AND運算后,如果得出的結果是相同的,則說明這兩台計算機是處於同一個子網路上的,可以進行直接的通訊。就這麼簡單。
子網掩碼通常有以下2種格式的表示方法:
1.通過與IP地址格式相同的點分十進位表示
如:255.0.0.0或255.255.255.128
2.在IP地址后加上"/"符號以及1-32的數字,其中1-32的數字錶示子網掩碼中網路標識位的長度
如:192.168.1.1/24的子網掩碼也可以表示為255.255.255.0
子網掩碼一般為255.255.255.0
IP地址192.168.0.1
子網掩碼255.255.255.0
AND運算(AND運演演算法則:1與1=1,1與0=0,0與1=0,0與0=0,即當對應位均為1時結果為1,其餘為0。)
轉化為二進位進行運算:
IP地址11000000.10101000.00000000.00000001
子網掩碼11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進位後為:
192.168.0.0
IP地址192.168.0.254
子網掩碼255.255.255.0
AND運算
轉化為二進位進行運算:
IP地址11000000.10101000.00000000.11111110
子網掩碼11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進位後為:
192.168.0.0
IP地址:192.168.0.4
子網掩碼:255.255.255.0
AND運算
轉化為二進位進行運算:
IP地址:11000000.10101000.00000000.00000100
子網掩碼:11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進位後為:
192.168.0.0
通過以上對三組計算機IP地址與子網掩碼的AND運算后,我們可以看到它運算結果是一樣的。均為192.168.0.0
所以計算機就會把這三台計算機視為是同一子網路,然後進行通訊的。
也許你又要問,這樣的子網掩碼究竟有多少個IP地址可以用呢?你可以這樣算。
根據上面我們可以看出,區域網內部的ip地址是我們自己規定的(當然和其他的ip地址是一樣的),這個是由子網掩碼決定的通過對255.255.255.0的分析。可得出:
前三位IP碼由分配下來的數字就只能固定為192.168.0:所以就只剩下了最後的一位了,那麼顯而易見了,ip地址只能有(2的8次方-2),即256-2=254,一般主機地址全為0或者1(二進位)有其特殊的作用。
那麼你可能要問了:如果我的子網掩碼不是255.255.255.0呢?你也可以這樣做啊假設你的子網掩碼是255.255.128.0
那麼你的區域網內的ip地址的前兩位肯定是固定的了
這樣,你就可以按照下邊的計算來看看同一個子網內到底能有多少台機器
1.十進位128=二進位10000000
2.IP碼要和子網掩碼進行AND運算
3.
IP地址:11000000.10101000.1*******.********
子網掩碼:11111111.11111111.10000000.00000000
AND運算
11000000.10101000.10000000.00000000
轉化為十進位後為:
192.168.128.0
4.可知我們內部網可用的IP地址為:
11000000.10101000.10000000.00000000
到
11000000.10101000.11111111.11111111
(也可以是:11000000.10101000.00000000.00000000到11000000.10101000.01111111.11111111)
5.轉化為十進位:
192.168.128.0到192.168.255.255(或者192.168.0.0到192.168.127.255)
6.0和255通常作為網路的內部特殊用途。通常不使用。
7.於是最後的結果如下:我們單位所有可用的IP地址為:
192.168.128.1-192.168.128.254
192.168.129.1-192.168.129.254
192.168.130.1-192.168.130.254
192.168.131.1-192.168.131.254
.............
192.168.139.1-192.168.139.254
192.168.140.1-192.168.140.254
192.168.141.1-192.168.141.254
192.168.142.1-192.168.142.254
192.168.143.1-192.168.143.254
.............
192.168.254.1-192.168.254.254
192.168.255.1-192.168.255.254
8.總數為(255-128+1)*(254-1+1)=128*254=32512
子網內包含的機器數目應該是2^n-2,比如說上面的子網掩碼是255.255.128.0,那麼他的網路號是17位,主機號是15位,只要主機號不全是0或者1就是可以的,所以ip地址是192.168.192.0(11000000.10101000.11000000.00000000)也允許,除掉全0全1,結果為2^15-2*(255-128+1)=32512
9.看看的結果是否正確
(1)、設定IP地址為192.168.128.1
Ping192.168.129.233通過測試
訪問http://192.168.129.233可以顯示出主頁
(2)、設定IP地址為192.168.255.254
Ping192.168.255.254通過測試
訪問http://192.168.255.254可以顯示出主頁
10.結論
以上證明我們的結論是對的。
現在你就可以看你的子網中能有多少台機器了
255.255.255.128
分解:
11111111.11111111.11111111.10000000
所以你的內部網路的ip地址只能是
xxxxxxxx.xxxxxxxx.xxxxxxxx.0???????
到
xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111
子網掩碼
子網TCP/IP網間網技術產生於大型主流機環境中,它能發展到今天的規模是當初的設計者們始料未及的。網間網規模的迅速擴展對IP地址模式的威脅並不是它不能保證主機地址的唯一性,而是會帶來兩方面的負擔:第一,巨大的網路地址管理開銷;第二,網關尋徑急劇膨脹。其中第二點尤為突出,尋徑表的膨脹不僅會降低網關尋徑效率(甚至可能使尋徑表溢出,從而造成尋徑故障),更重要的是將增加內外部路徑刷新時的開銷,從而加重網路負擔。
因此,迫切需要尋求新的技術,以應付網間網規模增長帶來的問題。仔細分析發現,網間網規模的增長在內部主要表現為網路地址的增減,因此解決問題的思路集中在:如何減少網路地址。於是IP網路地址的多重複用技術應運而生。
通過復用技術,使若干物理網路共享同一IP網路地址,無疑將減少網路地址數。
子網編址(subnetaddressing)技術,又叫子網尋徑(subnetrouting),英文簡稱subnetting,是最廣泛使用的IP網路地址復用方式,已經標準化,並成為IP地址模式的一部分。一般的,32位的IP地址分為兩部分,即網路號和主機號,我們分別把他們叫做IP地址的“網間網部分”和“本地部分”。子網編址技術將本地部分進一步劃分為“物理網路”部分和“主機”部分,如圖:網間網部分物理網路主機
|←網間網部分→|←————本地部分—————→|
|←物理網路→|←—主機部分——→|
其中“物理網路”用於標識同一IP網路地址下的不同物理網路即是“子網”。
(2)子網掩碼IP協議標準規定:每一個使用子網的網點都選擇一個32位的位模式,若位模式中的某位置1,則對應IP地址中的某位為網路地址(包括網間網部分和物理網路號)中的一位;若位模式中的某位置0,則對應IP地址中的某位為主機地址中的一位。例如位模式:
11111111111111111111111100000000中,前三個位元組全1,代表對應IP地址中最高的三個位元組為網路地址;后一個位元組全0,代表對應IP地址中最後的一個位元組為主機地址。這種位模式叫做子網模(subnet mask)或“子網掩碼”。
為了使用的方便,常常使用“點分整數表示法”來表示一個IP地址和子網掩碼,例如c類地址子網掩碼(11111111111111111111111100000000)為:255.255.255.0IP協議關於子網掩碼的定義提供一種有趣的靈活性,允許子網掩碼中的“0”和“1”位不連續。但是,這樣的子網掩碼給分配主機地址和理解尋徑表都帶來一定困難,並且,極少的路由器支持在子網中使用低序或無序的位,因此在實際應用中通常各網點採用連續方式的子網掩碼。像255.255.255.64和255.255.255.160等一類的子網掩碼不推薦使用。
(3)子網掩碼與IP地址結合使用,可以區分出一個網路地址的網路號和主機號。
例如:有一個C類地址為:192.9.200.13其預設的子網掩碼為:255.255.255.0則它的網路號和主機號可按如下方法得到:
①將IP地址192.9.200.13轉換為二進位11000000000010011100100000001101
②將子網掩碼255.255.255.0轉換為二進位11111111111111111111111100000000
③將兩個二進位數邏輯與(AND)運算后得出的結果即為網路部分
11000000000010011100100000001101AND11111111111111111111111100000000
11000000000010011100100000000000結果為192.9.200.0,即網路號為192.9.200.0。
④將子網掩碼取反再與IP地址邏輯與(AND)后得到的結果即為主機部分11000000000010011100100000001101AND00000000000000000000000011111111結果為00000000000000000000000000001101轉化為十進位得到0.0.0.13,即主機號為13。
子網掩碼一共分為兩類。一類是預設(自動生成)子網掩碼,一類是自定義子網掩碼。預設子網掩碼即未劃分子網,對應的網路號的位都置1,主機號都置0。
A類網路預設子網掩碼:255.0.0.0
B類網路預設子網掩碼:255.255.0.0
C類網路預設子網掩碼:255.255.255.0
自定義子網掩碼是將一個網路劃分為幾個子網,需要每一段使用不同的網路號或子網號,實際上我們可以認為是將主機號分為兩個部分:子網號、子網主機號。形式如下:
未做子網劃分的ip地址:網路號+主機號
做子網劃分后的ip地址:網路號+子網號+子網主機號
也就是說ip地址在劃分子網后,以前的主機號位置的一部分給了子網號,餘下的是子網主機號。子網掩碼是32位二進位數,它的子網主機標識用部分為全“0”。利用子網掩碼可以判斷兩台主機是否在同一子網中。若兩台主機的IP地址分別與它們的子網掩碼相“與”后的結果相同,則說明這兩台主機在同一子網中。
可變長子網掩碼(VLSM)的作用:節約IP地址的空間;減少路由表大小。使用VLSM時,所採用的路由協議必須能夠支持它,這些路由協議包括RIPv2,OSPF,EIGRP和BGP。關於更多的VLSM知識,可以去百度搜索。
1.會產生多少個子網
2的x次方-2(x代表掩碼位,即2進位為1的部分,現在的網路中,已經不需要-2,已經可以全部使用,不過需要加上相應的配置命令,例如CISCO路由器需要加上ipsubnetzero命令就可以全部使用了。)
2.能有多少主機
2的y次方-2(y代表主機位,即2進位為0的部分)
3.有效子網是
有效子網號=256-10進位的子網掩碼(結果叫做blocksize或basenumber)
4.子網的廣播地址是
廣播地址=下個子網號-1
5.有效主機分別是
忽略子網內全為0和全為1的地址剩下的就是有效主機地址。最後有效1個主機地址=下個子網號-2(即廣播地址-1)。